




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程设计多功能万年历1需求分析本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。2概要设计主程序:Lcd显示按键扫描每三秒读取温度一次启用ds1302。初始化lcd以及定时器Lcd显示按键扫描每三秒读取温度一次启用ds1302。初始化lcd以及定时器Ds18b20子程序:提取百、十、个、小数点后一位读到的数转换为整型向ds1820写数据,跳过rom,读数据复位初始化提取百、十、个、小数点后一位读到的数转换为整型向ds1820写数据,跳过rom,读数据复位初始化单片机课程设计多功能万年历全文共12页,当前为第1页。单片机课程设计多功能万年历全文共12页,当前为第1页。 Ds1302子程序:Dnum=?Dnum=?送到12684显示1:小时减一2:分减一3:秒减一4:年减一5:月减一6:日减一7:星期减一计算要显示的数据1:小时加一2:分加一3:秒加一4:年加一5:月加一6:日加一7:星期加一Flag=1?初始化Dnum=?Dnum=?送到12684显示1:小时减一2:分减一3:秒减一4:年减一5:月减一6:日减一7:星期减一计算要显示的数据1:小时加一2:分加一3:秒加一4:年加一5:月加一6:日加一7:星期加一Flag=1?初始化 设定lcd光标显示、关闭,判断是否忙的函数完成显示12864LCD子程序:设定lcd光标显示、关闭,判断是否忙的函数完成显示初始化lcd设定,调用来自其他子程序的数值初始化lcd设定,调用来自其他子程序的数值第四行显示状态信息第三行显示温度第二行显示时间及星期第一行显示日期及平第四行显示状态信息第三行显示温度第二行显示时间及星期第一行显示日期及平闰年单片机课程设计多功能万年历全文共12页,当前为第2页。 单片机课程设计多功能万年历全文共12页,当前为第2页。定时器定时设定子程序:设定每3s调整一次的时间循环,以共调用设定每0.5s调整一次的时间循环,以共调用设定工作在定时器0工作方式1TMOD=0x01;开总中断设定每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)3运行环境Protues软件仿真。4开发工具和编程语言通过PROTEUSISIS软件的VSM(虚拟仿真技术),用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。用PROTEUSISIS设计硬件电路的过程①选择设计图纸的到小单片机课程设计多功能万年历全文共12页,当前为第3页。根据设计所使用到元器件的多少,选择合适大小的设计图纸,操作是单击菜单栏上的System→SetSheetSize,然后弹出如图5-1所示的对话框,从中选择合适大小的图纸,也可以选择User进行图纸的自定义设置。在设计过程中也可以通过此方法调整图纸的大小。单片机课程设计多功能万年历全文共12页,当前为第3页。图5-1②选取仿真所需的元器件选取元器件的方式是,单击如图5-2所示的按钮“P”。会弹出如图5-3所示的窗口。图5-2单片机课程设计多功能万年历全文共12页,当前为第4页。单片机课程设计多功能万年历全文共12页,当前为第4页。图5-3从此窗口的左上角的“Keywords”中输入电子万年历设计用到的器件,如输入“AT89C51”,在中间会列出带有输入关键字的元器件,选择合适的元器件并双击它,则已经选择好了该元器件。然后再在“Keywords”中输入其他所需的元器件,用同样的方法进行操作。最后选择好所有的元器件如图5-4所示。图5-4所用器件单片机课程设计多功能万年历全文共12页,当前为第5页。其中74LS174表示三个串行接口,AT89C51代表单片机会,DS1302代表时钟芯片,RESPACK-8代表八排电阻。单片机课程设计多功能万年历全文共12页,当前为第5页。③把元器件放到图纸的合适位置,进行布线单击如图5-4所示的元器件AT89C51,再在右边图纸上单击,就把元器件放入到了图纸上。再用同样的方法把ds1302放入到图纸的合适位置。如果元器件放置错误,这可通过两次右击删除所放置的元器件,如果位置放得不理想,可以先右击该器件,然后按住左键进行移动。在布线之前,如果觉得元器件的引脚的方向不好布线,则可以通过单击这四个按钮进行调整,这四按钮的意思分别是:顺时针旋转90°,逆时针旋转90°,沿Y轴对称,沿X轴对称。通过这样的调整,可以使整个布局合理一些。接着进行布线,由于PROTEUSISIS有自动布线的功能,比如要把AT89C51的P2口连到74LS164的OUT8口,只要先在P2引脚上单击一下,再在OUT8引脚上单击,则ISIS自动将两个引脚连上线。图5-5at89c51与ds1302的连接单片机课程设计多功能万年历全文共12页,当前为第6页。ISIS还提供了网络布线,即不使用线连接也可以把两个引脚虚拟的连接了起来。具体操作是:单击要连线的一个引脚,连出适当的距离后双击,另一个引脚也同样操作,在单击如图6-5所示的“LBL”按钮,再在图中P0.1引脚的A处单击,在弹出的窗口中的“String”中填入名称,如“A”,对OUT7引脚进行同样的操作,在“String”中也填入名称“A”,这样就完成了P3.4引脚与RES引脚的网络连接,这个好处避免两个距离比较远的器件进行真实线的连接,使布线美观。单片机课程设计多功能万年历全文共12页,当前为第6页。④编辑窗口连接端子要让最后的设计成功仿真时,必须放置并连接端子。选择,从中可以选择电路原理中的两个通用的端子,一个是接地,一个是电源。如图5-6所示。图5-6连接端子用PROTEUSISIS进行电子万年历的仿真测试①添加Keil中编写的代码文件单击工具栏中的Source→Add/RemoveSourcefiles...,弹出一个对话框,分别单击“New”,然后选择在Keil中编写的数字电压表.ASM汇编语言程序,单击“OK”,完成添加代码文件。②编译源程序,生成.HEX目标代码文件单片机课程设计多功能万年历全文共12页,当前为第7页。单击Source→BuildAll。如果编译结果没有错误,会出现如图5-8所示的结果。单片机课程设计多功能万年历全文共12页,当前为第7页。图5-8③加载.HEX目标代码文件通过如图5-9所示的对话框,选择刚才编译生成的.HEX文件。设置使单片机的运行频率为6MHz。图5-9单片机课程设计多功能万年历全文共12页,当前为第8页。单片机课程设计多功能万年历全文共12页,当前为第8页。⑤PROTEUS的调试功能由于使用的是汇编语言编写的程序,如果在测量的时候测量值显示错误,说明程序中存在问题,这个问题只用在仿真测量的时候才能被发现,这时可以使用PROTEUS对程序进行调试。单击按钮,再单击菜单栏中的Debug,可以在最下面选择打开内存观察窗口,寄存器值观察窗口,汇编语言源代码窗口等等。在汇编语言源代码窗口中,也可以在所需要设置断点的语句前双击设置断点,当设置断点的时候,程序运行到所设断点处停止,从而可以在内存、寄存器等的值的变化,从而找出程序出错的地方。5详细设计源程序名列表。main.c文件:voiddelay_ms(t)/*对于12M时钟,约延时1ms*/voidMusic(z)//语音芯片驱动程序voidmain()//主函数LCD12864.c文件(液晶显示)voiddelayNOP()//延时4usbitlcd_busy() //检查LCD忙状态voidwrite_cmd(ucharcmd)//写指令数据到LCDvoidlcd_wdat(uchardat)//写显示数据到LCDvoidlcd_init() //LCD初始化设定voidlcd_pos(ucharX,ucharY) //设定显示位置voiddisplay() //主显示程序DS18B20.c文件(温度检测)voiddsreset(void)//DS18B20复位,初始化bittempreadbit(void)//读一位数据uchartempread(void)//读一字节(8位)voidtempwritebyte(uchardat) //向DS18B20写一个字节数据单片机课程设计多功能万年历全文共12页,当前为第9页。voidtempchange(void) //开始获取温度并转换单片机课程设计多功能万年历全文共12页,当前为第9页。uintget_temp() //获取温度voiddisplay2(uinti) //数据格式转换voidtemper() //显示温度DS1302.c文件(时钟芯片)voiddelay(intms) //延时xmsvoidWriteByte(ucharCommand,ucharWriteData)//写位数据ucharReadByte(ucharCommand)//读取DS1302一字节数据,address为命令字节voidEdit(ucharflag)//时间日期编辑程序voidKeyFun()//按钮功能函数voidReadDS1302()//读取DS1302的秒,分,时,日,月,星期,年voiddate_change() //数据格式转换timer.c文件(定时器定时)voidTimer0Init() //定时器初始化voidTime0Isr(void)interrupt1 //定时器0中断函数6调试分析电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1.烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2.修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.单片机课程设计多功能万年历全文共12页,当前为第10页。7测试结果单片机课程设计多功能万年历全文共12页,当前为第10页。单片机课程设计多功能万年历全文共12页,当前为第11页。
单片机课程设计多功能万年历全文共12页,当前为第11页。8参考文献[1]朱善君,孙新亚,吉吟东编著.单片机接口技术与应用.北京:清华大学出版社,2005[2]王福瑞等编著.单片微机测控系统设计大全.北京:北京航空航天大学出版社,2004[3]籍顺心等编著.单片机的C语言应用程序设计.北
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国TWS耳机市场供需状况与竞争格局展望研究研究报告
- 2025-2030中国RFID贴标机行业市场深度调研及前景趋势与投资研究报告
- 2025-2030中国HDPE球阀行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国EMBA教育培训行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国B2C电子商务行业发展分析及投资风险与战略研究报告
- 2025-2030中国6亿核磁共振光谱仪行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国3D玻璃市场需求潜力分析及销售规模预测研究报告
- 2025-2030中国2-氧代丙酸行业产销格局及投资规划趋势预测研究报告
- 2025-2030中国-版婴儿洗衣液行业消费规模预测与运营动态规划研究报告
- 2025-2030不锈钢厨具行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025年双向转诊性合作协议书
- 股骨颈置换术后护理
- 2025年云南中烟工业有限责任公司招聘(430人)笔试参考题库附带答案详解
- 2022电力工程电缆隧道通风及照明安装施工作业指导书
- 2025年安徽林业职业技术学院单招职业技能测试题库及答案(考点梳理)
- 18 文言文二则 铁杵成针 教学设计-2023-2024学年四年级语文下册统编版
- 2024年中小学思政课“名师工作室”和班主任“名师工作室”建设实施方案
- 2024-2025中考英语八大时态混合真题
- 2024年北京电子科技职业学院高职单招语文历年参考题库含答案解析
- DB32T-桥梁轻量化监测系统建设规范
- DG-TJ 08-2048-2024 民用建筑电气防火设计标准
评论
0/150
提交评论