基于51单片机的LCD简单电子钟的设计.docx
《基于51单片机的LCD简单电子钟的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的LCD简单电子钟的设计.docx(18页珍藏版)》请在咨信网上搜索。
XX电子科技大学课程设计论文 电子时钟的设计 编号: XXX科技大学 单片机原理及应用 设计实验报告 课 题: 电子钟 专 业: 自动化 学生姓名: XXX 学 号: XXXXX 2016 年 5 月 16 日 目 录 0 前言…………………………………………………………………1 1 总体方案设计………………………………………………………1 2 硬件电路设计………………………………………………………2 3 软件设计……………………………………………………………4 4 调试分析及说明……………………………………………………5 5 结论…………………………………………………………………7 参考文献 ……………………………………………………………7 课设体会 ……………………………………………………………8 附录1 电路原理………………………………………………………9 附录2 程序清单……………………………………………………10 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0 前言 利用51单片机开发电子时钟,实现时间显示、调整功能。具体要求如下: (1) 根据给定题目设计的Proteus仿真原理图,并简单阐述设计原理; (2) 根据给定题目设计有关的51汇编语言(或C语言)源程序,及主要的流程框图; (3) 在Proteus仿真界面下运行程序实现给定的功能; (4) 下载到ZKSYS单片机实验板上验证有关程序实现给定的功能。 1 总体方案设计 该电子时钟由89C51,按键,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。时钟的年月日时分秒的切换是由一个按键控制,而另外两个个按键控制加减调节。 图1 系统结构框图 该电子时钟由STC89C51,按键,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式1,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时 2硬件电路设计 (1) 时钟电路设计 单片机利用外部12MHZ晶振构成振荡电路作为时钟源,时钟电路的原理如下图。 图2 时钟电路图 (2) 独立按键输入电路 按键处理设置为:当有没键按下时,时钟正常运行;当按K1时分别切换到年月日时分秒;按K2为加。按K3为减。电路图如下图 图3 独立按键电路 (3) 单片机系统 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。外形及引脚排列如下图 图4 单片机系统图 (4) LCD液晶显示 LCD1602采用标准的16脚接口,第1脚:VSS为电源地;第2脚:VDD接5V电源正极;第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高;第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作;第6脚:E(或EN)端为使能(enable)端。第7~14脚:D0~D7为8位双向数据端;第15~16脚:空脚或背灯电源。电路如下图 图5 LCD液晶显示图 3软件设计 本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。系统的流程图如下图 开始 液晶初始化 时间初始化 按键是否按下? 调整时间 是 否 读取时间 显示时间 结束 设计思路: 本系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序和LCD液晶驱动程序。定时中断程序是利用单片机内部定时器0实现1秒的定时,然后利用软件延时实现分小时,时间调整程序是利用单片机的内部存贮器,把调整好的时间写到显示时间的存贮单元,然后启动定时器开始计时并显示,延时程序是利用软件实现延时达到去抖的目的。液晶启动程序是为了把单片机的数据送到显示器的同时让显示器的第6脚使能断的电平实现由1到0的跳变,使显示器执行显示的命令。主程序就是利用这些子程序中断程序实现显示、定时等功能。 4调试分析及说明 (1) 时钟正常运行调试仿真图 图6 正常运行仿真图 (2) 时间调整仿真 图10 对时分秒的调整 5 结论 本次电子时钟的设计基本完成:当没有键按下时,时钟正常运行;时钟的年月日时分秒的切换是由一个按键控制,而另外两个个按键控制加减调节 附录1 电路原理 附录2 程序清单 #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[]=" 2015-05-27 WED "; uchar code table1[]=" 12:30:55"; uchar code table2[]=" 1200810222 "; uchar code table3[]="Made by HUANG"; uchar code table4[]="MONTUEWEDTHUFRISATSUN"; uchar count,s1num; char miao,fen,shi,ri,yue; uint nian; sbit lcd_rs = P2^0; sbit lcd_rw = P2^1; sbit lcd_en = P2^2; sbit s1=P1^0; sbit s2=P1^1; sbit s3=P1^2; sbit Output_squ=P3^6; void delay(uint z)//延时子函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com)//写命令函数 { lcd_rs = 0; P0= com; delay(5); lcd_en=1; delay(5); lcd_en=0; } void write_date(uchar date)//写数据函数 { lcd_rs = 1; P0= date; delay(5); lcd_en=1; delay(5); lcd_en=0; } void init()//初始化函数 { int num; shi=12; fen=30; miao=55; ri=27; yue=5; nian=2015; lcd_en=0; lcd_rw=0; write_com(0x38);//显示设置模式 write_com(0x0c);//00001100开显示,不显示光标,光标不闪烁 write_com(0x06);//00000110地址指针加一,整屏不移动 write_com(0x01);//清屏 write_com(0x80); for(num=0;num<16;num++)//显示数字1200810222 { write_date(table2[num]); delay(300); } write_com(0x80+0x40); for(num=0;num<16;num++)//显示made by HUANG { write_date(table3[num]); delay(300); } delay(5000); write_com(0x01); write_com(0x80); for(num=0;num<16;num++)//显示日期 { write_date(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<12;num++)//显示时间 { write_date(table1[num]); delay(5); } TMOD=0x51;//启动定时器中断 TH0=0X3C; //50ms TL0=0XB0; TH1=0X00; TL1=0X00; EA=1; ET0=1; TR0=1;//打开定时器0 TR1=1; //打开定时器0 } void write_sfm(uchar add,uchar date)//写时分秒函数 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void write_nyr(uint add,uint date)//写年月日函数,此处若用uchar范围只有0-255 { //不够,改用uint(0-65535) uint qian,bai,shi,ge; qian=date/1000; bai=date%1000/100; shi=date%100/10; ge=date%10; write_com(0x80+add); write_date(0x30+qian); write_date(0x30+bai); write_date(0x30+shi); write_date(0x30+ge); } void write_yr(uchar add,uchar date)//写月日函数 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge); } void keyscan()//按键扫描函数 { int m,n; if(s1==0) { delay(5); if(s1==0)//按键1光标移位扫描 { s1num++; if(s1num==1) { while(!s1);//等待按键松手 write_com(0x80+0x40+10); TR0=0;//关闭定时器 write_com(0x0f); //开显示,显示光标,光标闪烁 } if(s1num==2) { while(!s1); write_com(0x80+0x40+7); } if(s1num==3) { while(!s1); write_com(0x80+0x40+4); } if(s1num==4) { while(!s1); write_com(0x80+3); } if(s1num==5) { while(!s1); write_com(0x80+6); } if(s1num==6) { while(!s1); write_com(0x80+9); } if(s1num==7) { while(!s1) write_com(0x80+13); } if(s1num==8) { while(!s1); s1num=0; write_com(0x0c); TR0=1;//开定时器 } } } if(s1num!=0) { if(s2==0)//按键2加功能 { delay(5); if(s2==0) { while(!s2); if(s1num==1)//秒加 { miao++; if(miao==60) { miao=0; } write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2)//分加 { fen++; if(fen==60) { fen=0; } write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3)//时加 { shi++; if(shi==24) { shi=0; } write_sfm(4,shi); write_com(0x80+0x40+4); } if(s1num==4)//年加 { nian++; if(nian==10000) { nian=2000; } write_nyr(1,nian); write_com(0x80+3); } if(s1num==5)//月份加 { yue++; if(yue==13) { yue=1; } write_yr(6,yue); write_com(0x80+6); } if(s1num==6)//日期加 { ri++; if(ri==29&&yue==2&&!((nian%4==0&&nian%100!=0)||nian%400==0)) { ri=1;//平年 } if(ri==30&&yue==2&&((nian%4==0&&nian%100!=0||nian%400==0))) { ri=1;//闰年 } if(ri==31&&(yue==4||yue==6||yue==9||yue==11)) { ri=1; } if(ri==32) { ri=1; } write_yr(9,ri); write_com(0x80+9); } if(s1num==7)//星期加 { m=m+3; if(m==21) m=0; write_com(0x80+12); for(n=m;n<m+3;n++) { write_date(table4[n]); delay(5); } write_com(0x80+13); } } } if(s3==0)//按键3减功能 { delay(5); if(s3==0) { while(!s3); if(s1num==1)//秒减 { miao--; if(miao==-1) { miao=59; } write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2)//分减 { fen--; if(fen==-1) fen=59; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3)//时减 { shi--; if(shi==-1) shi=23; write_sfm(4,shi); write_com(0x80+0x40+4); } if(s1num==4)//年减 { nian--; if(nian==1999) nian=2000; write_nyr(1,nian); write_com(0x80+3); } if(s1num==5)//月份减 { yue--; if(yue==0) yue=12; write_yr(6,yue); write_com(0x80+6); } if(s1num==6)//日减 { ri--; if(ri==0) { if(yue==2&&!((nian%4==0&&nian%100!=0)||nian%400==0)) { ri=28;//平年 } if(yue==2&&((nian%4==0&&nian%100!=0||nian%400==0))) { ri=29;//闰年 } if(yue==4||yue==6||yue==9||yue==11) { ri=30; } if(yue==1||yue==3||yue==5||yue==7||yue==9||yue==11) ri=31; } write_yr(9,ri); write_com(0x80+9); } if(s1num==7)//星期减 { m=m-3; if(m==0) m=21; write_com(0x80+12); for(n=m;n-3<m;n++) { write_date(table4[n-3]); delay(5); } write_com(0x80+13); } } } } } void main() { int i,j; init(); while(1) { keyscan(); if(TL1==8) { TH1=0X00; TL1=0X00; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; ri++; j=j+3; if(j==21) j=0; write_com(0x80+12); for(i=j;i<j+3;i++) { write_date(table4[i]); delay(5); } if(ri==29&&yue==2&&!((nian%4==0&&nian%100!=0)||nian%400==0)) { ri=1;yue++;//平年 } if(ri==30&&yue==2&&((nian%4==0&&nian%100!=0||nian%400==0))) { ri=1;yue++;//闰年 } if(ri==31&&(yue==4||yue==6||yue==9||yue==11)) { ri=1;yue++; } if(ri==32) { ri=1;yue++; } if(yue==13) { yue=1; nian++; if(nian==10000) { nian=2000; } write_nyr(1,nian); } write_yr(6,yue); } write_yr(9,ri); write_sfm(4,shi); } write_sfm(7,fen); } write_sfm(10,miao); } } } void timer() interrupt 1 { TH0=0X3C; TL0=0XB0; Output_squ=~Output_squ; } 17- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 LCD 简单 电子钟 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文