版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、?单片机原理与应用?课程设计说明书题目LCD12864液晶显示电子钟设计系部专业班级学号指导教师起止日期课程设计任务书系部:专业:课题名称LCD12864液晶显示电子钟设计设计-种基于AT89S52单片机的液晶显示电子时钟,要求如下:1、能正确显示时间、日期和星期显示格式为: 时间:#小时:#分:#秒;日期:#年:#月:# 日;星期:X。2、时间能够由按键调整,误差小于 1S。3、闹钟功能:时间运行到与闹钟设定时间时,闹钟响持续响3秒。设计4、报时功能:时间运行到正点时间时, 闹钟响,几点钟就响几要求声每声持续响2秒,每两声之间时间间隔1秒。液晶显示器第一行显示“数字电子钟;第二行显示“当前时
2、间;第行显示日期和星期;第四行显示最近个闹钟的设定时间。2、要求:完成该系统的硬件和软件的设计,在Proteus软件上仿真通过,并提交一篇课程设计说明书。1、汇编或C51语言程序设计;设计2、程序调试;工作3、在Proteus上进展仿真成功,进展实验板下载调试;量4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、调试过程,参考文献、设计总结等。起止日期工作容第一天课题绍,答疑,收集材料,C51介绍工作第二天设计方案论证,练习编与 C51程序方案第三天第六天程序设计第六天第八天程序调试、仿真第九天第十天系统测试并编写设计说明书教研室意见年 月曰系部 主管领导 意见年
3、月曰目录一、12864液晶的工作原理 4二、方案设计 42.1 实物硬件设计42.2 系统硬件设计44562.3 系统软件设计66三、仿真和分析7四、总结体会7参考文献33、12864液晶的工作原理液晶显示屏中的业态光电显示材料,禾U用液晶的电光效应把电信号转换成数字符、图像等可见信号。如图1-1,液晶正常情况下,其分子排列很有秩序,显得清澈透明,一旦加上直流电场后,分子的排列被打乱,一局部液晶变的不透明,颜色加深因而能显示数字和图像。管脚一共1个CS1左半屏片选端,CS2右半屏片选端; V液晶显示驱动电压,通过一个电位器接到VCC RS数据指令选择信号,H为数据,L为指令,也叫D/1 ; R
4、/W读写选择信号,H为读,L为写,。E为LCD使能端,R/W为L时,E信号下降沿锁存DB7-DB0; R/W为H时,E为H, DDRA澈据读至U DB7-DB0 DB0-DB7数据传输端口。 RST复位信号。-VOUT 和V0为液晶显示驱动电压。 12864是一种图形点阵液晶显示器 ,它主要由行驱动器/列驱动器与128 X 64 全点阵液晶显示器组成。可完成图形显示,也可以显示8X4个16 X 16点阵汉字。图1-1 12864LCD 液晶显示屏二、方:案计2.1 实物硬件设计单片机控制液晶显示屏系统总共可分为六个环节,分别是单片机控制系统、12864字符显示模块、控制开关模块、晶振控制模块、
5、复位电路模块和DS1302时钟控制模块。通过这六个模块的协调工作就可以完成相应的液晶屏控制和显示功能。这六个模块的相互连接如图2-1:图2-1硬件组成框图2.2 系统硬件设计本硬件电路主要由四大模块组成:主芯片模块;晶振和复位电路模块;控制接钮模块;显示电路模块。主芯片模块即单片机模块,XTAL1:接外部晶振和微调电容的一端。在片,它是振荡电路反相放大器的输入端。XTAL2接外部晶振和微调是容的一端。RST: AT89C51的复位信号输入引脚,高电平有效。当此输入端保持两个机器周期的高电平时,就可以完成复位操作。ALE:允许地址锁存信号端。EA该引脚为低电平时,那么读取外部的程序代码来执行程序
6、。PO、P1、P2、P3: 8位并行输入输出口。每个端口都是8位准双向口,共占 32只引脚。每一条都能独立地用作输入或输出。每个端口都包括一个锁存器、一 个输出驱器和输入缓冲器。作输出时,数据可以锁存;作输入时,数据可以缓冲。图如图3 1。卑卑耳耳幵耳耳耳耳耳卑q哨耳q耳片耳耳斗半耳s§£ 茗器£ _1£ oamsg龙超总 S2W9S CLWVP 0-3 2 OWE isTT茴 01|败圧 匱常d 刖丙£ 割詰d e豈dn-crlx nrixssdLLT T LLLL li_O_CLCLCLCLCLCL图3-1单片机引脚图89C51芯片部有一个
7、高增益反相放大器,用于构成振荡器。如图3 2,反相放大器的输入端为XTAL1,输出端XTAL2,两个跨接石英晶体与两个电容就可以构成稳定的自激振荡器。XTAL1是片振荡器的反相放大器输入端,XTAL2那么是输出端,使用外部振荡器时,外部振荡信号应直接加到 XTAL1,而XTAL2 悬空。一个晶体振荡器,接在单片机部的振荡电路上,两个电容是起振电容,频率越高,应该越小。图4-1晶振模块在振荡器运行时,有两个机器周期24个振荡周期以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后PO- P3 口均置1引脚表现为高电平,程序计数器和特殊功能存放器 SFR全部
8、清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开场运行程序。如上图5-1所示复位电路,由于复位时高电平有效,当刚接上电源的瞬间,电容C1两端相当于短路,即相当于给 RESET引脚一个高电平,等充电完毕时这个时间很短暂,电容相当于断开,这时已经完成了复位动作。图5-1复位模块本模块采用四个按钮进展控制,通过串行口输入输出连接,当K1按键波动一次后,方可进展年、月、日、星期、时、分的改变,当循环满时,按下K0可实现对闹钟的改变。按键K2、K3分别实现加一减一的操作。按钮模块2.3 系统软件设计图7-1 主程序流程图指针指向数组苜地址写汉子程序初始化图8-1 LCD显示程序和初始化子程序
9、流程图三、仿真和分析将程序下载到单片机开发板上,LCD12864显示如以下图,第一行为汉字“数字电子钟",第二行为时分秒,第三行为年月日以与星期,第四行为闹钟,通过按键可实现时间的调整,也可实现整点报时和闹钟。符合设计要求。图9-1实物仿真图程序:#in clude<reg52.h>#in clude< intrin s.h>#in clude<stdlib.h>#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit rs=P"0;12864引脚定义sbit rw=P1
10、A1;sbit en=卩1人2;sbit PSB=P"3;sbit beep=P3A4;蜂鸣器引脚定义sbit k仁P3A5;按键定义sbit k2=P3A6;sbit k3=P3A7;sbit k0=P0A0;uint t,k,kk;uchar shi,fe n, miao, nian=13,yue,ri,zhou,shi0,fe nO,miaoO;uchar code dis1=0xca,0xfd,"字电子钟"/显示字组uchar code dis2="00uchar code dis3="00uchar code dis4="时
11、00分00秒"年 00 月 00 日 1"闹钟00时00分00秒"void delayms(uint xms)延时 xms 函数uchar i,j;for(i=xms;i>0;i-)for(j=110;j>0;j-);void warn(uchar xn)"嘟"xn 次函数uint nn;for(nn=0;nn<xn;nn+)uint n;for(n=2000 ;n >0 ;n-)beep=1;delayms(1);beep=0;delayms(2); for(n=1000; n>0; n-)beep=1;dela
12、yms(3);void warn3s()/3s 报警函数uint n;for(n=3000 ;n >0; n-)beep=0;delayms(2);beep=1;delayms(1);写指令函数void write_(uchar )/12864rs=0;rw=0;en=0;P2=;delayms(5);en=1;delayms(5);en=O; void write_data(uchar date)/12864rs=1;rw=0;en=0;P2=date;delayms(5);en=1;delayms(5);en=0; void lcd_pos(uchar X,uchar Y)/1286
13、4 uchar pos;if(X=0)X=0x80;数据指令函数显示位置函数if(X=1)X=0x90;if(X=2)X=0x88;if(X=3)X=0x98;pos=X+Y;write_(pos);时钟数值函数void write_sfm(i nt add, uint date)/uchar shi,ge;shi=date/10;ge=date%10;lcd_pos(1,0+add);write_data(0x30+shi);write_data(0x30+ge);年月日数值函数void write_sfm1(i nt addl, uint datel)/ uchar shi,ge;shi=
14、date1/10;ge=date1%10;Icd_pos(2,0+add1);write_data(0x30+shi);write_data(0x30+ge);闹钟数值函数void write_sfm2( int add2,ui nt date2)/uchar shi,ge;shi=date2/10;ge=date2%10;lcd_pos(3,0+add2);write_data(0x30+shi);write_data(0x30+ge);void keysca n()按键扫描函数if(kO=O)闹钟按键操作delayms(5);if(kO=O)while(!kO);kk+;if(kk=1)T
15、RO=O; write_(OxOf); 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_(OxOc);if(k1=0)调试按键操作delayms(5);if(k1=0)k+;while(!k1);if(k=1)TRO=O;write_(0x0f); lcd_pos(1,4);if(k=2)lcd_pos(1,2);if(k=3)if(k=4)lcd_pos(2,4); if(k=5)lcd_pos(2,2); if(k=6)lcd_pos(2,0); if(k=7)lcd_pos(2
16、,7);if(k=8)k=0;write_(OxOc);TR0=1;if(k!=O)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,fe n);shi+;if(shi=24)shi=0;write_sfm(0,shi);lcd_pos(1,0);/write_sfm(0,shi);if(k=4)ri
17、+;if(ri=32)ri=1;write_sfm1(4,ri); lcd_pos(2,4);/write_sfm1(4,ri);if(k=5)yue+;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, nia n); lcd_pos(2,0);/write_sfm1(0, nia n);if(k=7)zhou+;if(zhou=8)zhou=0; write_sfm1(7,zhou); lcd_pos(2,7);/write_sfm1(7,
18、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,fe n);lcd_pos(1,2);/write_sfm(2,fe n);shi-;if(shi=-1)shi=23;write_sfm(O,shi);lcd_pos(1,0);/write_sfm(0,shi);if(k=4)ri
19、-;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)n ia n-;if(nian=-1)nian=50;write_sfm1(0, nia n);lcd_pos(2,0);/write_sfm1(0, nia n);if(k=7)zhou-;if(zhou=-1)zhou=7;write_sfm1(7,zhou);lcd_pos(2,7);/wr
20、ite_sfm1(7,zhou);if(k=O)if(k2=0)delayms(5);if(k2=0)while(!k2);if(kk=3)miaoO+;if(miao0=60)miao0=0;write_sfm2(6,miao0); lcd_pos(3,6);/write_sfm2(6,miao0);if(kk=2)fenO+;if(fen 0=60)fen0=0;write_sfm2(4,fe n0);Icd_pos(3,4);/write_sfm2(4,fe nO);if(kk=1)shi0+;if(shi0=24) shi0=0;write_sfm2(2,shi0); lcd_pos(
21、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)fen 0-;if(fen0=-1)fen 0=59;write_sfm2(4,fe n0);lcd_pos(3,4);/write_sfm2(4,fe n0);if(kk=1)shiO-;if(shiO=-1)shi0=23;write_sfm2(2,shi0);lcd_po
22、s(3,2);/write_sfm2(2,shi0);void in it()初始化函数12864初始化,定时器初始化PSB=1;write_(0x30);delayms(5);write_(0x0c);delayms(5);write_(0x01);delayms(5);TH0=(65535-50000)/256;TL0=(65535-50000)%256;TMOD=0x01;ET0=1;EA=1;TR0=1;void mai n()主函数uchar i;delayms(IO);init();lcd_pos(0,2);第一排显示i=0;while(dis1i!='O')wri
23、te_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)keysca n();if(miao=0&&fen=0&&TR0=1) 整点报时判断warn( shi);i
24、f(miao=miao0&&fen=fenO&&shi=shi0&&TR0=1)闹钟判断warn 3s();if(miao=0&&fen=O&&miao=miaoO&&fen=fe nO&&shi=shi0&&TR0=1)整点报时、闹钟时冲突操作warn 3s();while(1);void timer() in terrupt 1定时器函数TH0=15535/256;TL0=15535%256;t+;/50ms计数一次if(t=20)t=0;miao+;if(mia
25、o=60)miao=0; fen+;if(fen=60) fen=0;shi+;if(shi=24)shi=0;zhou+;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+;yue=1;nian+;if(yue=2)if( nia n%4)=0)if(ri=30)ri=1;yue+;if(yue=13)yue=1;nian+;if( nia n%4)!=0
26、)ri=1;yue+;if(yue=13)yue=1; nian+;write_sfm1(0, nian);write_sfm1(2,yue);write_sfm1(7,zhou);write_sfm1(4,ri);write_sfm(0,shi); write_sfm(2,fe n);write_sfm(4,miao);四、总结体会通过这为期两个星期的课程设计,我从中认识到了自己很多方面的缺乏。在第一个星期的课程设计 中,是通过proteus仿真来实现要求中的各种功能。由于自己课余时间没有对单片机相关的知识进展深入 了解,所以在开场做设计时,无从下手,不知道该怎么布置仿真图,更不知道怎么通过
27、写程序来实现课题 要求。不过有的课题可以参考课本上的程序,例如彩灯中断,就是在课本上流水灯的根底上参加一个中断 程序,不过中断程序加在何处自己还是有一点疑惑,通过翻阅课本上有关中断方面的知识后,了解了中断 系统的结构与工作原理,再参加了中断程序后,程序还是有一点小问题,在请教了同学之后,找到了问题 所在,修改程序以后实现了要求。而串转并,在以前的实验中做过类似的,所以整体比较顺利。利用彩灯 计数一开场不太明白这个要求的意思,请教了同学才明白要求的意思。根据二进制的计算转化成彩灯的亮 灭,虽然程序很短,但我心里还是有很大的成就感。在做方波的输出时,在写程序之前参考了一下同学的 程序,搞懂了原理,才完成了设计。在这之后,有关于LCD的设计,在这之前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年竞选班干部演讲稿模板参考
- 牵引过程中的观察与护理
- 母婴护理中的服务趋势分析
- 2026年高端装备再制造技术攻关与产业化
- 2026年低空空域综合管理改革试点省份申报条件与福建建议解析
- 2026年日发精机丝杆 螺母内螺纹磨床机器人领域精密加工应用
- 2025年前台服务考核模拟
- 2025年前台服务规范考核测试
- 混凝土道路施工方案
- 2026年长三角经济总量占全国近1 4后的发展新格局分析
- 2024注册核安全工程师考试历年机考真题集附完整答案详解
- 狱内案件立案表宁夏警官职业应用法律系87课件
- -世界水日主题班会课件
- 考古调查勘探辅助工程方案投标文件(技术方案)
- HG∕T 5209-2017 黄磷生产尾气处理处置方法
- 五年级数学(小数乘除法)计算题及答案
- 军事高科技知识教程
- 中药材山茱萸种植与炭疽病防治和治疗技术
- 【SA8000内审完整内容】SA8000-2014社会责任内部审核记录
- 口腔科医务人员职业暴露
- 电动气动调节阀课件
评论
0/150
提交评论