20121113-1602液晶测试程序1

来源:互联网 发布:cf232网络异常怎么解决 编辑:程序博客网 时间:2024/05/07 16:08

本文所用程序均来源于网络,本人只是进行了验证与学习。尊重原作者。

 

 

 

程序如下:

 

#include <REGX52.H>#define LCD_DB P0sbit LCD_RS=P2^2;sbit LCD_RW=P2^3;sbit LCD_E=P2^4;//函数定义#define uchar unsigned char#define uint unsigned intvoid LCD_init(void);//初始化void LCD_write_command(uchar command);//写指令void LCD_write_data(uchar dat);//写数据void LCD_disp_char(uchar x,uchar y,uchar dat);//显示位置,X(0-16),y(1-2)void delay_n40us(uint n);//延时void LCD_init(void)//初始化{LCD_write_command(0x01);//清除屏幕显示LCD_write_command(0x3c);//设置8位格式,2行,5x7?LCD_write_command(0x0c);//整体显示,关光标,不闪烁?LCD_write_command(0x06);//设定输入方式,增量不移位delay_n40us(100);}void LCD_write_command(uchar dat)//写指令{LCD_DB=dat;LCD_RS=0;//指令LCD_RW=0;//写入LCD_E=1;//允许LCD_E=0;delay_n40us(5);}void LCD_write_data(uchar dat)//写数据{LCD_DB=dat;LCD_RS=1;//数据LCD_RW=0;//写入LCD_E=1;//允许LCD_E=0;delay_n40us(5);}void LCD_disp_char(uchar x,uchar y,uchar dat)//显示一个字符{uchar address;if(y==0)address=0x80+x;elseaddress=0xc0+x;LCD_write_command(address);LCD_write_data(dat);}void delay_n40us(uint n)//延时函数{uchar j;for(n=n;n>0;n--)for(j=0;j<2;j++);}//主函数void main(void){char a;char b[16]="123456789abcdeef";char c[16]="ABCDEFGHIGKLMNOP";delay_n40us(200);LCD_init();for(a=0;a<16;a++){LCD_disp_char(a,0,b[a]);LCD_disp_char(a,1,c[a]);}while(1);}


原创粉丝点击