?? 1602c.c.bak
字號:
#include<ADI/ADuC834.h> //包含頭文件,這個嘛,就不用多說了~~
#define uint unsigned int //預定義一下
#define uchar unsigned char
sbit rs=P2^3; //1602的數據/指令選擇控制線
sbit rw=P2^4; //1602的讀寫控制線
sbit en=P2^5; //1602的使能控制線
/*P2口接1602的D0~D7,注意不要接錯了順序,我以前可在這上面吃過虧~*/
uchar n,m,TCcount=0;
uchar code table[]="LCD1602 check ok"; //要顯示的內容1放入數組tablel
uchar code table1[]="study up"; //要顯示的內容2放入數組table1
void delay(uint n) //延時函數
{
uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
//中斷初始化**************************************************************************************
void sys_init(void)
{
ET0=1;
EA=1;
}
//定時計數器初始化**************************************************************************************
void TC_init(void)
{
TMOD|=0x01;
TH0=0;
TL0=0;
TR0=1;
}
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(0x0F); //開啟顯示屏,關光標,光標不閃爍
lcd_wcom(0x06); //顯示地址遞增,即寫一個數據后,顯示位置右移一位
lcd_wcom(0x01); //清屏
}
void T0_int() interrupt 1 //定時器0中斷
{
ET0=0;
TH0=0;
TL0=0;
TCcount++;
if(TCcount==10)
{
lcd_wcom(0x80);
for(n=0;n<8;n++) //將table1[]中的數據依次寫入1602顯示
{
lcd_wdat(table1[n]);
delay(1);
}
}
if(TCcount==20)
{
lcd_wcom(0x80+0x44);
for(m=0;m<16;m++) //將table[]中的數據依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(1);
}
}
if(TCcount==30)
{
lcd_wcom(0x80);
for(m=0;m<16;m++) //將table[]中的數據依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(1);
}
}
if(TCcount==40)
{
TCcount=0;
lcd_wcom(0x80+0x44);
for(n=0;n<8;n++) //將table1[]中的數據依次寫入1602顯示
{
lcd_wdat(table1[n]);
delay(1);
}
}
ET0=1;
}
void main() //主函數
{
sys_init();
TC_init();
lcd_init(); //液晶初始化
lcd_wcom(0x80); //顯示地址設為80H(即00H,)上排第一位
for(m=0;m<16;m++) //將table[]中的數據依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(1);
}
lcd_wcom(0x80+0x44); //重新設定顯示地址為0xc4,即下排第5位
for(n=0;n<8;n++) //將table1[]中的數據依次寫入1602顯示
{
lcd_wdat(table1[n]);
delay(1);
}
while(1); //動態停機
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -