51单片机实现电子时钟功能_1602液晶显示_第1页
51单片机实现电子时钟功能_1602液晶显示_第2页
51单片机实现电子时钟功能_1602液晶显示_第3页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章设计要求及系统组成一、基本操作时序 : 读状态:输入:RS=L RW=H,E=H输出:D0D7=状态字写指令:输入:RS=L,RW=L,D0D7指令码,E= 高脉冲 输出:无读数据:输入:RS=H RW=H,E=S脉冲输出:D0D7数据写数据:输入:RS=H,RW=LD0D7数据,E=高脉冲 输出:无二、状态字说明 :STA7 D7 STA6 D6 STA5 D5 STA4 D4 STA3 D3 STA2 D2 STA1 D1STA0-6:当前数据地址指针的数值STA7读写操作使能1表示禁止,0表示允许对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0;但是我们可以进行延

2、时进行实现。RAM地址映射:LCD 16字*2行00 01 02 03 04 05 06 07 08 08 09 0A 0B 0C 0D 0E 0F2740 41 424F 5067指令说明:1.初始化设置1.显示模式设置 指令码:00111000V0X38)功能:设置16*2显示,5*7点阵,8位数据接口必须开显示2.显示开、关及光标设置指令码:00001DCB功能:D=1开显示;D=0关显示;C=1显示光标;B=1光标闪烁;B=0光标不显示000001NS:功能:N=1当读或写一个字符后地址指 针加1,且光标加1; N=0相应的减1; S=1当写一个字符,整屏显 示左移n=1)或右移N=0

3、,以得到光标不移动而屏幕移动的效 果。S=0当写一个字符,正屏显示不移动。数据控制:控制器内部设有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM421数据指针设置:指令码:80H+地址码V0-27H,第二行开始:40H-67H) 4.22 读数据,写数据其它设置:01H:显示清屏:1.数据指令清零 2 所有显示清零 02H:显示回车:1.数据清零如何进行连接 :实际操作中,液晶接到,第一管脚是D,第二管脚是 VCC 15和16是背光,D0-D7是数据口,接到单片 机的P0 口,P0 口接了两个锁存器,液晶,D/A,具有高阻状态的都 可以随便接,没有影响,第六管脚是LCDEN相当

4、于E,使能信号,它接P3A4,R/W接地,表示低电平,因为我们只进行写操作,RS接2实验板上的P3八5。只需这两端口便足以控制液晶,2和3是偏 压信号,一端接地,接口信号说明:编号:1 VSS号表示)电源地 引脚说明)2VDD电源正极3VL液晶显示偏压信号 4RS数据/命令选择端vH/L) 5R/W 读写选择端 H/L) 6E 使能信号 7D0Data 1/0 8D1Data 1/0 9 D2Data 1/010 D3Data 1/011D4Data 1/012D5Data1/0 13D6Data1/0 14D7Data 1/0 15BLK背光源正极16 BLK背光源负极实际操作:先写光标程序

5、;写两个子程序,一个写数据,一个写指令:先进性 两个宏定义,再位申明LCDEN与RS为了电量充足。初始化时关断 数码管,定义数码管的两个锁存端,dula与wela,P2A6与P2八7,先写主函数 <调用初始化函数,在调用数据子函数 <'1'),从右向 左滚动进来CodeRSR/WDB7DB6DB5DB4DB3DB2DB1DB0000001S/CR/LxxS/RR/L描述00光标左移01光标右移10显示左移,光标跟着 左移11显示右移,光标跟着 右移),再写初始化函数(先关断数码管,在进行显示模式设置,显示开、关及光标设置,设计数据>,接着写命令子函数 writ

6、er -com<始操作时序,写指令,P0 口送的指令码,接着需要延时一段 时间让E变成高电平,在持续一段时间,E再变低),它由所用的 指令直接调用即可。再写一个写数据的子 函数writer_data<lcdrs=1 ),需用延时子函数。Uchar code table= “”注意:为了使得黑托不出现,应该屏幕全部清零writer_com(0x01。? xdata :外部地址空间1.1设计要求利用单片机最小系统设计一个电子时钟,显示方式为*:*:*,并且可以任意修改时间。1.2系统组成原理框图如图1.1复位电路图1.1系统原理框图第二章系统设计方案2.1系统设计方案电路原理图如图2.

7、1所示图2.1电路原理图2.2电路模块组成及其工作原理2.2.1 时钟电路系统时钟源由内部时钟方式产生,时钟电路由12MH晶振和两个30PF瓷片电容组成,构成自激振荡,形成振荡源提供给单片机。电容可在5PF到30PF之间选择,电容的大小对振荡频率有微小影响,可起频率微调作用。时钟电路如图2.2所示复位电路单片机复位有上电复位和手动复位两种方式,上电复位是接通电源后利用RC充电来实现复位。手动复位是通过人为干预,强制系统复位。复位电路如图2.3所示,可以实现上电复位和手动复位功能223按键电路在单片机的P1.0、P1.1、P1.2三个I/O 口接三个简易按键,通过不断检测 按键状态,识别按键的按

8、下顺序和次数即可实现时间的任意修改。按键电路如图2.4所示。224 1602 液晶显示模块电路本设计是通过对1602液晶显示屏的控制来实现时间的显示。1602液晶显示模块的驱动如下所述:16RT1602CU2U1二5w0B7|biiT£?图2.4 1602液晶屏实物图1602采用标准的16脚接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选 择指令寄存器。第5脚:R

9、W为读写信号线,高电平时进行读操作,低电平时进行写 操作。当RS和 RW共同为低电平时可以写入指令或者显示地址,当 RS为低电平RW为高电平时可以读忙信号,当 RS为高电平RW为低 电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模 块执行命令。第714脚:D0- D7为8位双向数据线第1516脚:空脚1602显示屏的时序图如图2.5RSIntent I SrgnaiDB7飞 ""* /叭 /卅八 =器,门(口心 厂iiIIAAAA1!1Iliwbiojoni Bm旳 FtjCheck Busy Fiag Dhett Busv Fbg Ohecf

10、clitsIrcUoH图2.5 1602时序图1602液晶显示屏与单片机的连线图如图2.6所示2345e7s13 cH2 Q)51431円9n nui* cPIQPQOPllei i *iPQ1P13rvJP03PMPO4PI 5P05Pl6Pv6PITP07INTIP20INTOP21Y22ATS9<T1F23TOF24P25EA.VPP26P27XIX2RESETR.XDTTORDALEEhWKPSENH>2IfiPtNLLD 55 V匚CJ LJ LJ tf IJ t1 Lf qf|j RI.C D-fa J A<vc<617S1 31911035一II1 341

11、233UH41421L1$ 62224(>图2.6 1602与单片机连线图第三章程序设计及其调试3.1程序设计程序设计如下:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit lcdrs=P2A0。sbit lcswr=P2A1 。sbit lcden=P2A2 。sbit s1=P1A0 。sbit s2=P1A1 。sbit s3=P1A2 。sbit rd=P3A7 。uchar count,s1num 。char miao,shi,fen 。uchar code table

12、=" 2018-6-14 TUN"uchar code table1=" 00:00:00"void delay(uint z>uint x,y 。for(x=z 。 x>0。 x->for(y=110 。 y>0。 y-> 。void write_com(uchar com>lcdrs=0 。lcswr=0 。P0=com。delay(5> 。lcden=1 。delay(5> 。lcden=0 。void write_date(uchar date>lcdrs=1 。lcden=0 。P0=dat

13、e。delay(5> 。lcden=1 。delay(5> 。 lcden=0 。void init(>uchar num 。lcden=0 。write_com(0x38> 。write_com(0x0c> 。write_com(0x06> 。write_com(0x01> 。write_com(0x80> 。 for(num=0。 num<15 num+>write_date(tablenum> delay(5> 。write_com(0x80+0x40> 。for(num=0 。 num<12。 num+

14、>write_date(table1num> delay(5> 。TMOD=0x0。TH0=(65536-50000>/256。 TL0=(65536-50000>%256。EA=1。ET0=1。TR0=1。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 keyscan(>rd=

15、0。if(s1=0> delay(5> 。if(s1=0>s1num+。while(!s1> 。 if(s1num=1> TR0=0。 write_com(0x80+0x40+10> 。 write_com(0x0f> 。if(s1num=2>write_com(0x80+0x40+7> 。if(s1num=3>write_com(0x80+0x40+4> 。if(s1num=4>s1num=0。 write_com(0x0c> 。TR0=1。if(s1num!=0>if(s2=0> delay(5>

16、; 。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> 。

17、if(s3=0>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&g

18、t; 。 write_com(0x80+0x40+4> 。void main(>init(> 。while(1>keyscan(> 。void timer0(> interrupt 1TH0=(65536-50000>/256。TL0=(65536-50000>%256。 count+ 。if(count=18>count=0 。 miao+。if(miao=60>miao=0。fen+ 。if(fen=60>fen=0 。 shi+ 。if(shi=24>shi=0 。write_sfm(4,shi>write_sfm(7,fe n> 。 write_sfm(10,miao> 。3.2实验调试实验过程中出现了很多的问题,经过反复的程序修改和调试,最终完成了本 设计的要求,实现了电子时钟功能。在电路焊接前,通过protues单片机仿真软件多次调试和仿真,得出了正确的实验结果。Protues仿真图如图3.1所示。工1:T.M L12T:=tl :W嗓.6W1 * ©陀圧鹅PZ.VAB P2EAn F23W11 P2_4.C 陀环口P2jaAU P貂血音P0137FQZ3EPLUPQ*卩鸟羽PO5P 32PD771'n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论