1、 《液晶电子钟显示》巫祎群 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途
2、 《单片机定时控制器系统实践》 实训报告 项目名称: 液晶电子钟显示 姓 名: 巫祎群 学 号: 11137233 专 业: 电气自动化 成 绩: 目 录 第一章 课题要求与设计方案 2 1.1 课题研究现状 2 1。2课题要求 2 1.3设计方案
3、 2 第二章 系统硬件组成与实现方法 4 2。1单片机模块设计 4 2.1。1 单片机概述 4 2.1.2 最小系统组成 4 2。1。3 定时器模块概述
4、 5 2。2 按键显示模块设计 6 2。2.1 按键功能原理 6 2.2.2 按键接口电路设计 6 2.3 显示模块设计 7 2.3.1液晶显示原理
5、 7 2.3。2液晶显示电路设计 7 2.4 按键模块设计 8 2。4.1 按键原理 8 2。4。2 按键电路设计 9
6、第三章 系统软件结构与实现方法 10 3。1定时器模块程序设计 10 3。1.1 定时器初始化 10 3。1。2 定时中断程序设计 10 3。2 显示模块程序设计
7、 11 3.3按键模块程序设计 12 第四章 系统测试与心得 13 4.1系统测试与结果 13 4。2 课程设计心得 14
8、 第一章 课题要求与设计方案 1。1 课题研究现状 电子钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。 目 前,在国内,电子钟因LCD数字显示效用直接有效,所以大多运用在城市的主要营业场所,以及车站、码头等公共场所。在对公共场所的电子钟设定的时候,使用者还可根据周边的气候、温度等对LCD屏进行设置。同
9、时,因为LCD的显示耗电量很省,所以能够保持持续的工作效果。 与传统的机械钟先比,电子钟具有更优异的优点。由于电子钟采用数字集成电路的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,电子钟用于定时自动报警、按时自动打铃、时间程序自动控制、定时广播及自动控制等各个领域。 1。2课题要求 1、使用定时器制作一个24小时制电子钟 2、使用1602液晶显示当前时间,第一行固定显示当前日期(年:月:日)第二行动态显示当前时间,格式为xx:xx:xx 3、能借助按键设置时钟时间,共用三个按钮,分别控制时、分、秒 4、重新启动后时钟时间可重新开始 1
10、3设计方案 硬件说明:用51单片机的定时\计数器、时钟电路、LCD1602液晶显示器设计和三个按键组成一个电子钟硬件。51单片机为主要部分,用指令编程来控制LCD1602液晶显示器的读写操作、屏幕和光标的操作。T/C是加1计数的,当T/C工作定时器时,对振荡源12分频的脉冲计数。单个按键电路直接用I/O口线构成,P1口为键盘接口,由单片机I/O口向键盘(输出)全扫描字,然后读入行线状态来判断是否有按键按下,同时通过扫描取得具体的位置。 图1—1单片机控制原理图 软件说明: 第二章 系统硬件组成与实现方法 2.1单片机模块设计 2.1.1 单片机
11、概述 介绍:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机.单片机的可擦除只读存储器可以反复擦除100次.该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单
12、片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.1.主要特性:·与MCS-51 兼容·4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年·全静态工作:0Hz—24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路 功能模块:由51系列单片机最小系统、显示电路、编程模块电路和RS232串行通信模块组成. 内部结构:(1)数据存储器(RAM);(2)程序存储器(ROM/EPROM);(3)中断系统;(4)定时器/计数器;(5)串行口;(
13、6)P1口、P2口、P3口、P0口;(7)特殊功能寄存器(SFR);(8)微处理器(CPU) 2。1。2 最小系统组成 1) 晶振电路设计 晶振电路设计: MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。 这里,我们选用51单片机12MHZ的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20—100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。 图2-1
14、晶体振荡电路 2) 复位电路设计 采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使用使RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能使单片机复位,而且还能使单片机的外围芯片也同时复位。当程序出现错误时,可以随时使电路复位。 电路图如下: 图2—2复位电路 2。1。3 定时器模块概述 51单片机至少有两个16位的内部定时器,其中两个基本定时器/计数器是定时器/计时器0(T/C0)和定时器/计数器1(T/C1)它们既可以编程位定时器使用,也可以编
15、程位计数器使用。如实计数器内部晶振驱动时钟,则他是定时器。定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 工作方式: 一、方式0 当TMOD中M1M0=00时,T/C工作方式在0。方式0为13位的T/C,由TH提供高8位,TL提供低5位的计数值,满计数值2^13,但启动前可以预置计数初值.T/C启动后立即加1计数,当13位计数满时,TH向高位进位,此进位将中断溢出标志TF置1,产生中断请求,表示
16、定时时间到或计数次数到。若T/C开中断(ET=1)且CPU开中断(EA=1),则当CPU转向中断服务程序时,TF自动清0。 二、方式1 当TMOD中M1M0=01时,T/C工作方式在1。方式1与方式0基本相同。唯一区别在于计数寄存器的位数是16位的,由TH和TL寄存器各提供8位,满计数值2^16。 在方式1与方式0中,当计数满后,若要进行下一次定时/计数,须用软件向TH和TL重装预置计数初值。 三、工作方式2 当TMOD中M1M0=01时,T/C工作方式在2。方式2是8位的可自动重装载的T/C,满计数值2。在方式1与方式0中,当计数满后,若要进行下一次定时/计数,须用软件向T
17、H和TL重装预置计数初值。方式2中TH和TL被当作两个8位计数器,计数过程中,TH寄存8位初值并保持不变,由TL进行8位计数。计数溢出时,除产生溢出中断请求外,还自动将TH中初值重装到TL,即重装载。除此之外,方式2也同方式1。 四、方式3 方式3只适用于T/C0。当T/C0工作在方式3时,TL0和TH0成为两个独立的计数器。这时,TL0可作定时/计数器,占用T/C0在TCON和TMOD寄存器的控制位和标志位;而TH0只能作定时器用,占用T/C1的资源TR1和TF1。在这种情况下,T/C1仍可用于方式0、1、2,但不能使用中断方式。只有将T/C1用于串行口的波特率发生器时,工作方式3将T
18、0分成为两个独立的8位计数器TL0和TH0 。T/C0才工作在方式3,以便增加一个定时器。 2.2 按键显示模块设计 2.2。1 按键功能原理 键盘的最根本的功能就是当该按键按下后,单片机应用系统能够完成该按键所设定的功能。对于一组键盘,必定会通过一个接口电路与单片机相连。CPU要检测是否有键盘信息输入而且要判断是哪一个键被按下,然后根据键值来进行相应的工作。 2.2。2 按键接口电路设计 图2-2—1电路结构 图2—2—2 与单片机的连接方式,电路图 2.3 显示模块设计 2.3。1 液晶显示原理
19、 它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6
20、功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据 指令11:读数据 RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信
21、号,当RS为高电平RW为低电平时可以写入数据.E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0~D7为8位双向数据线。 1602采用标准的16脚接口,其中:第1脚:VSS为电源地;第2脚:VDD接5V电源正极;第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生”鬼影”,使用时可以通过一个10K的电位器调整对比度);第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。;第6脚:E(或EN)端为使能(enable)端。
22、第7~14脚:D0~D7为8位双向数据端。;第15~16脚:空脚或背灯 2。3.2 液晶显示电路设计 芯片工作电压:4。5-5.5V;最佳工作电压5。0V;工作电流:2.0mA; 液晶显示是一慢显示器件,在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。 图2-3液晶显示模块电路图 2.4 按键模块设计 2.4。1 按键原理 在按键电路中,我们可以在I/O口上直接接按键,或者通过I/O口设计一个键盘,然后通过键盘扫描程序判断是
23、否有键按下等。键盘扫描电路节省I/O口,但编程有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有足够的I/O口可以使用,为了使程序简化,我们采用按键电路,用部分P0做开关,P0.7停止,用外部中断INT1开始,另外用软件法消除抖动。 1.独立式按键原理与结构 独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态.独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。独立式按键的软件结构 独立式按键的软件常采用查询式结构.先逐位查询
24、每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。 2、矩阵式键盘的结构及原理 矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。一个4×4的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口. 矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列
25、线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。 2。4。2 按键电路设计 图2—4独立式按键 图2—5矩阵式按键 第三章 系统软件结构与实现方法 3。1定时器模块程序设计 3.1.1 定时器初始化 定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON.TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,
26、并控制定时器的运行或停止等。 步骤:1)确定T/C的工作方式——编程TMOD寄存器;2)计算T/C中的计数初值,并装载到TH和TL;3)T/C在中断方式工作时,需开CPU中断和源中断—-编程TMOD寄存器;4)启动定时器——编程TCON中TR1或TR0位. 程序:TMOD=0x01; TH0=0x4c; TL0=0x00; EA=1; ET0=1; TR0=1; 3.1。2 定时中断程序设计 图3—1定时中断流程 程序 void time0()
27、interrupt 1 using 1 { TH0=0x4c; TL0=0x00; timer_cout++; if(timer_cout>=20) {sec++; timer_cout=0;} if(sec>=60) {min++; sec=0;} if(min>=60) {hour++; min=0; } if(hour〉=24) { hour=0; } } 3。2 显示模块程序设计 程序:void LCD_WriteD
28、ata(unsigned char WDLCD) { LCD_RS = 1; LCD_RW = 0; LCD_Data = WDLCD; LCD_E = 0; delay(5); LCD_E = 1; delay(5); LCD_E = 0; } void LCD_WriteCommand(unsigned char WCLCD) { LCD_RS = 0; LCD_RW = 0; LCD_Data = WCLCD; LCD_E = 0; LCD_E = 1; //延时 delay(5); LCD_E = 0; } 3
29、3按键模块程序设计 程序:case 0x70:sec++; break; case 0xb0:min++; break; case 0xd0:hour++; break; 第四章 系统测试与心得 4。1系统测试与结果 1)测试步骤:第一步:运行STC—ISP,.EXE程序 下载程序对话框图 第二步:选择单片机MCU型号:STC12C5A60S2 第三步:选择串行口“COM1”、“COM2” 第四步:选择下次启动后时钟源为:内部RC振荡器还是外部晶体或时钟 第五
30、步:装入已编译好的。HEX或。BIN文件 第六步:选择“Download/下载”按钮,下载用户程序(。HEX或.BIN)到单片机程序存储器 第七步:断电源,再上电源复位单片机 2)测试结果:达到效果。在1602液晶上显示当前时间,第一行固定显示当前日期(年:月:日)第二行动态显示当前时间,格式为xx:xx:xx能借助按键设置时钟时间,共用三个按钮,分别控制时、分、秒;重新启动后时钟时间可重新开始. 图4—1测试效果图 4。2 课程设计心得 经过一周的课程设计,通过组员的共同努力,不断的测试与分析,最终完成了液晶显示电
31、子时钟的设计与制作。本次设计最为主要的是程序设计部分,要考虑到定时器部分、液晶显示部分、按键接口电路设计、定时中断程序设计等主要问题,在程序设计过程中,我们也遇到了很多问题,例如:定时器部分、按键部分等,以前在学习过程中遇到问题都是直接问老师,而不会自己思考问题出在哪里进而去解决各种问题,经过这次实训,我学会了和组员一起合作讨论解决问题、上网或者去图书馆查阅资料解决问题。经过和组员的多次讨论和研究,并参阅了一些电子资料,在反复试验之后成功解决了以上各种难题。 在实验的设计及仿真测试时,当没有得出正确的实验现象时,必须冷静、沉着的思考问题的来源切勿乱了头绪,只有思路清晰,才能够最终将实验成功完成。 此课程设计主要考察了对单片机技术原理及程序设计基础等知识。理论结合实践,使得对平时学习的单片机技术知识有了一个新的了解. 此次设计的液晶显示电子钟是一个典型的单片机应用实例,通过本次设计,使得我对单片机技术有了进一步的认识,在排除各种问题的过程中,我们体验了程序设计的艰辛与繁杂,但是我们也体会到了成功的喜悦,并且对此产生了浓厚的兴趣,为以后更好的学习打下了坚实的基础,让我更加有信心学好单片机这门课程。 实训学生签名: 2013年 5月 24日 14






