版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-?单片机原理及应用?课程设计说明书题目LCD12864 液晶显示电子钟设计系(部)专业(班级)*指导教师起止日期课程设计任务书系(部): 专业: 课题名称LCD12864 液晶显示电子钟设计设计要求设计一种基于 AT89S52 单片机的液晶显示电子时钟,要求如下:1 、 能正确显示时间、 日期和星期显示格式为: 时间: * 小时:* 分:* 秒;日期:* 年:* 月:* 日;星期:*。2 、时间能够由按键调整,误差小于 1S。3 、 闹钟功能: 时间运行到与闹钟设定时间时, 闹钟响 持续响 3 秒。4 、 报时功能: 时间运行到正点时间时, 闹钟响, 几点钟就响几声 每声持续响 2 秒,每两
2、声之间时间间隔 1 秒。液晶显示器第一行显示“数字电子钟 ;第二行显示“当前时间 ;第三行显示日期和星期;第四行显示最近一个闹钟的设定时间。2、要求:完成该系统的硬件和软件的设计,在 Proteus 软件上仿真通过, 并提交一篇课程设计说明书。设计工作量1、汇编或 C51 语言程序设计;2、程序调试;3、在 Proteus 上进展仿真成功,进展实验板下载调试;4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、调试过程,参考文献、设计总结等。工作方案起止日期工作容第一天 课题绍,答疑,收集材料,C51介绍第二天设计方案论证,练习编写 C51 程序第三天第六天程序设计第
3、六天第八天程序调试、仿真第九天第十天系统测试并编写设计说明书教研室意见 年 月 日系部主管领导意见 年 月 日目录一、12864液晶的工作原理5二、方案设计52.1 实物硬件设计52.2 系统硬件设计62.2.1 主芯片模块62.2.2 晶振和复位模块62.2.3 按钮模块72.3 系统软件设计72.3.1 主程序设计7三、仿真和分析8四、总结体会9参考文献10一、12864液晶的工作原理液晶显示屏中的业态光电显示材料,利用液晶的电光效应把电信号转换成数字符、图像等可见信号。如图1-1,液晶正常情况下,其分子排列很有秩序,显得清澈透明,一旦加上直流电场后,分子的排列被打乱,一局部液晶变的不透明
4、,颜色加深因而能显示数字和图像。管脚一共1个CS1左半屏片选端,CS2右半屏片选端;V0液晶显示驱动电压,通过一个电位器接到VCC;RS数据指令选择信号,H为数据,L为指令,也叫D/I;R/W读写选择信号,H为读,L为写,。E为LCD使能端,R/W为L时,E信号下降沿锁存DB7-DB0;R/W为H时,E为H,DDRAM数据读到DB7-DB0。DB0-DB7数据传输端口。RST复位信号。-VOUT和V0为液晶显示驱动电压。 12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及12864全点阵液晶显示器组成。可完成图形显示,也可以显示84个(1616点阵)汉字。 图1-1 12864L
5、CD液晶显示屏二、方案设计2.1 实物硬件设计 单片机控制液晶显示屏系统总共可分为六个环节,分别是单片机控制系统、12864字符显示模块、控制开关模块、晶振控制模块、复位电路模块和DS1302时钟控制模块。通过这六个模块的协调工作就可以完成相应的液晶屏控制和显示功能。这六个模块的相互连接如图2-1: 图2-1 硬件组成框图2.2 系统硬件设计本硬件电路主要由四大模块组成:主芯片模块;晶振和复位电路模块;控制接钮模块;显示电路模块。2.2.1 主芯片模块 主芯片模块即单片机模块,*TAL1:接外部晶振和微调电容的一端。在片,它是振荡电路反相放大器的输入端。*TAL2:接外部晶振和微调是容的一端。
6、RST:AT89C51的复位信号输入引脚,高电平有效。当此输入端保持两个机器周期的高电平时,就可以完成复位操作。ALE:允许地址锁存信号端。EA:该引脚为低电平时,则读取外部的程序代码来执行程序。P0、P1、P2、P3:8位并行输入输出口。每个端口都是8位准双向口,共占32只引脚。每一条都能独立地用作输入或输出。每个端口都包括一个锁存器、一个输出驱器和输入缓冲器。作输出时,数据可以锁存;作输入时,数据可以缓冲。图如图31。 图3-1 单片机引脚图2.2.2 晶振和复位模块 89C51芯片部有一个高增益反相放大器,用于构成振荡器。如图32,反相放大器的输入端为*TAL1,输出端*TAL2,两个跨
7、接石英晶体及两个电容就可以构成稳定的自激振荡器。*TAL1 是片振荡器的反相放大器输入端,*TAL2 则是输出端,使用外部振荡器时,外部振荡信号应直接加到*TAL1,而*TAL2 悬空。一个晶体振荡器,接在单片机部的振荡电路上,两个电容是起振电容,频率越高,应该越小。 图4-1 晶振模块 在振荡器运行时,有两个机器周期24 个振荡周期以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。复位后P0P3 口均置1 引脚表现为高电平,程序计数器和特殊功能存放器SFR 全部清零。当复位脚由高电平变为低电平时,芯片为ROM 的00H 处开场运行程序。如上图5-1所示复
8、位电路,由于复位时高电平有效,当刚接上电源的瞬间,电容C1两端相当于短路,即相当于给RESET引脚一个高电平,等充电完毕时这个时间很短暂,电容相当于断开,这时已经完成了复位动作。 图5-1 复位模块2.2.3 按钮模块 本模块采用四个按钮进展控制,通过串行口输入输出连接,当K1按键波动一次后,方可进展年、月、日、星期、时、分的改变,当循环满时,按下K0可实现对闹钟的改变。按键K2、K3分别实现加一减一的操作。 图6-1 按钮模块2.3 系统软件设计2.3.1 主程序设计图7-1 主程序流程图 图8-1 LCD显示程序和初始化子程序流程图三、仿真和分析将程序下载到单片机开发板上,LCD12864
9、显示如以下图,第一行为汉字“数字电子钟,第二行为时分秒,第三行为年月日以及星期,第四行为闹钟,通过按键可实现时间的调整,也可实现整点报时和闹钟。符合设计要求。图9-1 实物仿真图程序:*include*include*include*define uchar unsigned char*define uint unsigned intsbit rs=P10;/12864引脚定义sbit rw=P11;sbit en=P12;sbit PSB=P13;sbit beep=P34;/蜂鸣器引脚定义sbit k1=P35;/按键定义sbit k2=P36;sbit k3=P37;sbit k0=P0
10、0;uint t,k,kk;uchar shi,fen,miao,nian=13,yue,ri,zhou,shi0,fen0,miao0;uchar code dis1=0*ca,0*fd,字电子钟;/显示字组uchar code dis2=00时00分00秒;uchar code dis3=00年00月00日 1;uchar code dis4=闹钟00时00分00秒;void delayms(uint *ms)/延时*ms函数uchar i,j;for(i=*ms;i0;i-)for(j=110;j0;j-);void warn(uchar *n)/“嘟*n次函数uint nn;for(n
11、n=0;nn0;n-)beep=1;delayms(1);beep=0;delayms(2);for(n=1000;n0;n-)beep=1;delayms(3);void warn3s()/3s报警函数uint n;for(n=3000;n0;n-)beep=0;delayms(2);beep=1;delayms(1); void write_(uchar )/12864写指令函数rs=0;rw=0;en=0;P2=;delayms(5);en=1;delayms(5);en=0;void write_data(uchar date)/12864数据指令函数rs=1;rw=0;en=0;P2
12、=date;delayms(5);en=1;delayms(5);en=0;void lcd_pos(uchar *,uchar Y)/12864显示位置函数uchar pos;if(*=0)*=0*80;if(*=1)*=0*90;if(*=2)*=0*88;if(*=3)*=0*98;pos=*+Y;write_(pos);void write_sfm(int add,uint date)/时钟数值函数uchar shi,ge;shi=date/10;ge=date%10;lcd_pos(1,0+add);write_data(0*30+shi);write_data(0*30+ge);v
13、oid write_sfm1(int add1,uint date1)/年月日数值函数uchar shi,ge;shi=date1/10;ge=date1%10;lcd_pos(2,0+add1);write_data(0*30+shi);write_data(0*30+ge);void write_sfm2(int add2,uint date2)/闹钟数值函数uchar shi,ge;shi=date2/10;ge=date2%10;lcd_pos(3,0+add2);write_data(0*30+shi);write_data(0*30+ge);void keyscan()/按键扫描函
14、数if(k0=0)/闹钟按键操作delayms(5);if(k0=0)while(!k0);kk+;if(kk=1)TR0=0;write_(0*0f);lcd_pos(3,2);if(kk=2)lcd_pos(3,4);if(kk=3)lcd_pos(3,6);if(kk=4)kk=0;TR0=1;write_(0*0c);if(k1=0)/调试按键操作delayms(5);if(k1=0)k+;while(!k1);if(k=1)TR0=0;write_(0*0f);lcd_pos(1,4);if(k=2)lcd_pos(1,2);if(k=3)lcd_pos(1,0);if(k=4)lc
15、d_pos(2,4);if(k=5)lcd_pos(2,2);if(k=6)lcd_pos(2,0);if(k=7)lcd_pos(2,7);if(k=8)k=0;write_(0*0c);TR0=1;if(k!=0)if(k2=0)/“+1按键操作delayms(5);if(k2=0)while(!k2);if(k=1)miao+;if(miao=60)miao=0;write_sfm(4,miao);lcd_pos(1,4);/write_sfm(4,miao);if(k=2)fen+;if(fen=60)fen=0;write_sfm(2,fen);lcd_pos(1,2);/write
16、_sfm(2,fen);if(k=3)shi+;if(shi=24)shi=0;write_sfm(0,shi);lcd_pos(1,0);/write_sfm(0,shi);if(k=4)ri+;if(ri=32)ri=1;write_sfm1(4,ri);lcd_pos(2,4);/write_sfm1(4,ri);if(k=5)yue+;if(yue=13)yue=1;write_sfm1(2,yue);lcd_pos(2,2);/write_sfm1(2,yue);if(k=6)nian+;if(nian=50)nian=0;write_sfm1(0,nian);lcd_pos(2,0
17、);/write_sfm1(0,nian);if(k=7)zhou+;if(zhou=8)zhou=0;write_sfm1(7,zhou);lcd_pos(2,7);/write_sfm1(7,zhou);if(k3=0)/“-1按键操作delayms(5);if(k3=0)while(!k3);if(k=1)miao-;if(miao=-1)miao=59;write_sfm(4,miao);lcd_pos(1,4);/write_sfm(4,miao);if(k=2)fen-;if(fen=-1)fen=59;write_sfm(2,fen);lcd_pos(1,2);/write_sf
18、m(2,fen);if(k=3)shi-;if(shi=-1)shi=23;write_sfm(0,shi);lcd_pos(1,0);/write_sfm(0,shi);if(k=4)ri-;if(ri=-1)ri=31;write_sfm1(4,ri);lcd_pos(2,4);/write_sfm1(4,ri);if(k=5)yue-;if(yue=-1)yue=12;write_sfm1(2,yue);lcd_pos(2,2);/write_sfm1(2,yue);if(k=6)nian-;if(nian=-1)nian=50;write_sfm1(0,nian);lcd_pos(2,
19、0);/write_sfm1(0,nian);if(k=7)zhou-;if(zhou=-1)zhou=7;write_sfm1(7,zhou);lcd_pos(2,7);/write_sfm1(7,zhou);if(k=0)if(k2=0)delayms(5);if(k2=0)while(!k2);if(kk=3)miao0+;if(miao0=60)miao0=0;write_sfm2(6,miao0);lcd_pos(3,6);/write_sfm2(6,miao0);if(kk=2)fen0+;if(fen0=60)fen0=0;write_sfm2(4,fen0);lcd_pos(3
20、,4);/write_sfm2(4,fen0);if(kk=1)shi0+;if(shi0=24)shi0=0;write_sfm2(2,shi0);lcd_pos(3,2);/write_sfm2(2,shi0);if(k3=0)delayms(5);if(k3=0)while(!k3);if(kk=3)miao0-;if(miao0=-1)miao0=59;write_sfm2(6,miao0);lcd_pos(3,6);/write_sfm2(6,miao0);if(kk=2)fen0-;if(fen0=-1)fen0=59;write_sfm2(4,fen0);lcd_pos(3,4)
21、;/write_sfm2(4,fen0);if(kk=1)shi0-;if(shi0=-1)shi0=23;write_sfm2(2,shi0);lcd_pos(3,2);/write_sfm2(2,shi0);void init()/初始化函数12864初始化,定时器初始化PSB=1;write_(0*30);delayms(5);write_(0*0c);delayms(5);write_(0*01);delayms(5);TH0=(65535-50000)/256;TL0=(65535-50000)%256;TMOD=0*01;ET0=1;EA=1;TR0=1;void main()/主
22、函数uchar i;delayms(10);init();lcd_pos(0,2);/第一排显示i=0;while(dis1i!=0)write_data(dis1i);i+;lcd_pos(1,0);/第二排显示i=0;while(dis2i!=0)write_data(dis2i);i+;lcd_pos(2,0);/第三行显示i=0;while(dis3i!=0)write_data(dis3i);i+;lcd_pos(3,0);/第四行显示i=0;while(dis4i!=0)write_data(dis4i);i+;while(1)keyscan();if(miao=0&fen=0&T
23、R0=1)/整点报时判断warn(shi);if(miao=miao0&fen=fen0&shi=shi0&TR0=1)/闹钟判断warn3s();if(miao=0&fen=0&miao=miao0&fen=fen0&shi=shi0&TR0=1)/整点报时、闹钟时冲突操作warn3s();while(1);void timer() interrupt 1/定时器函数TH0=15535/256;TL0=15535%256;t+; /50ms计数一次if(t=20)t=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)s
24、hi=0;zhou+;if(zhou=8)zhou=1;ri+;if(yue=1|yue=3|yue=5|yue=7|yue=8|yue=10|yue=12)if(ri=32)ri=1;yue+;if(yue=13)yue=1;nian+;if(yue=4|yue=6|yue=9|yue=11)if(ri=31)ri=1;yue+;if(yue=13)yue=1;nian+;if(yue=2)if(nian%4)=0)if(ri=30)ri=1;yue+;if(yue=13)yue=1;nian+;if(nian%4)!=0)if(ri=29)ri=1;yue+;if(yue=13)yue=1
25、;nian+;write_sfm1(0,nian);write_sfm1(2,yue);write_sfm1(7,zhou);write_sfm1(4,ri);write_sfm(0,shi);write_sfm(2,fen);write_sfm(4,miao);四、总结体会 通过这为期两个星期的课程设计,我从中认识到了自己很多方面的缺乏。在第一个星期的课程设计中,是通过proteus仿真来实现要求中的各种功能。由于自己课余时间没有对单片机相关的知识进展深入了解,所以在开场做设计时,无从下手,不知道该怎么布置仿真图,更不知道怎么通过写程序来实现课题要求。不过有的课题可以参考课本上的程序,例如彩
26、灯中断,就是在课本上流水灯的根底上参加一个中断程序,不过中断程序加在何处自己还是有一点疑惑,通过翻阅课本上有关中断方面的知识后,了解了中断系统的构造及工作原理,再参加了中断程序后,程序还是有一点小问题,在请教了同学之后,找到了问题所在,修改程序以后实现了要求。而串转并,在以前的实验中做过类似的,所以整体比较顺利。利用彩灯计数一开场不太明白这个要求的意思,请教了同学才明白要求的意思。根据二进制的计算转化成彩灯的亮灭,虽然程序很短,但我心里还是有很大的成就感。在做方波的输出时,在写程序之前参考了一下同学的程序,搞懂了原理,才完成了设计。在这之后,有关于LCD的设计,在这之前,还没有接触过LCD,所以上网查了一下有关资料,了解了其构造和工作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度企业级SaaS服务合同2篇
- 2024年度出租车行业工会福利改善合同
- 2024年度版权质押合同:某出版公司版权质押贷款合同
- 2024年度家具定制设计与制作合同2篇
- 2024年度楼板倒置工程项目融资合同
- 2024年度旅游服务合同:定制旅行服务与合作2篇
- 2024年度版权购买合同的版权转让方式和权益保障
- 2024年度打桩机施工工程分包合同
- 2024年度租赁合同:办公室及附属设施
- 2024年度版权许可协议:音乐作品线上线下推广3篇
- 中班语言《金色的秋天》课件
- 高考语文复习:诗歌比较阅读
- 林业工程竣工报告
- 从偏差行为到卓越一生3.0版
- 2024护理十大安全目标
- DG-TJ08-2433A-2023 外墙保温一体化系统应用技术标准(预制混凝土反打保温外墙)
- pets5历年真题(口语)
- 通信工程生涯发展规划
- 口腔专科护理疑难病例讨论
- 博雅汉语初级起步1-U11-北京的冬天比较冷
- 屠宰行业PEST分析
评论
0/150
提交评论