第8章51单片机的常用外扩模块21602与DS1302_第1页
第8章51单片机的常用外扩模块21602与DS1302_第2页
第8章51单片机的常用外扩模块21602与DS1302_第3页
第8章51单片机的常用外扩模块21602与DS1302_第4页
第8章51单片机的常用外扩模块21602与DS1302_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

8.3.1602液晶显示器介绍

8.3.11602液晶简介

1.特点(1)液晶显示屏是以若干个58或511点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。(2)主控制驱动电路为HD44780或其他全兼容电路,如SED1278(SEIKOEPSON)、KS0066(SAMSUNG)、NJU6408(NERJAPANRADIO)。(3)具有字符发生器ROM可显示192种字符(160个57点阵字符和32个510点阵字符。(4)具有64个字节的自定义字符RAM,可自定义8个58点阵字符或四个511点阵字符。(5)具有80个字节的RAM。(7)单+5V电源供电。作者:夏路易电子工业出版所有2.引脚功能引脚号符号状态功能1Vss

电源地2Vdd

+5V逻辑电源3V0

对比度控制4RS输入寄存器选择,1:数据;0:指令5R/W输入读、写操作选择,1:读;0:写6E输入使能信号,高电平或是下降边沿有效7D0三态数据总线(LSB)8D1三态数据总线9D2三态数据总线10D3三态数据总线11D4三态数据总线12D5三态数据总线13D6三态数据总线14D7三态数据总线(MSB)15LEDA输入背光+5V有些液晶没有背光,有些引脚与此不同16LEDK输入背光地作者:夏路易电子工业出版所有8.3.21602液晶中的显示驱动芯片HD447801.1602液晶结构与信号HD44780是驱动器与控制器一体的专用字符液晶显示控制驱动集成电路,是字符液晶显示控制器的代表芯片。该芯片内集成了显示缓冲区和用户定义的字符发生器CGRAM,具有简单但功能强的指令,可以实现字符移动、闪烁等显示功能。(1)接口信号D7~D4三态总线,8位数据总线的高4位,可以作为4位数据总线使用D3~D0三态总线,8位数据总线的低4位,4位数据总线时无用在4位数据总线情况下单片机向HD44780发送指令和数据时,先传输高4位,再传输低4位。接口控制信号为RS、R/W和E,他们之间的关系如下表所示。寄存器选择RS读写R/W使能信号E功能00下降沿有效写指令代码01高电平有效读忙标志和AC码10下降沿有效写数据11高电平有效读数据作者:夏路易电子工业出版所有(2)时钟HD44780时钟频率范围是125kHz~350kHz,典型时钟范围是250kHz。(3)芯片内部逻辑实现初始化操作在上电后,芯片内部逻辑实现初始化操作:清屏初始化设置为8位总线接口、1行、5×7字符显示关显示地址计数器设置为自动加1模式在初始化过程中。忙标志BF保持为1,直到初始化结束。(4)地址计数器AC地址计数器AC是显示缓冲区DDRAM或字符发生器CDRAM的地址,在写或读之后,还有地址加1或减1功能;该计数器还指示当前光标位置。AC值可以通过读操作读出。作者:夏路易电子工业出版所有(5)光标闪烁光标以底线形式在字符位置的第8行闪烁,但也可以是字符闪烁,可由指令设置。(6)字符发生器CGROM与CGRAMCGROM中存储有出厂时就固化好的字模库,包含有160种5×7点阵的字模和32种5×10点阵的字模。在内部时序的控制下,显示缓冲区DDRAM中的字符代码与行计数器合成CGROM的地址。CGRAM是可读、可写的用户自定义字符发生器,容量有64字节,地址位00H~03H,只能自定义8个5×8点阵字符,字符代码取值范围为00H~07H。作者:夏路易电子工业出版所有字符发生器CGROM作者:夏路易电子工业出版所有(7)DDRAM显示缓冲区DDRAM用于存储显示字符的代码,共有80个字节,地址计数器AC的数值是DDRAM的地址,DDRAM中的代码是字符发生器CGRAM或CGROM地址的高8位,而地址的低3位或4位由行计数器提供,DDRAM中的各个单元对应着显示屏上的各个字符位,对应关系如下:列位置12345678910111213141516第1行000102030405060708090A0B0C0D0E0F第2行404142434445464748494A4B4C4D4E4F在确定字符位置时,还需要考虑最高位是1的格式要求,比如第二行第一个字符的地址是40H,由于写入显示地址时要求最高位D7为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。作者:夏路易电子工业出版所有1602指令简述如下:(1)清屏(0x01)把空码20H写入DDRAM的全部单元。地址计数器AC清零,光标归位。设置I/D=1,使AC处于自动加1模式。(2)归位(0x02)使AC清零,还可以使发生位移的画面返回00H处显示,光标或是闪烁将回到原点00H处。(3)输入方式(0000,01,I/D,S)该指令设置单片机读、写DDRAM或CGRAM后,AC的变化方向,该指令有两个参数:I/D:I/D=1AC自动加1,光标右移;I/D=0AC自动减1,光标左移。S:设置在写入DDRAM数据后,显示屏上的画面全部向左或向右平移一个字符位。S=0:无效,S=1有效。S=1、I/D=1,画面左移。S=1、I/D=0,画面右移。作者:夏路易电子工业出版所有(4)显示开关控制(0000,1,D,C,B)该指令控制显示效果,带有三个参数:D:显示开关,D=1时,允许显示屏显示;D=0,不允许显示屏显示。C:光标开关,C=1时,允许显示屏显示光标;C=0时,不允许显示光标。光标位置由AC控制。B:闪烁开关,使一个字符位交替全亮或是全暗,闪烁频率为2.4Hz。闪烁位置由AC控制。B=1,闪烁;B=0,不闪烁。(5)光标或画面位移(0001,S/C,R/L,0,0)执行该指令时,光标或显示屏上的画面将左移或右移一个字符位置。S/C:位移对象选择,S/C=1时,画面位移,S/C=0时光标位移。R/L:位移方向选择,R/L=1时为右移,R/L=0时为左移。(6)功能设置(001,DL,N,F,00)该指令HD44780的初始化设置指令,单片机必须使用这条指令初始化HD44780,该指令有三个参数:DL:总线数据位数,DL=0,总线为4位,DL=1,总线为8位。N:显示屏显示行数,N=0为1行,N=1为2行。F:字符格式,F=0为5×7点阵,F=1为5×10。作者:夏路易电子工业出版所有(7)CGRAM地址设置(指令码:01A5,A4,A3,A2,A1,A0)该指令将CGRAM的6位地址码00H~3FH写入地址计数器AC内,随后单片机将对CGRAM操作。(8)DDRAM地址设置(指令码:0A6,A5,A4,A3,A2,A1,A0)该指令将DDRAM的7位地址码送入地址计数器AC内,随后单片机对DDRAM操作,DDRAM的地址范围是:N=0(1行字符)00H~4FHN=1(2行字符)第1行:00H~27H,第2行:40H~67H(9)DF与AC当单片机读操作时(RS=0,R/W=1),读出1位忙标志(BF)和7位地址计数器AC的组合,格式为:D7D6D5D4D3D2D1D0BFAC6AC5AC4AC3AC2AC1AC0其中AC的值可以是DDRAM的地址,也可以是CGRAM的地址。作者:夏路易电子工业出版所有(10)写入DDRAM或是CGRAM单片机把要写入DDRAM或CGRAM的数据写入HD44780中,需要首先写入地址设置指令,选择DDRAM或是CGRAM,然后是设置地址计数器AC的自动修改方式。(11)读取DDRAM或是CGRAM单片机读取当前AC计数值所指单元的内容。3.1602液晶与51单片机的接线1602液晶与51单片机的接线如图所示。作者:夏路易电子工业出版所有8.3.351单片机控制1602液晶显示例题

[例题8-7]本例的程序是51单片机向1602液晶写入两屏数据。数据总线连接51单片机的P0口,控制引脚RS(L_RS)连接P2_0,R/W(L_RW)连接P2_1,E(L_EP)连接P2_2。单片机时钟频率11.0592MHz。源程序如下:#include<AT89X51.H>#include<intrins.h>//具有_nop_()函数的库文件typedefunsignedcharzj;//重定义数据类型zj为无符号字符型sbitL_RS=P2^0;//定义控制信号L_RS连接的引脚sbitL_RW=P2^1;//定义控制信号L_RW连接的引脚sbitL_EP=P2^2;//定义控制信号L_EP(E)连接的引脚zjcodedis1[]={"shanxitaiyuan"};//写入液晶的字符串数组zjcodedis2[]={"TYUTAuto.Dept."};//写入液晶的字符串数组zjcodedis3[]={"0123456789abcdef"};//写入液晶的字符串数组zjcodedis4[]={"file:yj1602zz1."};//写入液晶的字符串数组delay(intms)//延时函数{inti;while(ms--){for(i=0;i<250;i++){_nop_();_nop_();_nop_();_nop_();}//_nop_()空操作}}作者:夏路易电子工业出版所有bityj_bz()//测试液晶忙状态检测函数,返回“位”类型{bitresult;L_RS=0;L_RW=1;L_EP=1;_nop_();_nop_();_nop_();_nop_();result=(bit)(P0&0x80);//将P0口的最高位取出,并强制为位类型L_EP=0;returnresult;//返回液晶忙标志}yj_wcmd(zjcmd)//向LCD写入指令函数{while(yj_bz());//当忙等待L_RS=0;L_RW=0;L_EP=0;_nop_();_nop_();P0=cmd;//将命令写入P0口_nop_();_nop_();_nop_();_nop_();L_EP=1;_nop_();_nop_();_nop_();_nop_();L_EP=0;}yj_pos(zjpos)//设定字符显示位置函数{yj_wcmd(pos|0x80);//调用写命令函数,写入位置值}作者:夏路易电子工业出版所有yj_wdat(zjdat)//向LCD写入字符(一个字节数据)函数{while(yj_bz());L_RS=1;L_RW=0;L_EP=0;P0=dat;//将显示数据写入P0口_nop_();_nop_();_nop_();_nop_();L_EP=1;_nop_();_nop_();_nop_();_nop_();L_EP=0;}yj_init()//软件初始化函数{yj_wcmd(0x38);//16*2显示,5*7点阵,8位数据,(001,DL=1,N=0,F=0,00)delay(1);yj_wcmd(0x0c);//显示开,关光标,不闪烁(0000,1,D=1,C=0,B=0)delay(1);yj_wcmd(0x06);//增量方式移动光标(0000,0,1,I/D=0,S=0)delay(1);yj_wcmd(0x01);//清除液晶的显示内容,AC与DDRAM初始化delay(1);}作者:夏路易电子工业出版所有main()//主函数{zji;//定义无符号字符变量iyj_init();//调用初始化函数,软件初始化LCDdelay(10);while(1)//无限循环{yj_wcmd(0x06);//调用写命令函数,向右移动光标(增量)yj_pos(0);//调用显示位置函数,设置显示位置为第一行的第1个字符i=0;//循环变量初始化while(dis1[i]!='\0')//如果没有遇到结束符,则显示字符"shanxitaiyuan"{yj_wdat(dis1[i]);//调用写数据函数,向液晶写字符,由于是增量方式,所以AC自动加1i++;delay(10);//设置两字符之间显示速度}yj_pos(0x40);//调用显示位置函数,设置显示位置为第二行第1个字符i=0;while(dis2[i]!='\0')//显示字符"TYUTAuto.Dept."{yj_wdat(dis2[i]);//调用写数据函数,向液晶写字符,由于是增量方式,所以AC自动加1i++;delay(10);//设置两字之间显示速度}作者:夏路易电子工业出版所有delay(300);//设置本屏的停留时间yj_wcmd(0x01);//调用写命令函数,清除液晶前1屏的显示内容delay(1);yj_wcmd(0x06);//调用写命令函数,向右移动光标yj_pos(0);//调用显示位置函数,设置显示位置为第一行的第1个字符i=0;while(dis3[i]!='\0')//显示字符"0123456789abcdef"{yj_wdat(dis3[i]);//调用写数据函数,向液晶写字符,i++;delay(10);//设置两字之间显示速度}yj_pos(0x40);//调用显示位置函数,设置显示位置为第二行的第1个字符i=0;while(dis4[i]!='\0'){yj_wdat(dis4[i]);//调用写数据函数,将字符"file:yj1602zz1."写入LCDi++;delay(10);//设置两字之间显示速度}delay(300);//设置本屏显示停留时间yj_wcmd(0x01);//调用写命令函数,清除液晶的显示内容delay(100);//控制两屏转换时间}}

作者:夏路易电子工业出版所有8.4实时时钟芯片DS13028.4.1DS1302工作原理

DS1302是低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.0V。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。采用三线接口与单片机进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302具有主电源与后备电源引脚,同时提供了对后备电源进行涓细电流充电的能力。该芯片在保留RAM数据或是时钟信息的情况下,芯片功耗很低,小于1μW。1.DS1302具有如下特点(1)对年、月、日、周日、时、分、秒进行计时,在2100年以前具有闰年补偿功能。(2)具有31x8RAM。(3)三线串行通信。(4)2.0V到5.0V的工作电压。(5)在2.0V时的工作电流小于300nA。(6)对于时钟与RAM可以进行单字节或是多字节读写。(7)8引脚DIP封装与贴片封装。(8)VCC=5V时,I/O引脚与TTL兼容。(9)工作温度为-40°Cto+85°C。作者:夏路易电子工业出版所有DS1302由电源控制、输入移位寄存器、命令与控制逻辑、振荡与分频、实时时钟与RAM等模块组成,其中输入移位寄存器用于输入和输出命令与数据,命令与控制逻辑用于解释命令并控制读写时钟与RAM的操作;振荡器产生时钟,分频成1s的脉冲后输入实时时钟模块生成秒、分、时、日期、月、星期和年。作者:夏路易电子工业出版所有该芯片有8个引脚,其中Vcc1为后备电源引脚,Vcc2为主电源引脚。在主电源关闭的情况下,后备电源也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。CE是复位/片选输入线,CE为高电平启动读写数据操作。该电阻具40k电阻下拉到地线。I/O为串行数据输入输出引脚(双向)。该引脚与地之间有40k的下拉电阻。SCLK是时钟输入引脚。该引脚有40k的下拉电阻到地。X1和X2引脚用于外接32.768kHz晶振。由于内部已经集成了6pF的电容,因此外部不需要再连接电容

作者:夏路易电子工业出版所有4.命令字节每一数据传送都需要由命令字节初始化,命令字节的最高位(位7)必须为1;位6为表示对时钟数据操作,为1表示对RAM数据操作;位1~5指定读写操作的寄存器;位0为0表示写操作,为1表示读操作;命令字节总是从最低有效位开始传送。命令字节格式如下:位76543210

1RAMA4A3A2A1A0RDCKWR5.芯片复位与时钟控制CE复位引脚有两种功能:第1是CE引脚接通控制逻辑,允许地址/命令序列送入移位寄存器;第2是CE引脚可以提供终止单字节或多字节数据的传送。当CE为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。时钟周期是下降沿跟随上升沿的序列,对于数据输入,则在时钟上升沿时数据必须有效,输出数据时,数据在时钟的下降沿输出。如果在传送过程中CE引脚置为低电平,则会终止此次数据传送,使I/O引脚变为高阻态。上电运行时,在Vcc≥2.0V之前,CE必须保持低电平。只有在SCLK为低电平时,才能将CE置为高电平作者:夏路易电子工业出版所有6.数据输入紧跟写命令字节后的8个SCLK之后的8个SCLK周期的上升沿将数据写入DS1302,数据从低位开始写入。7.数据输出紧跟写命令字节后的8个SCLK之后的8个SCLK周期的下降沿,数据从DS1302输出。输出的第1个数据位出现在写命令字节的最后1位后的第1个下降沿。作者:夏路易电子工业出版所有8.多字节方式读与写通过对地址31寻址(地址命令位1~5全为1),则可以对时钟和RAM寄存器实现多字节读写操作,又称为突发模式,同样,地址命令位6选择时钟或是RAM,而位0选择读或者写。在多字节操作方式下,不能操作地址为9~31的时钟寄存器,也不能操作地址为31的RAM寄存器。在多字节读写操作中,从地址0的0位开始。9.时钟时间与日期可以通过读DS1302的某些字节得到,通过写某些寄存器字节可以设置时间和日期,这些寄存器如表8-6所示。每个寄存器都有读地址与写地址,前七个寄存器为:秒、分、小时、日期、月、星期、年,随后是写保护寄存器和充电控制寄存器。时间和日期以BCD格式保存。小时寄存器的第7位为1,为12小时模式,位5显示AM/PM,当位5为1时,表示PM,为0时,表示AM。位7为0时是24小时模式,这时位5是小时的高位。秒寄存器的第7位,为时钟暂停位(CH),该位为1时,时钟停止,DS1302处于低功耗状态,消耗电流为100nA,该位为0时,时钟启动。控制寄存器的第7位(WP)是写保护位,该位为0才能写时钟与RAM寄存器操作,为1时,阻止写操作。上电后该位状态不定,所以需要写操作前应该先清除该位。作者:夏路易电子工业出版所有读写位7位6位5位4位3位2位1位0范围81H80HCH(暂停)秒(十位)秒(个位)00-5983H82H

分(十位)分(个位)00-5985H84H12/0小时(十位)/PM小时(十位)小时(个位)1-12/0-2387H86H00日(十位)日(个位)1-3189H88H000月(十位)月(个位)1-128BH8AH00000星期1-78DH8CH年(十位)年(个位)00-998FH8EHWP0000000—91H90HTCS3TCS2TCS1TCS0DS1DS0RS1RS0—作者:夏路易电子工业出版所有10.充电控制寄存器充电控制电路与充电控制寄存器之间的关系如下所示控制寄存器中的高4位必须是1010,才能闭合开关使能充电;位3和位2用于选择二极管,DS1、DS0=01时选择1个二极管,DS1、DS0=10时选择2个二极管,若DS1、DS0值为11或是00时,不能充电;位1和位0选择串联电阻,ROUT1、ROUT2=01时选择2k,ROUT1、ROUT2=10时选择4k,ROUT1、ROUT2=11时选择8k,若ROUT1、ROUT2=00时,不能充电。例如,选择1个二极管,选择4k电阻,则寄存器内容应该为10100110=a6H。作者:夏路易电子工业出版所有作者:夏路易电子工业出版所有8.4.2实际使用DS1302的例题

[例题8-10]检查DS1302芯片是否工作。当DS1302芯片与51单片机连接后,使用如下简单程序可以检测DS1302是否工作。当DS1302正常工作时,可以在数码管上看到秒值增加。DS1302与51单片机的接线如下所示。作者:夏路易电子工业出版所有源程序如下:#include<reg51.h>//该例从P0和P1输出秒信号sbitiow=P3^5;//定义数据引脚sbitwce=P3^6;//定义复位/使能引脚sbitwclk=P3^7;//定义时钟引脚sbita0=ACC^0;//累加器各位定义sbita1=ACC^1;sbita2=ACC^2;sbita3=ACC^3;sbita4=ACC^4;sbita5=ACC^5;sbita6=ACC^6;sbita7=ACC^7;voidwr_ds1302(unsignedchardd)//向DS1302写入一个字节的函数{ACC=dd;//将命令与数据送到累加器iow=a0;wclk=1;wclk=0;//将欲写位放在iow引脚,然后产生时钟上升沿,向DS1302写入一个位a0iow=a1;wclk=1;wclk=0;iow=a2;wclk=1;wclk=0;iow=a3;wclk=1;wclk=0;iow=a4;wclk=1;wclk=0;iow=a5;wclk=1;wclk=0;iow=a6;wclk=1;wclk=0;iow=a7;wclk=1;wclk=0;}作者:夏路易电子工业出版所有unsignedcharrd_ds1302(void)//从DS1302读出一个字节的函数{iow=1;//使iow引脚输出1,成为输入引脚a0=iow;//从DS1302读出一个位a0wclk=1;wclk=0;a1=iow;//使时钟引脚产生下降沿,然后,将DS1302输出的位赋予a1wclk=1;wclk=0;a2=iow;wclk=1;wclk=0;a3=iow;wclk=1;wclk=0;a4=iow;wclk=1;wclk=0;a5=iow;wclk=1;wclk=0;a6=iow;wclk=1;wclk=0;a7=iow;//读出位a7return(ACC);//返回累加器中的内容}unsignedcharread_clock(unsignedcharord)//从DS1302芯片中某地址读出一个字节数据{unsignedchardd=0;wclk=0;//初始化DS1302wce=0;wce=1;wr_ds1302(ord);//向DS1302写入命令dd=rd_ds1302();//从DS1302读出一个字节数据wce=0;//结束操作wclk=1;return(dd);}作者:夏路易电子工业出版所有voidwrite_clock(unsignedcharord,unsignedchardd)//向DS1302中某地址写入一个字节的函数{wclk=0;//初始化DS1302wce=0;wce=1;wr_ds1302(ord);//向DS1302写入命令wr_ds1302(dd);//向DS1302写入数据wce=0;//结束操作wclk=1;}unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xA1,0x86,0x8e};//数码管译码数组作者:夏路易电子工业出版所有voidmain(void)//主函数{unsignedcharaddress,d,temp1,xs1,xs2;address=0;d=0x00;write_clock(0x8e|address,d);//清除写保护位WPaddress=0;d=0x7f;write_clock(0x80|address,d);//秒寄存器位7清0,启动DS

温馨提示

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

评论

0/150

提交评论