完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1602液晶采用5V的电压驱动,背光电压是负压,改变这个负压可以调节显示亮度。每行可以显示16个字符可以显示两行,但不能显示汉字,内置128个字符的ASCII字符集库如图:
RAM缓冲区 液晶的控制芯片有80个字节的RAM缓冲区,第一行显示的地址为0x00-0x27,第二行地址为0x40-0x67,两行加起来刚好80个地址单元,编程控制这些地址单元的指针就可以控制你想要显示的字符的位置,其中0x 00-0x 0F是可以直接显示出来的而0x 10-0x 27这个范围内的地址要通过移屏指令才能显示出来 D0-D7的状态字 数据指针设置前面说了要控制字符具体的显示位置就要对数据指针进行设置如下 液晶初始化设置表: 写操作的时序图分析(关键)写时序图: 芯片文档:读状态:RS=L,R/W(非)=H,E=H读数据:RS=H,R/W(非)=H,E=H写指令:RS=L,R/W(非)=L,D0-D7=指令码,E=高脉冲写数据:RS=H,R/W(非)=L,D0-D7=数据,E=高脉冲呵呵,其实这些我们只要看时序图就行了,不必要强行记忆。 时序分析:当我们要向液晶写数据时,必须按照时序图来严格进行操作,从图上可以看出写数据时RS要给个高电平,RW要给个低电平,然后是把数据DB0-DB7给数据总线,从图上可以看出写数据没有严格的时间要求,再然后是给使能能端E一个上升沿,持续时间为tR,高脉冲保持的时间为tPW,最后是给E一个下降沿,持续时间为tF,然后数据总线上的数据要保持Thd2的时间才能变化(失效)RS和R/W则要保持Thd1的时间,最后写数据完成了。 TX-1C实验板与1602液晶的连接图如下: 液晶4端(写数据/写指令)接单片机的P3.5,液晶5端(读/写选择)液晶6端使能端接单片机P3.4 编程1602液晶上显示 welcome to bbs.elecfans.com程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
RAM缓冲区
液晶的控制芯片有80个字节的RAM缓冲区,第一行显示的地址为0x00-0x27,第二行地址为0x40-0x67,两行加起来刚好80个地址单元,编程控制这些地址单元的指针就可以控制你想要显示的字符的位置,其中0x 00-0x 0F是可以直接显示出来的而0x 10-0x 27这个范围内的地址要通过移屏指令才能显示出来 D0-D7的状态字 数据指针设置前面说了要控制字符具体的显示位置就要对数据指针进行设置如下 液晶初始化设置表: 写操作的时序图分析(关键)写时序图: 芯片文档:读状态:RS=L,R/W(非)=H,E=H读数据:RS=H,R/W(非)=H,E=H写指令:RS=L,R/W(非)=L,D0-D7=指令码,E=高脉冲写数据:RS=H,R/W(非)=L,D0-D7=数据,E=高脉冲呵呵,其实这些我们只要看时序图就行了,不必要强行记忆。 时序分析:当我们要向液晶写数据时,必须按照时序图来严格进行操作,从图上可以看出写数据时RS要给个高电平,RW要给个低电平,然后是把数据DB0-DB7给数据总线,从图上可以看出写数据没有严格的时间要求,再然后是给使能能端E一个上升沿,持续时间为tR,高脉冲保持的时间为tPW,最后是给E一个下降沿,持续时间为tF,然后数据总线上的数据要保持Thd2的时间才能变化(失效)RS和R/W则要保持Thd1的时间,最后写数据完成了。 TX-1C实验板与1602液晶的连接图如下: 液晶4端(写数据/写指令)接单片机的P3.5,液晶5端(读/写选择)液晶6端使能端接单片机P3.4 编程1602液晶上显示 welcome to bbs.elecfans.com程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
液晶的控制芯片有80个字节的RAM缓冲区,第一行显示的地址为0x00-0x27,第二行地址为0x40-0x67,两行加起来刚好80个地址单元,编程控制这些地址单元的指针就可以控制你想要显示的字符的位置,其中0x 00-0x 0F是可以直接显示出来的而0x 10-0x 27这个范围内的地址要通过移屏指令才能显示出来 D0-D7的状态字
数据指针设置前面说了要控制字符具体的显示位置就要对数据指针进行设置如下 液晶初始化设置表: 写操作的时序图分析(关键)写时序图: 芯片文档:读状态:RS=L,R/W(非)=H,E=H读数据:RS=H,R/W(非)=H,E=H写指令:RS=L,R/W(非)=L,D0-D7=指令码,E=高脉冲写数据:RS=H,R/W(非)=L,D0-D7=数据,E=高脉冲呵呵,其实这些我们只要看时序图就行了,不必要强行记忆。 时序分析:当我们要向液晶写数据时,必须按照时序图来严格进行操作,从图上可以看出写数据时RS要给个高电平,RW要给个低电平,然后是把数据DB0-DB7给数据总线,从图上可以看出写数据没有严格的时间要求,再然后是给使能能端E一个上升沿,持续时间为tR,高脉冲保持的时间为tPW,最后是给E一个下降沿,持续时间为tF,然后数据总线上的数据要保持Thd2的时间才能变化(失效)RS和R/W则要保持Thd1的时间,最后写数据完成了。 TX-1C实验板与1602液晶的连接图如下: 液晶4端(写数据/写指令)接单片机的P3.5,液晶5端(读/写选择)液晶6端使能端接单片机P3.4 编程1602液晶上显示 welcome to bbs.elecfans.com程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
前面说了要控制字符具体的显示位置就要对数据指针进行设置如下
液晶初始化设置表: 写操作的时序图分析(关键)写时序图: 芯片文档:读状态:RS=L,R/W(非)=H,E=H读数据:RS=H,R/W(非)=H,E=H写指令:RS=L,R/W(非)=L,D0-D7=指令码,E=高脉冲写数据:RS=H,R/W(非)=L,D0-D7=数据,E=高脉冲呵呵,其实这些我们只要看时序图就行了,不必要强行记忆。 时序分析:当我们要向液晶写数据时,必须按照时序图来严格进行操作,从图上可以看出写数据时RS要给个高电平,RW要给个低电平,然后是把数据DB0-DB7给数据总线,从图上可以看出写数据没有严格的时间要求,再然后是给使能能端E一个上升沿,持续时间为tR,高脉冲保持的时间为tPW,最后是给E一个下降沿,持续时间为tF,然后数据总线上的数据要保持Thd2的时间才能变化(失效)RS和R/W则要保持Thd1的时间,最后写数据完成了。 TX-1C实验板与1602液晶的连接图如下: 液晶4端(写数据/写指令)接单片机的P3.5,液晶5端(读/写选择)液晶6端使能端接单片机P3.4 编程1602液晶上显示 welcome to bbs.elecfans.com程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
写操作的时序图分析(关键)写时序图: 芯片文档:读状态:RS=L,R/W(非)=H,E=H读数据:RS=H,R/W(非)=H,E=H写指令:RS=L,R/W(非)=L,D0-D7=指令码,E=高脉冲写数据:RS=H,R/W(非)=L,D0-D7=数据,E=高脉冲呵呵,其实这些我们只要看时序图就行了,不必要强行记忆。 时序分析:当我们要向液晶写数据时,必须按照时序图来严格进行操作,从图上可以看出写数据时RS要给个高电平,RW要给个低电平,然后是把数据DB0-DB7给数据总线,从图上可以看出写数据没有严格的时间要求,再然后是给使能能端E一个上升沿,持续时间为tR,高脉冲保持的时间为tPW,最后是给E一个下降沿,持续时间为tF,然后数据总线上的数据要保持Thd2的时间才能变化(失效)RS和R/W则要保持Thd1的时间,最后写数据完成了。 TX-1C实验板与1602液晶的连接图如下: 液晶4端(写数据/写指令)接单片机的P3.5,液晶5端(读/写选择)液晶6端使能端接单片机P3.4 编程1602液晶上显示 welcome to bbs.elecfans.com程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
写时序图:
芯片文档:读状态:RS=L,R/W(非)=H,E=H读数据:RS=H,R/W(非)=H,E=H写指令:RS=L,R/W(非)=L,D0-D7=指令码,E=高脉冲写数据:RS=H,R/W(非)=L,D0-D7=数据,E=高脉冲呵呵,其实这些我们只要看时序图就行了,不必要强行记忆。 时序分析:当我们要向液晶写数据时,必须按照时序图来严格进行操作,从图上可以看出写数据时RS要给个高电平,RW要给个低电平,然后是把数据DB0-DB7给数据总线,从图上可以看出写数据没有严格的时间要求,再然后是给使能能端E一个上升沿,持续时间为tR,高脉冲保持的时间为tPW,最后是给E一个下降沿,持续时间为tF,然后数据总线上的数据要保持Thd2的时间才能变化(失效)RS和R/W则要保持Thd1的时间,最后写数据完成了。 TX-1C实验板与1602液晶的连接图如下: 液晶4端(写数据/写指令)接单片机的P3.5,液晶5端(读/写选择)液晶6端使能端接单片机P3.4 编程1602液晶上显示 welcome to bbs.elecfans.com程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
芯片文档:
读状态:RS=L,R/W(非)=H,E=H
读数据:RS=H,R/W(非)=H,E=H
写指令:RS=L,R/W(非)=L,D0-D7=指令码,E=高脉冲
写数据:RS=H,R/W(非)=L,D0-D7=数据,E=高脉冲
呵呵,其实这些我们只要看时序图就行了,不必要强行记忆。
时序分析:
当我们要向液晶写数据时,必须按照时序图来严格进行操作,从图上可以看出写数据时RS要给个高电平,RW要给个低电平,然后是把数据DB0-DB7给数据总线,从图上可以看出写数据没有严格的时间要求,再然后是给使能能端E一个上升沿,持续时间为tR,高脉冲保持的时间为tPW,最后是给E一个下降沿,持续时间为tF,然后数据总线上的数据要保持Thd2的时间才能变化(失效)RS和R/W则要保持Thd1的时间,最后写数据完成了。 TX-1C实验板与1602液晶的连接图如下:
液晶4端(写数据/写指令)接单片机的P3.5,液晶5端(读/写选择)液晶6端使能端接单片机P3.4 编程1602液晶上显示 welcome to bbs.elecfans.com程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
液晶4端(写数据/写指令)接单片机的P3.5,
液晶5端(读/写选择)
液晶6端使能端接单片机P3.4
编程1602液晶上显示 welcome to
bbs.elecfans.com
程序如下(代码摘自《新概念51单片机》上的,不同的实验板程序有差别):
#include #define uchar unsigned char #define uint unsigned int uchar code table[]="welcome to "; uchar code table1[]="bbs.elecfans.com"; ***it lcden=P3^4; //液晶使能端E ***it lcdrs=P3^5; //液晶数据命令选择端RS ***it dula=P2^6; //申明U1锁存器的锁存端-用来关闭数码管的显示 ***it wela=P2^7; //申明U2锁存器的锁存端-用来关闭数码管的显示 uchar num; void delay(uint z) //延时操作,延时Zms,这里的晶振是11.0592MHZ,不同的晶振延时时间不同。 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) //写指令的操作 { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) //写数据 { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() //初始化操作(查询datasheet看赋什么值) { dula=0; wela=0; lcden=0; write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } void main() { init(); write_com(0x80); for(num=0;num<11;num++) //显示要写入的字符 { write_data(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table1[num]); delay(5); } while(1); //字符显示完了停在这 }
因为单片机的P0口既接了数码管又接了液晶的数据口,操作P0口时数码管会变化,因此定义了锁存端用来将数码管显示关闭。 仿真效果: 1602液晶文档: 附件.rar (839.46 KB, 下载次数: 146 ) 4
举报
胡秋阳
5loveforever5
北纬的尾
何生
1652886614.021700
xiaobin
张博
dapigu1
180244
happywzb
cfhfff
╰☆鎏曐┈→
圣经00001
LG_myth
陶剑宇
侯远贵
发布
求助论坛内各位大佬给准实习生出出招
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
PWM停止输出,什么原因会导致这种现象发生?
1306 浏览 2 评论
ESP32-S3 工具链+环境配置的最终步骤清单
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
电子发烧友网
电子发烧友论坛
查看 »
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:21 , Processed in 1.008421 second(s), Total 73, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com