LCD1602液晶顯示屏的入門級應用(一)
阿新 • • 發佈:2019-02-02
sbit rs=P2^6; //1602的資料/指令選擇控制線
sbit rw=P2^5; //1602的讀寫控制線
sbit en=P2^7; //1602的使能控制線
/*P0口接1602的D0~D7*/
uchar code table[]="1234"; //要顯示的內容放入陣列table
void delay(uint n) //延時函式
{
uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
void lcd_wcom(uchar com) //1602寫命令函式
{
rs=0; //選擇指令暫存器
rw=0; //選擇寫
P0=com; //把命令字送入P2
delay(5); //延時一小會兒,讓1602準備接收資料
en=1; //使能線電平變化,命令送入1602的8位資料口
en=0;
}
void lcd_wdat(uchar dat) //1602寫資料函式
{
rs=1; //選擇資料暫存器
rw=0; //選擇寫
P0=dat; //把要顯示的資料送入P2
delay(5); //延時一小會兒,讓1602準備接收資料
en=1; //使能線電平變化,資料送入1602的8位資料口
en=0;
}
void lcd_init() //1602初始化函式
{
lcd_wcom(0x38); //8位資料,雙列,5*7字形
lcd_wcom(0x0c); //開啟顯示屏,關游標,游標不閃爍
lcd_wcom(0x06); //顯示地址遞增,即寫一個數據後,顯示位置右移一位
lcd_wcom(0x01); //清屏
}
void main() //主函式
{
uchar m=0;
lcd_init(); //液晶初始化
lcd_wcom(0x80); //顯示地址設為80H(即00H,)上排第一位
for(m=0;m<4;m++) //將table[]中的資料依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(200);
}
while(1); //動態停機
sbit rw=P2^5; //1602的讀寫控制線
sbit en=P2^7; //1602的使能控制線
/*P0口接1602的D0~D7*/
uchar code table[]="1234"; //要顯示的內容放入陣列table
void delay(uint n) //延時函式
{
uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
void lcd_wcom(uchar com) //1602寫命令函式
{
rs=0; //選擇指令暫存器
rw=0; //選擇寫
P0=com; //把命令字送入P2
delay(5); //延時一小會兒,讓1602準備接收資料
en=1; //使能線電平變化,命令送入1602的8位資料口
en=0;
}
void lcd_wdat(uchar dat) //1602寫資料函式
{
rs=1; //選擇資料暫存器
rw=0; //選擇寫
P0=dat; //把要顯示的資料送入P2
delay(5); //延時一小會兒,讓1602準備接收資料
en=1; //使能線電平變化,資料送入1602的8位資料口
en=0;
}
void lcd_init() //1602初始化函式
{
lcd_wcom(0x38); //8位資料,雙列,5*7字形
lcd_wcom(0x0c); //開啟顯示屏,關游標,游標不閃爍
lcd_wcom(0x06); //顯示地址遞增,即寫一個數據後,顯示位置右移一位
lcd_wcom(0x01); //清屏
}
void main() //主函式
{
uchar m=0;
lcd_init(); //液晶初始化
lcd_wcom(0x80); //顯示地址設為80H(即00H,)上排第一位
for(m=0;m<4;m++) //將table[]中的資料依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(200);
}
while(1); //動態停機