?? 1602c.c
字號:
#include<ADI/ADuC834.h> //包含頭文件,這個嘛,就不用多說了~~
#define uint unsigned int //預(yù)定義一下
#define uchar unsigned char
sbit rs=P2^3; //1602的數(shù)據(jù)/指令選擇控制線
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"; //要顯示的內(nèi)容1放入數(shù)組tablel
uchar code table1[]="study up"; //要顯示的內(nèi)容2放入數(shù)組table1
void delay(uint n) //延時函數(shù)
{
uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
//中斷初始化**************************************************************************************
void sys_init(void)
{
ET0=1;
EA=1;
}
//定時計(jì)數(shù)器初始化**************************************************************************************
void TC_init(void)
{
TMOD|=0x01;
TH0=0;
TL0=0;
TR0=1;
}
void lcd_wcom(uchar com) //1602寫命令函數(shù)
{
rs=0; //選擇指令寄存器
rw=0; //選擇寫
P0=com; //把命令字送入P2
delay(5); //延時一小會兒,讓1602準(zhǔn)備接收數(shù)據(jù)
en=1; //使能線電平變化,命令送入1602的8位數(shù)據(jù)口
en=0;
}
void lcd_wdat(uchar dat) //1602寫數(shù)據(jù)函數(shù)
{
rs=1; //選擇數(shù)據(jù)寄存器
rw=0; //選擇寫
P0=dat; //把要顯示的數(shù)據(jù)送入P2
delay(5); //延時一小會兒,讓1602準(zhǔn)備接收數(shù)據(jù)
en=1; //使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)口
en=0;
}
void lcd_init() //1602初始化函數(shù)
{
lcd_wcom(0x38); //8位數(shù)據(jù),雙列,5*7字形
lcd_wcom(0x0F); //開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍
lcd_wcom(0x06); //顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位
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[]中的數(shù)據(jù)依次寫入1602顯示
{
lcd_wdat(table1[n]);
delay(1);
}
}
if(TCcount==20)
{
lcd_wcom(0x80+0x40);
for(m=0;m<16;m++) //將table[]中的數(shù)據(jù)依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(1);
}
}
if(TCcount==30)
{
lcd_wcom(0x80);
for(m=0;m<16;m++) //將table[]中的數(shù)據(jù)依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(1);
}
}
if(TCcount==40)
{
TCcount=0;
lcd_wcom(0x80+0x40);
for(n=0;n<8;n++) //將table1[]中的數(shù)據(jù)依次寫入1602顯示
{
lcd_wdat(table1[n]);
delay(1);
}
}
ET0=1;
}
void main() //主函數(shù)
{
sys_init();
TC_init();
lcd_init(); //液晶初始化
lcd_wcom(0x80); //顯示地址設(shè)為80H(即00H,)上排第一位
for(m=0;m<16;m++) //將table[]中的數(shù)據(jù)依次寫入1602顯示
{
lcd_wdat(table[m]);
delay(1);
}
lcd_wcom(0x80+0x44); //重新設(shè)定顯示地址為0xc4,即下排第5位
for(n=0;n<8;n++) //將table1[]中的數(shù)據(jù)依次寫入1602顯示
{
lcd_wdat(table1[n]);
delay(1);
}
while(1); //動態(tài)停機(jī)
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -