时序图看起来很复杂,其实我们只要抓住关键的几个点就可以了。根据时序图,
第一步:确定是写指令还是写数据:如果我们要向1602写命令,那么RS引脚拉低;若向1602写数据,那么RS引脚拉高;
第二步:将RW引脚拉低(写操作,若是读操作RW引脚拉高);
第三步:DB0~DB7的数据才是有效数据“Valid Data”,此时我们把数据或者指令赋值给DB0~DB7;
第四步:E引脚给一个高脉冲,持续时间tpw最小值为150ns,然后E引脚再次拉低。
通过上述四个步骤就可以对1602进行一次写操作了。由于1602时序图时间是ns级,而AT89C52单片机指令周期是us级,所以即使不在程序里加延时程序,也应该可以很好的配合1602的时序要求,不过为了液晶显示的稳定,最好加上短延时,大家可以在仿真的时候试试不同值的延时。
好了,到这里就可以开始写程序了,让1602液晶屏第一行显示“Toutiao:”,第二行显示“di ya dian qi”。
uchar code DISPLAY1[] = “Tou tiao:”; //1602液晶屏第一行显示的内容
uchar code DISPLAY2[] = “di ya dian qi”; //1602液晶屏第二行显示的内容
sbit lcd_RS = P2^0;
sbit lcd_RW = P2^1;
sbit lcd_EN = P2^2;
sfr DBPort = 0x80; //1602液晶屏8位并行口D0~D7连接单片机P0口
void delayxms(uint xms)
{
uint i,j = 0;
for(i = xms;i > 0;i–)
for(j = 110;j > 0;j–);
}
//LCD_Write函数的代码,大家要对照着时序图看就明白了。
void LCD_Write(bit style, unsigned char input)
{
lcd_RS = style;//RS高电平表示写数据,低电平表示写命令
lcd_RW = 0; //RW低电平表示写操作
nop(); //延时一个机器周期
DBPort = input; //向P0口赋值,也就是向1602的D0~D7这8位并行口赋值
nop();
lcd_EN = 1; //E引脚拉高
nop();
lcd_EN = 0; //延时之后E引脚再拉低,表示给E引脚一个高脉冲
delayxms(1);//这个延时很关键,保证向1602不断的写数据时E引脚能实现一个高脉冲
}
void LCD_Initial()
{
lcd_EN = 0;//初始化时E引脚拉低,为后续给E引脚高脉冲做好准备
LCD_Write(LCD_COMMAND,0x38); //设置16*2显示
LCD_Write(LCD_COMMAND,0x0C); //设置开显示,光标不显示且不闪烁
LCD_Write(LCD_COMMAND,0x06); //写一个字符后地址指针+1
LCD_Write(LCD_COMMAND,0x01); //显示清零,数据地址指针清零
}
void main(void)
{
uint index1,index2 = 0;//第一行和第二行要显示的内容的序号
LCD_Initial();
LCD_Write(LCD_COMMAND,0x80);//光标定位在第一行第一列
for(index1 = 0;index1 < 9;index1++)
{
LCD_Write(LCD_DATA,DISPLAY1[index1]);//依次写入“Toutiao:”
delayxms(1);//每写完一个字符后延时,使得1602显示稳定
}
LCD_Write(LCD_COMMAND,0x80+0x40);//光标定位在第二行第一列
for(index2 = 0;index2 < 13;index2++)
{
LCD_Write(LCD_DATA,DISPLAY2[index2]);//依次写入““di ya dian qi”
delayxms(1);
}
while(1);//程序死循环,1602静态显示
包裹文件病毒
包裹程序是一些常见的工具软件,它可以包裹可执行文件,减小磁盘占用空间,加快运行速度。但把一个病毒包裹后,病毒就会被保护起来,使得各种反病毒软件无法查到。已被包裹并含有病毒的可执行文件在执行时,病毒会到处传播,使用反病毒软件将病毒解除之后,被包裹的可执行文件中的病毒却保留下来,危害较大。通过特有的解包裹模块,可以即查解被包裹后的病毒,又不破坏被包裹后没有病毒的可执行文件。
Copyright 2015-2022 财富赢家网版权所有 联系邮箱:920 891 263@qq.com