单片机课程设计报告-电子万年历(共17页).doc

上传人:飞****2 文档编号:14483440 上传时间:2022-05-04 格式:DOC 页数:17 大小:1.37MB
返回 下载 相关 举报
单片机课程设计报告-电子万年历(共17页).doc_第1页
第1页 / 共17页
单片机课程设计报告-电子万年历(共17页).doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《单片机课程设计报告-电子万年历(共17页).doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告-电子万年历(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 题目: 电子万年历设计报告课程名称 单片机课程设计 学 院 物理与光电工程学院 专业班级 09级电子科学与技术5班 学 号 姓 名 王周英 联系方式 任课教师 陈国鼎 2011年 12月12日电子万年历设计报告1) 设计题目题目:电子万年历设计 2) 设计任务和要求1、显示年月日时分秒及星期信息。 2、具有可调整日期和时间功能 3、增加闰年计算功能4、实现语音报时3) 原理电路和程序设计:(1) 方案比较; 一:控制MCU方案一:STM8,STM公司推出的新款MCU,性能高,外设资源丰富,带有12位AD、12位DA、脉宽调制PWM、最高机器周期16MHz等。且其功耗

2、非常小,价格便宜,性价比非常高。缺点是只能用官方开发的S-Link下载器进行下载,其价格比较高,一般学习者手上都没有。方案二:AT89S52,AT公司的51单片机。优点是支持ISP在线下载;缺点是价格比较高。方案三:STC89C52,宏晶公司的51系列单片机,价格便宜,在国内使用者非常多。支持串口下载,使用非常方便,且具有很大的价格优势。缺点是仅支持串口下载,不支持在线下载,使用中会有些不方便。 由于本设计对控制芯片的要求不高,因此选用方案三。 二:时钟模块 方案一:用单片机的定时器产生1S的时基信号,然后用程序来实现时钟的时、分、秒计时,同时用程序来产生年、月、日。该方案优点是减少使用外设芯

3、片;缺点是用单片机模拟时钟,使编程量增大,且用定时器产生时基信号,精度不高。方案二:使用时钟芯片DS12C887。优点是8位数据线并行控制,控制简单;自带有锂电池,外部掉电时,其内部时间信息还能够保持 10年之久。缺点是并行控制,占用太多的IO口,且价格很高,不适合一般的电子制作。方案三:使用时钟芯片DS1302。优点是同步串行通信,仅使用3个IO口,占用最少的单片机资源;其内部功能强大。更重要的是其价格便宜,具有非常高的性价比。缺点是串行通信,控制比较复杂。 综上,本设计选择方案三。 三:语音报时模块方案一:使用语音芯片BLA902。优点是录音量大,最大支持1GB MP3格式的语音数据,支持

4、FAT文件格式,语音音质好,32KHz采样,并内置功放。缺点是价格高,且需要自己进行语音合成,使用不方便。方案二:使用专用OTP时钟语音芯片NY3P035AP8。OTP时钟语音芯片专门为时钟语音电路设计,内置32段语音数据,包括了各种时钟报时语音,且内置功放。更主要的是价格低,单信号线控制,使用方便。综上,本设计选择方案二。(2) 系统框图;(3) 单元电路设计;1、 单片机最小系统控制芯片使用STC89C52,控制部分最小系统如下图。主控制芯片采用STC89C52,最小系统包括晶振电路、复位电路、下载接口。2、 时钟芯片模块时钟芯片使用DS1302,该模块电路原理图如下图。时钟电路采用的是d

5、s1302芯片,DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的或RAM数据。工作电压与单片机的输入电压比较适合。上面是它的一些基本的应用介绍。 下面是它的引脚的描述。下面是DS1302的时钟寄存器。我们要读取的时间数据就是从下面这些数据寄存器中读取出来的。当我们要想调整时间时,可以把时间数据写入到相应的寄存器中就可以了。 DS1302和单片机的连接很简单。只需一根复位线,一根时钟线,一根数据线即可

6、。同时它本身还需要接一个32.768KHz的晶振来提供时钟源。对于晶振的两端可以分别接一个6PF左右的电容以提高晶振的精确度。同时可以在第8脚接上一个3.6V的可充电的电池。当系统正常工作时可以对电池进行涓流充电。当系统掉电时,DS1302由这个电池提供的能量继续工作。 3、 时钟语音芯片本电路采用了九齐科技的NY3P035AP8,一次性烧录OTP语音IC,只需要在VDD与GND之间加104(0.1UF)电容.通过单片机接口控制语音芯片。工作原理图: 当需要使用语音芯片播放一段语音时,只需要向语音芯片发送相应语音的段选脉冲信号,即可排列出所需的语音。本设计中,芯片通过单片机发出的脉冲进行控制,

7、任意组合上面的数字,从而到达语音播报时间、星期、年月日等。例如:今天是2012年12月21日 现在时间是0点0分0秒。4、液晶显示模块 显示模块使用液晶12864,电路原理图如下图。显示模块采用了12864.低电源电压(VDD:+3.0-+5.5V)。显示分辨率:12864点 。内置汉字字库,提供8192个1616点阵汉字(简繁体可选)。内置128个168点阵字符。在12864的2、3脚上接上10k的可调电阻,通过调节可调电阻的阻值,调整12864的对比度。通过单片机对12864进行写指令写数据等操作,完成对12864的显示操作。5、温度传感器通过1820进行读数据,将读出来的数据进行进制转换

8、,转换后送到12864显示。工作原理介绍:DS18B20是单总线的数字温度传感器。其与单片机的接口只需要一根数据线即可。当然连线简单意味着软件处理上可能要麻烦一点。下面来看看它的优点看看它的靓照。外形和我们常用的三极管没有什么两样哦。DS18B20的内部存储器分为以下几部分 ROM:存放该器件的编码。前8位为单线系列的编码(DS18B20的编码是19H)后面48位为芯片的唯一序列号。在出场的时候就已经设置好,用户无法更改。最后8位是以上56位的CRC码。 RAM:DS18B20的内部暂存器共9个字节。其中第一个和第二个字节存放转换后的温度值。第二个和第三个字节分别存放高温和低温告警值。(可以用

9、RAM指令将其拷贝到EEPROM中)第四个字节为配置寄存器。第57个字节保留。第9个字节为前8个字节的CRC码。DS18B20的温度存放如上图所示。其中S位符号位。当温度值为负值时,S = 1 ,反之则S = 0 。我们把得到的温度数据乘上对应的分辨率即可以得到转换后的温度值。 DS18B20的通讯协议: 在对DS18B20进行读写编程时,必须严格保证读写的时序。否则将无法读取测温结果。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过3个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令。这样才能对DS18B20进行预定的

10、操作。 复位要求主机将数据线下拉500us,然后释放,DS18B20收到信号后等待16160us然后发出60240us的存在低脉冲,主机收到此信号表示复位成功。上图即DS18B20的复位时序图。 下面是读操作的时序图这是写操作的时序图(4) 电路工作原理;本电路包括基本的时钟电路模块、液晶显示模块、语音报时模块、温度传感器模块。各功能模块通过控制芯片连接起来,完成本设计要求。电路实现的基本功能是电子万年历。通过液晶LCD12864,可显示年月日、时分秒、星期等基本信息。增强功能是具备时钟语音报时功能。即每到整点,系统会自动语音报时,报时信息包括日期及时间。同时具备显示环境温度的功能。 具体工作

11、流程如以下程序流程图:主程序: Lcd显示按键扫描每三秒读取温度一次启用ds1302。初始化lcd以及定时器Ds18b20子程序:提取百、十、个、小数点后一位 读到的数转换为整型向ds1820写数据,跳过rom,读数据复位初始化Ds1302子程序:Dnum=?Dnum=?送到12684显示1:小时减一 2:分减一 3:秒减一4:年减一 5:月减一 6:日减一 7:星期减一计算要显示的数据1:小时加一 2:分加一 3:秒加一4:年加一 5:月加一 6:日加一 7:星期加一 Flag=1?初始化设定lcd光标显示、关闭,判断是否忙的函数完成显示12864 LCD子程序:初始化lcd设定,调用来自其

12、他子程序的数值第四行显示状态信息第三行显示温度第二行显示时间及星期第一行显示日期及平闰年定时器定时设定子程序:设定每3s调整一次的时间循环,以共调用设定每0.5s调整一次的时间循环,以共调用设定工作在定时器0工作方式1TMOD = 0x01 ; 开总中断在年份显示中设置了闰年判断语句:/判断闰年,leap=1表示闰年leap=(nian%4=0 & nian%100!=0)|(nian%400=0)?1:0;/整点自动报时if (fen1=0&fen2=0&miao1=0&miao2=0)&kaiguan=1)(5) 元件清单。序号型号个数序号型号个数OTP语音芯片NY3P035AP81温度传

13、感器Ds18201晶振12Mhz1电阻10k5时钟晶振32.768k1开关5陶瓷电容30pf10422时钟芯片Ds13021排阻10k1液晶显示屏128641电源插座5.4mm1排针若干自锁开关1单片机芯片Stc89c5214) 电路和程序调试过程与结果:本设计完成了设计任务的所有要求。单片机采用STC89C52,编译环境为keil,程序使用C语音进行编写。电路设计使用proteus仿真软件进行仿真调试,在Altium Designer上设计原理图并绘制PCB图。设计硬件制作比较顺利,很快就把PCB板做好。接着,主要是程序的调试。程序调试的难点在于设计的功能模块过多,程序结构比较复杂,使得调试

14、起来比较费时间调试结果:1、完成设计任务的要求1:显示年月日、时分秒、及星期信息。 2、完成设计任务的要求2:具有可调整日期和时间功能。 3、完成设计任务的要求3:闰年计算功能,液晶显示平、闰年。4、完成设计任务的要求4:实现语音报时。5、增加功能:实时显示环境气温。5) 总结这次课程设计,我们组四个人分工合作。从一开始的选题,然后确定方案、买零件,到最后的设计调试,我们组员都在一起研究讨论。经过这次设计,我们四个人都有了很大的收获,对单片机编程控制有了进一步的了解。该设计涉及到了单片机的时序控制,数据接口包括并行数据接口以及串行通信接口,同时用到了控制按键、环境信息检测、数据显示处理等。这次

15、设计,基本上涉及到了所有的单片机控制功能模块。因此,通过这次设计,能完全掌握单片机的所有基本控制,这也是我们组选择该题目的一个重要原因。由于自己经常会做很多电子制作,对硬件电路以及单片机编程都很熟悉,因此在设计本次课程设计时,感觉比较轻松的完成了设计任务。附录一:源程序名列表。main.c 文件:void delay_ms(t) /* 对于12M时钟,约延时1ms */void Music(z) /语音芯片驱动程序void main() /主函数LCD12864.c 文件 (液晶显示)void delayNOP() /延时4usbit lcd_busy()/检查LCD忙状态void write

16、_cmd(uchar cmd) /写指令数据到LCD void lcd_wdat(uchar dat) /写显示数据到LCDvoid lcd_init() /LCD初始化设定void lcd_pos(uchar X,uchar Y) /设定显示位置 void display() /主显示程序DS18B20.c 文件 (温度检测)void dsreset(void)/DS18B20复位,初始化bit tempreadbit(void) /读一位数据uchar tempread(void) /读一字节(8位)void tempwritebyte(uchar dat)/向DS18B20写一个字节数据

17、void tempchange(void) / 开始获取温度并转换uint get_temp() /获取温度void display2(uint i)/数据格式转换void temper()/显示温度DS1302.c 文件 (时钟芯片)void delay(int ms) /延时xmsvoid WriteByte(uchar Command,uchar WriteData) /写位数据uchar ReadByte(uchar Command) /读取DS1302一字节数据,address为命令字节void Edit(uchar flag) /时间日期编辑程序void KeyFun()/按钮功能函数 void ReadDS1302()/读取DS1302的秒,分,时,日,月,星期,年void date_change() /数据格式转换timer.c 文件 (定时器定时)void Timer0Init()/定时器初始化void Time0Isr(void) interrupt 1/定时器0中断函数附录二:实物照片手动报时按钮语音开关平/闰年显示年月日时分秒功能按键语音报时喇叭(可自动整点报时或手动报时)星期语音开/关气温专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁