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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11423805.html】到电脑端继续下载(重复下载【60天内】不扣币)。

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(电子时钟(LCD显示).doc)为本站上传会员【天****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

电子时钟(LCD显示).doc

1、 电气工程及自动化专业 单片机原理及应用课程设计报告 姓名:XXXXXX 学号:XXXXXXX 专业班级:XXXXXX 题目:电子时钟(LCD显示) 电气与电子工程学院 二〇一四年十二月三十日 目 录 一、设计目的 ……………………………2 二、设计任务和要求 ……………………………2

2、三、设计原理分析 ……………………………2 四、硬件资源及其分配 ……………………………3 五、硬件图 ……………………………4 六、程序框图 ……………………………5 七、程序 ……………………………7 八、调试运行 ……………………………13 九、仿真截图 ……………………………13 十、设计心得体会 ……………………………14 一、设计目的 1、设计要求以AT89C51单片机为核心的

3、时钟,在LCD显示器上显示当前的时间。 2、 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。 3、用4个功能键操作来设置当前时间。 4、熟悉掌握proteus编成软件以及keil软件的使用 二、设计任务与要求 本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。该编程的核心在于定时器中断及循环往复判断是否有按键操作,并对每个按键的操作在LCD显示器上作出相应的反应。由于LCD显示器每八位对应一个字符,故把秒、分、时的个位和十位分开表示。 该课题中有四个控制开关KM1、KM2、KM3、KM4分别控制时、分、秒、确定的调整,时间按递

4、增的方式调整,每点一次按钮则相应的时间个位加以,且时间调整不干扰其他为调整时间的显示。 三、设计原理分析 1、按照系统的设计功能要求,本时钟系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制时钟的调整及显示。 微型控制器 时钟电路 数据显示 按键调时 图一 系统总原理图 2、软件主要完成功能 (1)显示时间程序 用软件调节时间,通过程序的调节,最后用LED现实时钟 (2)调节时间程序 按键调节时间,能实现时、分的调节 3、软件设计主要流程 时间控制程序 时间控制程序,用中断准确的控

5、制时间,采用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 ;  

6、 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 清计时单元 开中断

7、 启动T0 调用显示子程序 按键程序 调用按键显示子程序 时钟主程序流程 LCD显示 保护现场 设置计数初值 1S到? (40H)=10? 0 (40H) (40H)+1 (40H) (41H)+1 (41H) (46H)=4? 0 (46H) (0) (47H) 恢复现场 返回 N N 中断服务流程图 (41H)=5? 0 (41H) (43H)=10? 0 (43H) (43H)+1 (43H) (44H)+1 (44H) (44H)=5?

8、 0 (44H) (46H)+1 (46H) (47H)=2? (46H)+1 (46H) N N (46H)=10? 0 (46H) (47)+1 (47) N N 七、程序 #include #include #define uchar unsigned char #define uint unsigned int #define DelayNOP() {_nop_();_nop_();_nop_();_nop_();} sbit K1 =P0^0; sbit K2 =

9、P0^1; sbit K3 =P0^2; sbit K4 =P0^3; sbit SPK=P3^0; sbit RS =P2^0; sbit RW =P2^1; sbit E =P2^2; uchar code Str1[] = " Current Time "; //一下两个字符串的串长均为16 uchar code Str2[] = "Set New Time... "; uchar HMS_String[]=" 00:00:00 ";//带显示的时间串 bit Settime=0; //是否修改时间 bit Ch

10、ange_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; } //写LC

11、D命令 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(

12、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); } // 显示函数,在

13、LCD指定的行上显示字符串 void Display_String(uchar*str,uchar LineNo) { uchar k; LCD_Set_Pos(LineNo); for(k=0;k<16;k++) LCD_Write_Data(str[k]); } //蜂鸣函数 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) {

14、if(Settime) HMS_String[3] = '>';//显示修改标志 else HMS_String[3] = ' '; //不显示修改标志 HMS_String[4] = h/10 + '0'; //时 HMS_String[5] = h%10 + '0'; HMS_String[7] = m/10 + '0'; //分 HMS_String[8] = m%10 + '0'; HMS_String[10]= s/10 + '0'; //秒 HMS_String[11]= s%10 + '0'; Display_String(HMS_S

15、tring,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_o

16、r_M; } else if(K2 == 0) //增加 { Beep(); while(K2 == 0); if(Change_H_or_M==1) {if(++Hour == 24) Hour = 0;} else {if(++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(--Minut

17、e == 0xff) Minute = 59;} } else if(K4 == 0) //确定 { Beep(); while(K4 == 0); Display_String(Str1,0x00); //第一行还原显示str1 Settime = 0; TR0 = 1; } Display_HMS(Hour,Minute,Second); } //外层While在这里结束 } //定时器0中断 void Time0() interrupt 1 { TH0 = (65536

18、50000)/256; TL0 = (65536 -50000)%256; //重新装入50MS定时 if(++MilliSecond == 20) //50*20=1s { MilliSecond = 0; if(++Second == 60) { Second = 0; if(++Minute == 60) { Minute = 0; if(++Hour == 24) { Hour = 0;Minute = 0;Second = 0; } } } } } //主函数 void main() {

19、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(); //显

20、示过程中允许修改时间 } } 八、调试运行 1、按硬件原理图接线用4个功能键操作来设置当前时间。功能键K1~K4功能如下。 K1—进入设置现在的时间。 K2—设置小时。 K3—设置分钟。 K4—确认完成设置。 程序执行后工作指示灯LED闪动,表示程序开始执行,LED显示“00:00:00”,然后开始计时 九、仿真截图 结论:采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。根据仿真结果可知该编程及硬件电路符合要求: 十、设计心得体会 课程设计是

21、培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。   这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 14

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服