




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、液晶显示屏1602的使用一、LCD1602显示字符'A'斧头帮2010-05-10Proteus仿真图+5V二小:U1C3lOuPl.7P37/RDPI.8IP3.&WRPI.5F3.5/T1PI.4稣血PI.3P5.3XLLILPI.2P3.2/IUTDP1.1P3.im<DPIjOP3IVRXDAT89C51F27/ZM5反P工&闺4F25/13ale?1.4/AJ2PS&lP2.3/AJ1Fg,刖P2.1/9pzm用RSTPD7AAD7PQ.&MPQ.52P口.*D4XTAL2PD.3/ABPO.2/02P0.1/AJ1KTNJ叩.M
2、OiaFOBTOT宣巴-38TOT疝FBGND说明:,一:(1)R2-R9为上拉电阻,:“力液晶模块的胃脚3接地一:设计:篙头帮3Hfi:2dib:05io:#include<reg51.h>#include<intrins.h> sbit RS=P2A0;sbit RW=P2A1;sbit E=P2A2;sbit BF=P0A7;C程序:/*实例81:用LCD显示字符'A'*/包含单片机寄存器的头文件包含_nop_()函数定义的头文件寄存器选择位,将RS位定义为P2.0引脚读写选择位,将RW位定义为P2.1引脚使能信号位,将E位定义为P2.2引脚忙碌标
3、志位,将BF位定义为P0.7引脚/*函数功能:延时1ms(3j+2)*i=(3X33+2)X10=1010(微秒),可以认为是1毫秒*voiddelay1ms()unsignedchari,j;for(i=0;i<10;i+)for(j=0;j<33;j+)/*函数功能:延时若干毫秒入口参数:n*/voiddelay(unsignedcharn)unsignedchari;for(i=0;i<n;i+)delay1ms();/*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/unsignedcharBusyTest(vo
4、id)bitresult;RS=0;RW=1;E=1;_nop_();_nop_();_nop_();_nop_();result=BF;E=0;returnresult;/根据规定,RS为低电平,RW为高电平时,可以读状态/E=1,才允许读写/空操作/空操作四个机器周期,给硬件反应时间/将忙碌标志电平赋给result/*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/voidWriteInstruction(unsignedchardictate)while(BusyTest()=1);/如果忙就等待RS=0;/根据规定,RS和R/W同时为低电平时,可以写入指令RW
5、=0;E=0;/E置低电平(根据表8-6,写指令时,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_();/空操作两个机器周期,给硬件反应时间P0=dictate;/将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=1;/E置高电平_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=0;/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:指定字符显示的实际地址入口参数:x*/voidWri
6、teAddress(unsignedcharx)WriteInstruction(x|0x80);/显示位置的确定方法规定为"80H+地址码x"/*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/voidWriteData(unsignedchary)while(BusyTest()=1);RS=1;/RS为高电平,RW为低电平时,可以写入数据RW=0;E=0;/E置低电平(根据表8-6,写指令时,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置"0"P0=y;/将数据送入P0口,即将数据写入液晶模块_nop_()
7、;_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=1;/E置高电平_nop_();_nop_();_nop_();_nop_();E=0;/空操作四个机器周期,给硬件反应时间/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:对LCD的显示模式进行初始化设置*/voidLcdInitiate(void)delay(15);WriteInstruction(0x38);delay(5);/延时5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstr
8、uction(0x0f);delay(5);WriteInstruction(0x06);delay(5);WriteInstruction(0x01);延时15ms,首次写指令时应给LCD一段较长的反应时间显示模式设置:16X2显示,5X7点阵,8位数据接口/显示模式设置:显示开,有光标,光标闪烁/显示模式设置:光标右移,字符不移/清屏幕指令,将以前的显示内容清除/主函数/调用LCD 初始化函数/ 将显示地址指定为第1 行第 8 列/将字符常量'A' 写入液晶模块/字符的字形点阵读出和显示由液晶模块自动完成delay(5);voidmain(void)LcdInitiate(
9、);WriteAddress(0x07);WriteData('A');while(1);LCD1602循环右移显示字符串斧头帮2010-05-10Proteus仿真图:-101-101101+52+5Va.,|>->-X!-XmJ_1_LXPRI-J好R6R7啊R9-KL.CD1602-*11R1:%:GND31::s+qQ:Pl.7P3橱PI.5P3.附服PI5P3.57HF1.4P3.4/1DIPI.3P3.3ZINI1Pl.2P3.2/ITOPIIP3,IXDDF1.DP:3.D/R3(DAT09C51P2.7/A15P267A14EAP2.5/A13AlF
10、F2,42PSBJP2.3/A11IP2.2/A1DIP1AMR3JW8RSTFO7/5D7PC5/05POKT/MJPDWMP0.2/D2F0.1/5D1&XTAL1poo/fioaLM',翡2sirFffi-3«PDS¥PH*PIE-PCI-PW-WeiconetoChina啰观覆山858S388BEU-点明."'"(1求9为土拉电阻:一C2)液晶榄块的引脚3接地口设计一:舁头帮日期:2CH0j05b#include<reg51.h>#include<intrins.h> sbit RS=P2A0;sb
11、it RW=P2A1;sbit E=P2A2;sbit BF=P0A7;C程序:用LCD循环右移显示"WelcometoChina"包含单片机寄存器的头文件包含_nop_()函数定义的头文件寄存器选择位,将RS位定义为P2.0引脚读写选择位,将RW位定义为P2.1引脚使能信号位,将E位定义为P2.2引脚忙碌标志位,将BF位定义为P0.7引脚unsignedcharcodestring="WelcometoChina"/*函数功能:延时1ms(3j+2)*i=(3X33+2)X10=1010(微秒),可以认为是1毫秒*/voiddelay1ms()unsi
12、gnedchari,j;for(i=0;i<10;i+)for(j=0;j<33;j+)J/*函数功能:延时若干毫秒入口参数:n*/voiddelay(unsignedcharn)unsignedchari;for(i=0;i<n;i+)delay1ms();/*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/unsignedcharBusyTest(void)bitresult;RS=0;/根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1;/E=1,才允许读写_nop_();/空操作_nop_();_
13、nop_();_nop_();/空操作四个机器周期,给硬件反应时间result=BF;/将忙碌标志电平赋给resultE=0;returnresult;/*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/voidWriteInstruction(unsignedchardictate)while(BusyTest()=1);/如果忙就等待RS=0;/根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0;/E置低电平(根据表8-6,写指令时,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_();/空操
14、作两个机器周期,给硬件反应时间P0=dictate;/将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=1;/E置高电平_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=0;/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:指定字符显示的实际地址入口参数:x*/*voidWriteAddress(unsignedcharx)WriteInstruction(x|0x80);/显示位置的确定方法规定为"80H+地址码x"/
15、*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/voidWriteData(unsignedchary)while(BusyTest()=1);RS=1;/RS为高电平,RW为低电平时,可以写入数据RW=0;E=0;/E置低电平(根据表8-6,写指令时,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置"0"P0=y;/将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=1;/E置高电平_nop_();_nop_();_nop_();_nop_(
16、);/空操作四个机器周期,给硬件反应时间E=0;/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:对LCD的显示模式进行初始化设置*/voidLcdInitiate(void)delay(15);WriteInstruction(0x38);delay(5);/延时5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction(0x0f);delay(5);WriteInstruction(0x06);delay(5);WriteInstruction(0x01);延时15ms
17、,首次写指令时应给LCD一段较长的反应时间显示模式设置:16X2显示,5X7点阵,8位数据接口/显示模式设置:显示开,有光标,光标闪烁/显示模式设置:光标右移,字符不移/清屏幕指令,将以前的显示内容清除delay(5);voidmain(void)unsignedchari;LcdInitiate();delay(10);while(1)/主函数/调用LCD初始化函数清显示:清屏幕指令/ 设置显示位置为第一行的第5 个字/ 显示字符WriteInstruction(0x01);/WriteAddress(0x00);i=0;while(stringi!='0')WriteDat
18、a(stringi);i+;delay(150);while(1);for(i=0;i<4;i+)delay(250);、LCD1602显示随机数检测结果斧头帮2010-05-10LCD1602 +5V :4 :Proteus仿真图:faitResult0294,0R2R引IR4R5R6R7RERS-白;:E.日-:B自-0+5V;出:温mkwjaMJ'!=Prr.rt.?'.1.R1.P3.7WP1.7P.6P3.&VI.IF:P1.-5P3.5A1P.4P3.4HDP.3P3.3£LH11P1.2P3.叫HIDIP.1P3.1/TXDP1.0AT89
19、C51P5.D/RKDP2.77ZWEAP2.6/A14P2/AI3ALEP上期向2P问RST5CTALZMALIP2.37jftllP2.2/AI0Rfl/M咫,WMPO.7/07Pt)即处PO.5/05P0.4/W4ro3/03FCPO.VOIpo.0/m1,t3nr-2131"3«值小.Tk'TIT'L:U11.g.-33m“FEEas叩4pQj37PEE注FU1SPBR',京GND猊骈:二:二二二:二(1)R2-R9为上拉电阻;,“液息默觥艇接地.设计一:王东锋,日第:200B.07.16#include<reg51.h>#inc
20、lude<stdlib.h>#include<intrins.h> sbit RS=P2A0;sbit RW=P2A1;sbit E=P2A2;sbit BF=P0A7;C程序:用LCD显示适时检测随机数结果包含单片机寄存器的头文件包含随机函数rand()的定义文件包含_nop_()函数定义的头文件寄存器选择位,将RS位定义为P2.0引脚读写选择位,将RW位定义为P2.1引脚使能信号位,将E位定义为P2.2引脚忙碌标志位,将BF位定义为P0.7引脚unsignedcharcodedigit="0123456789"定义字符数组显示数字unsigned
21、charcodestring尸"TestResult"定义字符数组显示提示信息/*函数功能:延时1ms(3j+2)*i=(3X33+2)X10=1010(微秒),可以认为是1毫秒*voiddelay1ms()unsignedchari,j;for(i=0;i<10;i+)for(j=0;j<33;j+)/*函数功能:延时若干毫秒入口参数:n*/voiddelay(unsignedcharn)unsignedchari;for(i=0;i<n;i+)delay1ms();/*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;res
22、ult=0,不忙*/unsignedcharBusyTest(void)bitresult;RS=0;RW=1;E=1;_nop_();_nop_();_nop_();_nop_();result=BF;E=0;/根据规定,RS为低电平,RW为高电平时,可以读状态/E=1,才允许读写/空操作/空操作四个机器周期,给硬件反应时间/将忙碌标志电平赋给result/将E恢复低电平returnresult;/*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/voidWriteInstruction(unsignedchardictate)while(BusyTest()=1)
23、;/如果忙就等待RS=0;/根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0;/E置低电平(根据表8-6,写指令时,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_();/空操作两个机器周期,给硬件反应时间P0=dictate;/将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=1;/E置高电平_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=0;/当E由高电平跳变成低电平时,液晶
24、模块开始执行命令/*函数功能:指定字符显示的实际地址入口参数:x*/voidWriteAddress(unsignedcharx)WriteInstruction(x|0x80);/显示位置的确定方法规定为"80H+地址码x"/*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/voidWriteData(unsignedchary)while(BusyTest()=1);RS=1;/RS为高电平,RW为低电平时,可以写入数据RW=0;E=0;/E置低电平(根据表8-6,写指令时,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置&quo
25、t;0"P0=y;/将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=1;/E置高电平_nop_();_nop_();_nop_();_nop_();E=0;/空操作四个机器周期,给硬件反应时间/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:对LCD的显示模式进行初始化设置*/voidLcdInitiate(void)delay(15);WriteInstruction(0x38);延时15ms,首次写指令时应给LCD一段较长的反应时间显示模式设置:16X2显示,5X7点阵,8
26、位数据接口delay(5);WriteInstruction(0x38);/延时5ms,给硬件一点反应时间delay(5);WriteInstruction(0x38);/连续三次,确保初始化成功delay(5);WriteInstruction(0x0c);/显示模式设置:显示开,无光标,光标不闪烁delay(5);WriteInstruction(0x06);/显示模式设置:光标右移,字符不移delay(5);WriteInstruction(0x01);/清屏幕指令,将以前的显示内容清除delay(5);/*函数功能:主函数*/voidmain(void)unsignedchari;/定
27、义变量i指向字符串数组元素unsignedintx;/定义变量,储存检测结果unsignedcharD1,D2,D3,D4,D5;/分别储存采集的个位、十位、百位、千位和万位数字LcdInitiate();/调用LCD初始化函数delay(10);延时10ms,给硬件一点反应时间WriteAddress(0x02);/从第1行第3列开始显示i=0;/指向字符数组的第1个元素while(stringi!='0')WriteData(stringi);i+;/指向下字符数组一个元素while(1)/无限循环x=rand();/模拟数据采集/返回一个0到32767之间的为随机数,对r
28、and的相继调用将产生相同序列的随机数D1=x%10;LCD1602'四、LCD1602电子时钟的设计斧头帮2010-05-11Proteus仿真图:D2=(x%100)/10;D3=(x%1000)/100;D4=(x%10000)/1000;D5=x/10000;WriteAddress(0x45);WriteData(digitD5);WriteData(digitD4);WriteData(digitD3);WriteData(digitD2);WriteData('.');WriteData(digitD1);for(i=0;i<4;i+)delay(2
29、50);计算个位数字计算十位数字计算百位数字将十位数字的字符常量写入LCD将小数点的字符常量写入LCD将个位数字的字符常量写入LCD延日1s(每1s采集一次数据)延时250ms计算千位数字计算万位数字/从第2行第6列开始显示将万位数字的字符常量写入将千位数字的字符常量写入将百位数字的字符常量写入LCDLCDLCDBeiJin?Tine00S03S21源明丁:(11R2-R9为上拉电阻;'-力液篙触的引郦接地:设计:斧头帮'''日期:2310:05.i2由C3一鹭月康山SaSSSSSBPl?P3.7JRDP1JPE.欣丽P1.5P3.5/T1Pi.4F3JZIDF
30、l.3PWJZLNTlP1.2FW.2/1MIDP1.1P3-m©PIDP3,0/R®AT89C51P工打同5P2.8/AMEAP25/A1SfiLFP2用冏2PSeJP2.3/1R&TXTAL2P2.2/M0F2.0W8PD7/5O7P口加颂PD-5/WO5PU.小用:丹Plj.打心口2PD11P口.口MODC程序:/*液晶时钟设计功能:简易时钟,显示时分秒,利用中断定时器0进行时间参数的确定,每一秒并不精确等于实际一秒,误差只有几微秒到几十微秒斧头帮2010.5.11*/#include<reg51.h>#include<stdlib.h>
31、;#include<intrins.h>sbitRS=P2A0;sbitRW=P2A1;sbitE=P2A2;sbitBF=P0A7;/包含单片机寄存器的头文件/包含随机函数rand()的定义文件/包含_nop_()函数定义的头文件/寄存器选择位,将RS位定义为P2.0引脚/读写选择位,将RW位定义为P2.1引脚/使能信号位,将E位定义为P2.2引脚/忙碌标志位,将BF位定义为P0.7引脚unsignedcharcodedigit="0123456789"/定义字符数组显示数字unsignedcharcodestring="BeiJingTime&qu
32、ot;/定义字符数组显示提示信息unsignedcharcount;unsignedchars,m,h;/定义变量统计中断累计次数/定义变量储存秒、分钟和小时/*函数功能:延时1ms(3j+2)*i=(3X33+2)X10=1010(微秒),可以认为是1毫秒*/voiddelay1ms()unsignedchari,j;for(i=0;i<10;i+)for(j=0;j<33;j+)/*函数功能:延时若干毫秒入口参数:n*/voiddelay(unsignedcharn)unsignedchari;for(i=0;i<n;i+)delay1ms();/*函数功能:判断液晶模块
33、的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*unsignedcharBusyTest(void)bitresult;RS=0;/根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1;/E=1,才允许读写_nop_();/空操作_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间result=BF;/将忙碌标志电平赋给resultE=0;/将E恢复低电平returnresult;/*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/voidWriteInstruction(unsignedc
34、hardictate)while(BusyTest()=1);RS=0;RW=0;E=0;_nop_();_nop_();P0=dictate;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;/如果忙就等待/根据规定,RS和R/W同时为低电平时,可以写入指令/E置低电平(根据表8-6,写指令时,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置"0"/空操作两个机器周期,给硬件反应时间/将数据送入P0口,即写入指令或地址/空操作四个机器周期,给硬件反应时间/E置高电平/空操作四
35、个机器周期,给硬件反应时间/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:指定字符显示的实际地址入口参数:x*/voidWriteAddress(unsignedcharx)WriteInstruction(x|0x80);/显示位置的确定方法规定为"80H+地址码x"/*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/*voidWriteData(unsignedchary)while(BusyTest()=1);RS=1;/RS为高电平,RW为低电平时,可以写入数据RW=0;E=0;/E置低电平(根据表8-6,写指令时
36、,E为高脉冲,/就是让E从0到1发生正跳变,所以应先置"0"P0=y;/将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=1;/E置高电平_nop_();_nop_();_nop_();_nop_();/空操作四个机器周期,给硬件反应时间E=0;/当E由高电平跳变成低电平时,液晶模块开始执行命令/*函数功能:对LCD的显示模式进行初始化设置*IvoidLcdInitiate(void)延时15ms,首次写指令时应给 LCD 一段较长的反应时间显示模式设置:16X2显示,5X7点阵,8
37、位数据接口/延时 5ms ,给硬件一点反应时间/连续三次,确保初始化成功/显示模式设置:显示开,无光标,光标不闪烁/显示模式设置:光标右移,字符不移/清屏幕指令,将以前的显示内容清除delay(15);WriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction(0x0c);delay(5);WriteInstruction(0x06);delay(5);WriteInstruction(0x01);delay(5);/*函数功能:
38、显示小时*/voidDisplayHour()unsignedchari,j;i=h/10;j=h%10;WriteAddress(0x44);WriteData(digiti);WriteData(digitj);/取整运算,求得十位数字/取余运算,求得各位数字/写显示地址,将十位数字显示在第/将十位数字的字符常量写入/将个位数字的字符常量写入LCDLCD2行第5列/*函数功能:显示分钟*/void DisplayMinute()unsigned char i,j;i=m/10;j=m%10;WriteAddress(0x47);WriteData(digiti);WriteData(digitj);/取整运算,求得十位数字/取余运算,求得各位数字/写显示地址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑劳务清包合同
- 园林绿化工程施工合同
- 展厅装修施工合同协议书
- 中介房屋买卖合同大全年
- 医疗健康领域医疗资源分布统计表
- 导购员聘用合同协议书
- 2025年潮州货运上岗证模拟考试0题
- 2025年部编版小学三年级下册课外阅读专项复习题(有答案)
- ic芯片购销合同范本
- 制动气室市场分析及竞争策略分析报告
- 一年级美术课后辅导方案-1
- 新法律援助基础知识讲座
- 《锻造安全生产》课件
- 小学数学1-6年级(含奥数)找规律专项及练习题附详细答案
- 《同济大学简介》课件
- 《建筑摄影5构》课件
- 机电安装工程质量控制
- 爱自己是终身浪漫的开始 心理课件
- 新房房屋买卖合同
- 地铁出入口雨棚施工工艺
- 人工智能引论智慧树知到课后章节答案2023年下浙江大学
评论
0/150
提交评论