有了LCD12864,人機(jī)交互就友好的多了。 原理圖:
本文引用地址:http://m.butianyuan.cn/article/201611/321317.htm
上代碼:
//程序可能,驅(qū)動(dòng)12864液晶顯示文字
//本程序有問(wèn)題,見(jiàn)實(shí)際效果,1數(shù)碼管在接入串口線亂碼;2無(wú)法多頁(yè)顯示
#include
#define uint unsigned int
#define uchar unsigned char
//端口聲明
sbit duanxuan=P2^6; //數(shù)碼管段選端
sbit weixuan=P2^7; //數(shù)碼管位選端
sbit lcd12864_RS=P3^5; //12864數(shù)據(jù)/指令選擇端
sbit lcd12864_WR=P3^6; //讀/寫(xiě)選擇端
sbit lcd12864_E=P3^4; //信號(hào)時(shí)能端
sbit lcd12864_PSB=P3^7; //串/并選擇端
//顯示數(shù)據(jù)定義
uchar display_date0[]="閆偉 luobin 彭超:"; //第一行顯示文字
uchar display_date1[]="歡迎你們來(lái)到我家"; //第二行顯示文字
uchar display_date2[]="我們是朋友--永遠(yuǎn)"; //第三行顯示文字
uchar display_date3[]="王春林2012-7-6-N"; //第四行顯示文字
//相關(guān)函數(shù)聲明
void delay(uint); //延時(shí)函數(shù)聲明
void system_init(); //系統(tǒng)初始化函數(shù)
void writting_order(uchar); //寫(xiě)入指令函數(shù)
void lcd_init(); //初始化函數(shù)
void writting_date(uchar); //寫(xiě)入數(shù)據(jù)函數(shù)
void display1(); //顯示函數(shù)
//void display2();
//主函數(shù)
void main()
{
system_init(); //系統(tǒng)初始化
lcd_init(); //lcd初始化-指令設(shè)置
display1(); //顯示
while(1);
}
//延時(shí)函數(shù)主體
void delay(uint s)
{
uint i,j;
for(i=s;i>0;i--)
{
for(j=110;j>0;j--)
{
}
}
}
//系統(tǒng)初始化函數(shù)主體
void system_init()
{
//防止數(shù)碼管亂碼,關(guān)閉數(shù)碼管
duanxuan=0;
weixuan=0;
}
//lcd12864寫(xiě)入指令函數(shù)主體
void writting_order(uchar order_date)
{
lcd12864_WR=0; //WR-0,寫(xiě)
lcd12864_RS=0; //RS-0,寫(xiě)指令
lcd12864_E=0;
P0=order_date;
delay(5);
lcd12864_E=1; //E高脈沖有效
delay(5);
lcd12864_E=0; //回到0,是為了防止誤寫(xiě)入數(shù)據(jù)
}
//lcd12864初始化函數(shù)主體
void lcd_init()
{
lcd12864_PSB=1; //選擇并口
writting_order(0x01); //AC指針歸零
delay(5);
writting_order(0x03); //指針歸零,游標(biāo)原點(diǎn)
delay(5);
writting_order(0x0d); //顯示開(kāi),游標(biāo)關(guān),循序反白
delay(5);
writting_order(0x06); //寫(xiě)入數(shù)據(jù)AC自動(dòng)加以,游標(biāo)自動(dòng)右移一位
delay(5);
writting_order(0x30); //8位數(shù)據(jù),基本指令操作
delay(5);
}
//lcd12864寫(xiě)入顯示數(shù)據(jù)函數(shù)主體
void writting_date(uchar disolay_data)
{
lcd12864_WR=0; //寫(xiě)
lcd12864_RS=1; //數(shù)據(jù)
lcd12864_E=0;
P0=disolay_data; //寫(xiě)入數(shù)據(jù)
delay(5);
lcd12864_E=1; //E高脈沖有效
delay(5);
lcd12864_E=0;
}
//顯示函數(shù)主體__第一頁(yè)
void display1()
{
uint number;
//寫(xiě)第一行數(shù)據(jù)
writting_order(0x80);
for(number=0;number<16;number++)
{
writting_date(display_date0[number]); //循環(huán)寫(xiě)入第一行文字
}
//寫(xiě)第二行數(shù)據(jù)
writting_order(0x90);
for(number=0;number<16;number++)
{
writting_date(display_date1[number]);
}
//寫(xiě)第三行數(shù)據(jù)
writting_order(0x88);
for(number=0;number<16;number++)
{
writting_date(display_date2[number]);
}
//寫(xiě)第四行數(shù)據(jù)
writting_order(0x98);
for(number=0;number<16;number++)
{
writting_date(display_date3[number]);
}
}
以上,結(jié)束。
評(píng)論