ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:474.37KB ,
资源ID:12115497      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12115497.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计多功能万年历.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计多功能万年历.docx

1、单片机课程设计多功能万年历1 需求分析本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。2 概要设计 主程序: Ds18b20子程序: Ds1302子程序: 12864 LCD子程序: 定时器定时设定子程序:在年份显示中设置了闰年

2、判断语句:/判断闰年,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 开发工具和编程语言通过PROTEUS ISIS软件的VSM(虚拟仿真技术),用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。用PROTEUS ISIS设计硬件电路的过程 选择设计图纸的到小根据设计所使用到元器件的多少,选择合适大小的设计图纸,操作是单击菜单栏上的Sy

3、stemSet Sheet Size ,然后弹出如图5-1所示的对话框,从中选择合适大小的图纸,也可以选择User进行图纸的自定义设置。在设计过程中也可以通过此方法调整图纸的大小。图 5-1 选取仿真所需的元器件 选取元器件的方式是,单击如图5-2所示的按钮“P”。会弹出如图5-3所示的窗口。图 5-2图 5-3从此窗口的左上角的“Keywords”中输入电子万年历设计用到的器件,如输入“AT89C51”,在中间会列出带有输入关键字的元器件,选择合适的元器件并双击它,则已经选择好了该元器件。然后再在“Keywords”中输入其他所需的元器件,用同样的方法进行操作。最后选择好所有的元器件如图5-

4、4所示。图 5-4 所用器件其中74LS174表示三个串行接口,AT89C51代表单片机会,DS1302代表时钟芯片,RESPACK-8代表八排电阻。 把元器件放到图纸的合适位置,进行布线单击如图5-4所示的元器件AT89C51,再在右边图纸上单击,就把元器件放入到了图纸上。再用同样的方法把ds1302放入到图纸的合适位置。如果元器件放置错误,这可通过两次右击删除所放置的元器件,如果位置放得不理想,可以先右击该器件,然后按住左键进行移动。在布线之前,如果觉得元器件的引脚的方向不好布线,则可以通过单击这四个按钮进行调整,这四按钮的意思分别是:顺时针旋转90,逆时针旋转90,沿Y轴对称,沿X轴对称

5、。通过这样的调整,可以使整个布局合理一些。接着进行布线,由于PROTEUS ISIS有自动布线的功能,比如要把AT89C51的P2口连到74LS164的OUT8口,只要先在P2引脚上单击一下,再在OUT8引脚上单击,则ISIS自动将两个引脚连上线。图 5-5 at89c51与ds1302的连接ISIS还提供了网络布线,即不使用线连接也可以把两个引脚虚拟的连接了起来。具体操作是:单击要连线的一个引脚,连出适当的距离后双击,另一个引脚也同样操作,在单击如图6-5所示的“LBL”按钮,再在图中P0.1引脚的A处单击,在弹出的窗口中的“String”中填入名称,如“A” ,对OUT7引脚进行同样的操作

6、,在“String”中也填入名称“A”,这样就完成了P3.4引脚与RES引脚的网络连接,这个好处避免两个距离比较远的器件进行真实线的连接,使布线美观。 编辑窗口连接端子要让最后的设计成功仿真时,必须放置并连接端子。选择,从中可以选择电路原理中的两个通用的端子,一个是接地,一个是电源。如图5-6所示。图 5-6连接端子用PROTEUS ISIS进行电子万年历的仿真测试 添加Keil中编写的代码文件单击工具栏中的SourceAdd/Remove Source files.,弹出一个对话框,分别单击“New” ,然后选择在Keil中编写的数字电压表.ASM汇编语言程序,单击“OK” ,完成添加代码文

7、件。 编译源程序,生成.HEX目标代码文件单击SourceBuild All。如果编译结果没有错误,会出现如图5-8所示的结果。图5-8 加载.HEX目标代码文件通过如图5-9所示的对话框,选择刚才编译生成的.HEX文件。设置使单片机的运行频率为6MHz 。图5-9 PROTEUS的调试功能由于使用的是汇编语言编写的程序,如果在测量的时候测量值显示错误,说明程序中存在问题,这个问题只用在仿真测量的时候才能被发现,这时可以使用PROTEUS对程序进行调试。单击按钮,再单击菜单栏中的Debug,可以在最下面选择打开内存观察窗口,寄存器值观察窗口,汇编语言源代码窗口等等。在汇编语言源代码窗口中,也可

8、以在所需要设置断点的语句前双击设置断点,当设置断点的时候,程序运行到所设断点处停止,从而可以在内存、寄存器等的值的变化,从而找出程序出错的地方。5 详细设计源程序名列表。main.c 文件:void delay_ms(t) /* 对于12M时钟,约延时1ms */void Music(z) /语音芯片驱动程序void main() /主函数LCD12864.c 文件 (液晶显示)void delayNOP() /延时4usbit lcd_busy() /检查LCD忙状态void write_cmd(uchar cmd) /写指令数据到LCD void lcd_wdat(uchar dat) /

9、写显示数据到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写一个字节数据void tempchange(void) / 开始获取温度并转换uint get_temp() /获取

10、温度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 d

11、ate_change() /数据格式转换timer.c 文件 (定时器定时)void Timer0Init() /定时器初始化void Time0Isr(void) interrupt 1 /定时器0中断函数6 调试分析电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题

12、。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.7 测试结果8 参考文献1 朱善君,孙新亚,吉吟东编著.单片机接口技术与应用.北京:清华大学出版社,20052 王福瑞等编著.单片微机测控系统设计大全.北京:北京航空航天大学出版社,20043 籍顺心等编著.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,1999 心得体会 经过近两周的努力,终于完成了这次课程设计,从中我学会了很多知识,以及动手能力,从中深刻意识到了单片机的强大与实用之处,程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,理清了思路,终于能够完成它。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次设计中学到了很多很多东西,这是最重要的

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2