欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    电子时钟(LCD显示).doc

    • 资源ID:28430863       资源大小:55.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    电子时钟(LCD显示).doc

    精品文档,仅供学习与交流,如有侵权请联系网站删除 电气工程及自动化专业单片机原理及应用课程设计报告 姓名:XXXXXX 学号:XXXXXXX 专业班级:XXXXXX 题目:电子时钟(LCD显示) 电气与电子工程学院二一四年十二月三十日 目 录一、设计目的 2二、设计任务和要求 2三、设计原理分析 2四、硬件资源及其分配 3五、硬件图 4六、程序框图 5七、程序 7八、调试运行 13九、仿真截图 13十、设计心得体会 14一、设计目的 1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。2、 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。3、用4个功能键操作来设置当前时间。4、熟悉掌握proteus编成软件以及keil软件的使用二、设计任务与要求本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。该编程的核心在于定时器中断及循环往复判断是否有按键操作,并对每个按键的操作在LCD显示器上作出相应的反应。由于LCD显示器每八位对应一个字符,故把秒、分、时的个位和十位分开表示。该课题中有四个控制开关KM1、KM2、KM3、KM4分别控制时、分、秒、确定的调整,时间按递增的方式调整,每点一次按钮则相应的时间个位加以,且时间调整不干扰其他为调整时间的显示。三、设计原理分析1、按照系统的设计功能要求,本时钟系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制时钟的调整及显示。微型控制器时钟电路数据显示按键调时 图一 系统总原理图2、软件主要完成功能(1)显示时间程序用软件调节时间,通过程序的调节,最后用LED现实时钟(2)调节时间程序按键调节时间,能实现时、分的调节3、软件设计主要流程时间控制程序时间控制程序,用中断准确的控制时间,采用60进制,60秒为一分钟,60分钟为一个小时,全天设置为24小时。四、硬件资源及原理图 AT89C51芯片AT89C51 是美国ATMEL 公司生产的8 位Flash ROM 单片机。其最突出的优点是片内ROM 为Flash ROM,可擦写1000 次以上,应用并不复杂的通用ROM 写入器就能方便的擦写,读取也很方便,价格低廉,具有片程序ROM 二级保密系统。因此可灵活应用于各种控制领域。AT89C51 包含以下一些功能部件:1. 一个8 位CPU ;2. 一个片内振荡器和时钟电路;3. 4KB Flash ROM ;4. 128B 内RAM;5. 可寻址64KB 的外ROM 和外RAM 控制电路;6. 两个16 位定时/计数器;7. 21 个特殊功能寄存器;8. 4 个8 位并行I/O 口;9. 一个可编程全双工串行口;10. 5 个中断源,可设置成2 个优先级。AT89C51 单片机一般采用双列直插DIP 封装,共40 个引脚,图2-1 为其引脚排列图。40 个引脚大致可分为4 类:电源、时钟、控制各I/O 引脚五、硬件图六、程序框图设置T0为方式1设中断次数为20清计时单元开中断启动T0调用显示子程序按键程序调用按键显示子程序时钟主程序流程LCD显示保护现场设置计数初值1S到?(40H)=10?0 (40H)(40H)+1 (40H)(41H)+1 (41H)(46H)=4?0 (46H)(0) (47H)恢复现场返回NN中断服务流程图(41H)=5?0 (41H)(43H)=10?0 (43H)(43H)+1 (43H)(44H)+1 (44H)(44H)=5?0 (44H)(46H)+1 (46H)(47H)=2?(46H)+1 (46H)NN(46H)=10?0 (46H)(47)+1 (47)NN七、程序#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define DelayNOP() _nop_();_nop_();_nop_();_nop_();sbit K1 =P00;sbit K2 =P01;sbit K3 =P02;sbit K4 =P03;sbit SPK=P30;sbit RS =P20;sbit RW =P21;sbit E =P22;uchar code Str1 = " Current Time " /一下两个字符串的串长均为16uchar code Str2 = "Set New Time. "uchar HMS_String=" 00:00:00 "/带显示的时间串bit Settime=0; /是否修改时间bit Change_H_or_M =1;/1表示修改时.0表示修改分uchar MilliSecond,Hour =0,Minute=0, Second =0;/延时函数void DelayMS(uint x)uchar i;while(x-) for(i=0;i<120;i+);/LCD忙状态检测bit LCD_Busy_Check()bit result;RS = 0;RW = 1;E = 1;DelayNOP();result = (bit)(P0 & 0x80);E = 0;return result; /写LCD命令void LCD_Write_Command(uchar cmd)while(LCD_Busy_Check();/判断LCD是否忙碌RS = 0;RW = 0;E = 0;_nop_();_nop_();P0 = cmd; DelayNOP();E = 1;DelayNOP();E = 0;/设置LCD显示位置void LCD_Set_Pos(uchar pos)LCD_Write_Command(pos | 0x80);/写LCD数据void LCD_Write_Data(uchar dat)while(LCD_Busy_Check();/判断LCD是否忙碌RS = 1;RW = 0;E = 0;P0 = dat; DelayNOP();E = 1;DelayNOP();E = 0;/LCD初始化void LCD_Initialize()LCD_Write_Command(0x38);DelayMS(1);LCD_Write_Command(0x0c);DelayMS(1);LCD_Write_Command(0x06);DelayMS(1);LCD_Write_Command(0x01);DelayMS(1);/ 显示函数,在LCD指定的行上显示字符串void Display_String(uchar*str,uchar LineNo)uchar k;LCD_Set_Pos(LineNo);for(k=0;k<16;k+) LCD_Write_Data(strk);/蜂鸣函数void Beep()uchar i, j = 70;for(i=0;i<200;i+)while(-j);SPK= SPK;DelayMS(300); SPK=0;/时分秒显示void Display_HMS(uchar h,m,s)if(Settime) HMS_String3 = '>'/显示修改标志else HMS_String3 = ' ' /不显示修改标志HMS_String4 = h/10 + '0' /时HMS_String5 = h%10 + '0'HMS_String7 = m/10 + '0' /分HMS_String8 = m%10 + '0'HMS_String10= s/10 + '0' /秒HMS_String11= s%10 + '0'Display_String(HMS_String,0x40);/设置时间void Change_Time()Settime=0;if(K1=0|K2=0|K3=0) /按下k1 k2 k3中的任何一个键即进入修改状态TR0 = 0;Display_String(Str2,0x00); /第一行提示修改时间Settime = 1;while (Settime)if(K1 = 0) /确定调整小时还是分钟Beep();while(K1 = 0)Change_H_or_M = !Change_H_or_M;else if(K2 = 0) /增加Beep();while(K2 = 0);if(Change_H_or_M=1)if(+Hour = 24) Hour = 0;elseif(+Minute = 60) Minute = 0;else if(K3 = 0) /减少Beep();while(K3 = 0);if(Change_H_or_M = 1)if(-Hour = 0xff) Hour = 23;else if(-Minute = 0xff) Minute = 59;else if(K4 = 0) /确定Beep();while(K4 = 0);Display_String(Str1,0x00); /第一行还原显示str1Settime = 0;TR0 = 1;Display_HMS(Hour,Minute,Second); /外层While在这里结束/定时器0中断void Time0() interrupt 1TH0 = (65536 -50000)/256;TL0 = (65536 -50000)%256; /重新装入50MS定时if(+MilliSecond = 20) /50*20=1sMilliSecond = 0;if(+Second = 60)Second = 0;if(+Minute = 60)Minute = 0;if(+Hour = 24)Hour = 0;Minute = 0;Second = 0;/主函数void main()TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;IE = 0x82;SPK = 0;LCD_Initialize();Display_String(Str1,0x00); /第一行显示TR0 = 1;P1 = 0xFF;while(1)Display_HMS(Hour,Minute,Second); /第二行显示时分秒DelayMS(500);Change_Time(); /显示过程中允许修改时间八、调试运行1、按硬件原理图接线用4个功能键操作来设置当前时间。功能键K1K4功能如下。K1进入设置现在的时间。K2设置小时。K3设置分钟。K4确认完成设置。程序执行后工作指示灯LED闪动,表示程序开始执行,LED显示“00:00:00”,然后开始计时九、仿真截图结论:采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。根据仿真结果可知该编程及硬件电路符合要求:十、设计心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。   这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!【精品文档】第 10 页

    注意事项

    本文(电子时钟(LCD显示).doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开