编制综合网站平台的公司排名,wordpress标签选项卡,图片本地化wordpress,网站分为哪些类型一、初识LCD1602
1.LCD1602是一种工业字符型液晶#xff0c;能够同时显示 1602 即 32 字符(16列两行)。 2.引脚说明 二、显示逻辑
1.搞明白在哪里显示#xff08;地址#xff09;#xff1f;显示什么#xff08;内容#xff09;#xff1f; 在哪里显示 显示什么 三、…一、初识LCD1602
1.LCD1602是一种工业字符型液晶能够同时显示 16×02 即 32 字符(16列两行)。 2.引脚说明 二、显示逻辑
1.搞明白在哪里显示地址显示什么内容 在哪里显示 显示什么 三、时序分析
1.写操作时序 1RS1:写内容RS0:写地址;
2 RW 0写操作;
3E从低电平上升到高电平这个过程中延时25ns,然后高电平持续150ns最后从高电平下降到低电平这个过程中延时25ns延时时间可以用_nop_()函数代替。 2.读操作时序 1RS通过指令9可知RS0;
2RW1:读操作;
3E:从低电平上升到高电平这个过程中延时25ns,然后高电平持续150ns最后从高电平下降到低电平这个过程中延时25ns延时时间可以用_nop_()函数代替。
四、代码示例
1.编程实现LCD1602显示字符C
#include reg52.h
#include intrins.h#define databuffer P0//定义8位数据线P0端口组sbit RS P1^0;
sbit RW P1^1;
sbit EN P1^4;void Check_Busy()
{char tmp 0x80;databuffer 0x80;while(tmp 0x80){//比较最高位RS 0;RW 1;EN 0;_nop_();EN 1;_nop_();_nop_();tmp databuffer;EN 0;_nop_();}
}void Write_Cmd_Func(char cmd)//写指令RS低电平
{Check_Busy();RS 0;RW 0;EN 0;_nop_();//空函数延时1usdatabuffer cmd;_nop_();EN 1;_nop_();_nop_();EN 0;_nop_();
}void Write_Data_Func(char cmd)//写数据RS高电平
{Check_Busy();RS 1;RW 0;EN 0;_nop_();//空函数延时1usdatabuffer cmd;_nop_();EN 1;_nop_();_nop_();EN 0;_nop_();
}void Delay15ms() //11.0592MHz
{unsigned char i, j;i 27;j 226;do{while (--j);} while (--i);
}void Delay5ms() //11.0592MHz
{unsigned char i, j;i 9;j 244;do{while (--j);} while (--i);
}void LCD1602_Init()
{//1.延时15msDelay15ms();//2.写指令38H不检测忙信号Write_Cmd_Func(0x38);//3.延时5msDelay5ms();//4.以后每次写指令读/写数据操作均需要检测忙信号//5.写指令38H显示模式设置Write_Cmd_Func(0x38);//6.写指令08H显示关闭Write_Cmd_Func(0x08);//7.写指令01H显示清屏Write_Cmd_Func(0x01);//8.写指令06H显示光标移动设置Write_Cmd_Func(0x06);//9.写指令0CH:显示开及光标设置Write_Cmd_Func(0x0c);
}void main()
{char pposition 0x80 0x05;char dataShow C;LCD1602_Init();Write_Cmd_Func(pposition);//要显示的地址Write_Data_Func(dataShow);//要显示的内容
} 2.编程实现LCD1602显示一行
#include reg52.h
#include intrins.h#define databuffer P0//定义8位数据线P0端口组sbit RS P1^0;
sbit RW P1^1;
sbit EN P1^4;void Check_Busy()
{char tmp 0x80;databuffer 0x80;while(tmp 0x80){//比较最高位RS 0;RW 1;EN 0;_nop_();EN 1;_nop_();_nop_();tmp databuffer;EN 0;_nop_();}
}void Write_Cmd_Func(char cmd)//写指令RS低电平
{Check_Busy();RS 0;RW 0;EN 0;_nop_();//空函数延时1usdatabuffer cmd;_nop_();EN 1;_nop_();_nop_();EN 0;_nop_();
}void Write_Data_Func(char cmd)//写数据RS高电平
{Check_Busy();RS 1;RW 0;EN 0;_nop_();//空函数延时1usdatabuffer cmd;_nop_();EN 1;_nop_();_nop_();EN 0;_nop_();
}void Delay15ms() //11.0592MHz
{unsigned char i, j;i 27;j 226;do{while (--j);} while (--i);
}void Delay5ms() //11.0592MHz
{unsigned char i, j;i 9;j 244;do{while (--j);} while (--i);
}void LCD1602_Init()
{//1.延时15msDelay15ms();//2.写指令38H不检测忙信号Write_Cmd_Func(0x38);//3.延时5msDelay5ms();//4.以后每次写指令读/写数据操作均需要检测忙信号//5.写指令38H显示模式设置Write_Cmd_Func(0x38);//6.写指令08H显示关闭Write_Cmd_Func(0x08);//7.写指令01H显示清屏Write_Cmd_Func(0x01);//8.写指令06H显示光标移动设置Write_Cmd_Func(0x06);//9.写指令0CH:显示开及光标设置Write_Cmd_Func(0x0c);
}void LCD1602_showLine(char row,char col,char *string)
{switch(row){case 1:Write_Cmd_Func(0x80col);while(*string){Write_Data_Func(*string);string;}break;case 2:Write_Cmd_Func(0x800x40col);while(*string){Write_Data_Func(*string);string;}break;}
}void main()
{char pposition 0x80 0x05;LCD1602_Init();LCD1602_showLine(1,5,NO.1);LCD1602_showLine(2,2,Hello China);
}