標題:
單片機驅(qū)動2004液晶測試程序,4線 8線 控制器HD44780
[打印本頁]
作者:
qpzmg
時間:
2019-6-27 15:50
標題:
單片機驅(qū)動2004液晶測試程序,4線 8線 控制器HD44780
兩個C51單片機的測試程序,一個是連接八條數(shù)據(jù)線的,另一個是連接四條數(shù)據(jù)線的。附件里有原程序和proteus仿真文件。
Snap3.jpg
(68.49 KB, 下載次數(shù): 87)
下載附件
2019-6-27 15:50 上傳
Snap4.jpg
(60.25 KB, 下載次數(shù): 83)
下載附件
2019-6-27 15:50 上傳
單片機源程序如下:
/*=========================================================
LCD2004模擬口線接線方式 連接線圖: =
---------------------------------------------------- =
| LCM-----51 | LCM-----51 | LCM------51 | | =
---------------------------------------------------| =
| | RS -------P3.5 | | =
| | RW------- GND | | =
| | E --------P3.4 | | =
| | | | =
| DB4-----P0.4 | | | =
| DB5-----P0.5 | | | =
| DB6-----P0.6 | | | =
| DB7-----P0.7 | | | =
---------------------------------------------------- =
[注:AT89S51 使用 11.0592M 晶體震蕩器] =
=========================================================*/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCM_RS=P3^5; //定義引腳
sbit LCM_E =P3^4;
sbit LED =P2^5;//LED 的輸出鎖存端
sbit dula =P2^6;//數(shù)碼管的段鎖存端 74HC573
sbit wela =P2^7;//數(shù)碼管的位鎖存端
#define LCM_Data P0
#define Busy 0x80 //用于檢測 LCM 狀態(tài)字中的 Busy 標識
uchar num;
uchar code table0[]="ABCDEFGHIJKLMNOPQRST";
uchar code table1[]="01234567890123456789";
uchar code table2[]="UVWXYZ!@#%&?+<[>]*-;";
uchar code table3[]="abcdefghijklmnopqrst";
void delay(uint z)//延時函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//寫數(shù)據(jù) RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖
void WriteDataLCM(uchar Data)
{
LCM_RS = 1;
LCM_E = 0;
LCM_Data =(Data & 0xF0);
LCM_E = 1;
delay(5);
LCM_E = 0;
LCM_Data =(Data & 0x0F)<<4;
LCM_E = 1;
delay(5);
LCM_E = 0;
}
//寫指令 RS=L,RW=L,D0~D7=指令碼,E=高脈沖
void WriteCommandLCM(uchar Command)
{
delay(5); //短暫延時,代替檢測忙狀態(tài)
LCM_RS = 0;
LCM_E = 0;
LCM_Data =( Command & 0xF0);
LCM_E = 1;
delay(5);
LCM_E = 0;
LCM_Data =( Command & 0x0F )<<4;
LCM_E = 1;
delay(5);
LCM_E = 0;
}
//讀數(shù)據(jù) RS=H,RW=H,E=H
//讀狀態(tài) RS=L,RW=H,E=H
//由于不要檢測忙,所以讀數(shù)據(jù)和讀狀態(tài)兩個函數(shù)省略
void LCMInit(void) //LCM 初始化
{
WriteCommandLCM(0x03);
delay(5);
WriteCommandLCM(0x02);
delay(5);
WriteCommandLCM(0x28); //顯示模式設置,開始要求每次檢測忙信號
WriteCommandLCM(0x0C);
WriteCommandLCM(0x06); // 顯示光標移動設置
WriteCommandLCM(0x01);
delay(5);
}
void main(void)
{
LED=0; //將LED的鎖存端關(guān)閉
dula=0;//將數(shù)碼管的段鎖存端關(guān)閉
wela=0;//將數(shù)碼管的位鎖存端關(guān)閉
LCMInit(); //LCM 初始化
//第一行顯示
WriteCommandLCM(0x80+0x00);
for(num=0;num<20;num++)
{
WriteDataLCM(table0[num]);
delay(250);
}
//第二行顯示
WriteCommandLCM(0x80+0x40);
for(num=0;num<20;num++)
{
WriteDataLCM(table1[num]);
delay(250);
}
//第三行顯示
WriteCommandLCM(0x80+0x14);
for(num=0;num<20;num++)
{
WriteDataLCM(table2[num]);
delay(250);
}
//第四行顯示
WriteCommandLCM(0x80+0x54);
for(num=0;num<20;num++)
-----限于篇幅余下內(nèi)容下載附件----------
復制代碼
所有資料51hei提供下載:
2004液晶測試程序.rar
(79.32 KB, 下載次數(shù): 49)
2019-6-27 15:50 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
lonsieur
時間:
2019-6-27 18:26
仿真原理圖要自己連嗎,里面沒有仿真圖。。。
作者:
redrobot123
時間:
2019-6-27 20:41
學習來了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1