/////LCM_start/////
/*============================================================
1602LCD四位數(shù)據(jù)接口驅(qū)動(dòng)程序 馬文壘 2004/12/13
==============================================================
感謝:本程序參考 明皓的1602LCM液晶顯示屏的驅(qū)動(dòng)函數(shù)和實(shí)例
連接線圖:
----------------------------------
| LCM-----51 | LCM-----51 |
----------------------------------
|RS-----P2.1 | DB4-----P1.4 |
|RW-----P2.0 | DB5-----P1.5 |
|E -----P2.2 | DB6-----P1.6 |
|VLCD接1K電阻到GND| DB7-----P1.7 |
---------------------------------------------------
[注:AT89S51使用12M晶振]
=============================================================*/
void writelcd(bit command,unsigned char ddata)
{
ReadStatusLCM(); //檢測(cè)忙
LCM_Data = (ddata&0xf0)|(P1&0x0f);
LCM_RW = 0;
if(command==0) LCM_RS = 0; else LCM_RS=1;
LCM_E = 1;
LCM_E = 0;
LCM_E = 0;
LCM_Data = ((ddata<<4)&0xf0)|(P1&0x0f);
if(command==0) LCM_RS = 0; else LCM_RS=1;
LCM_E = 1;
LCM_E = 0;
LCM_E = 0;
}
//讀狀態(tài)
unsigned char ReadStatusLCM(void)
{
P1_7=1;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while(P1_7&0x01);//檢測(cè)忙信號(hào)
return(P1_7);
}
void LCMInit(void) //LCM初始化
{
LCM_Data=0xff;
writelcd(0,0x28); //三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)
Delay5Ms();
writelcd(0,0x28);
Delay5Ms();
writelcd(0,0x28);
Delay5Ms();
writelcd(0,0x28); //顯示模式設(shè)置,開(kāi)始要求每次檢測(cè)忙信號(hào)
writelcd(0,0x0c); // 顯示開(kāi)及光標(biāo)設(shè)置
writelcd(0,0x01); //顯示清屏
writelcd(0,0x06); // 顯示光標(biāo)移動(dòng)設(shè)置
}
//按指定位置顯示一個(gè)字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1; X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //當(dāng)要顯示第二行時(shí)地址碼+0x40;
X |= 0x80; //算出指令碼
writelcd(0,X);
writelcd(1,DData);
}
//按指定位置顯示一串字符 ***原來(lái)的遇到空格0x20就不顯示***
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength,j;
ListLength = strlen(DData);
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (X <= 0xF) //X坐標(biāo)應(yīng)小于0xF
{
for(j=0;j<ListLength;j++)
{
DisplayOneChar(X, Y, DData[j]); //顯示單個(gè)字符
X++;
}
}
}
//5ms延時(shí)
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//400ms延時(shí)
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};
}
/////LCM_end///////
1602LCD四位數(shù)據(jù)接口驅(qū)動(dòng)1602LCD四位數(shù)據(jù)接口驅(qū)動(dòng)程序
更新時(shí)間: 2006-03-23 16:18:39來(lái)源: 粵嵌教育瀏覽量:4397
粵嵌動(dòng)態(tài)
推薦閱讀
- ·廣州粵嵌通信科技股份有限公司關(guān)于虛假返還款項(xiàng)通知的嚴(yán)正聲明
- ·佛山市冠宇達(dá)電源有限公司專(zhuān)場(chǎng)招聘會(huì)(長(zhǎng)沙校區(qū))
- ·北京朝歌數(shù)碼科技股份有限公司專(zhuān)場(chǎng)招聘
- ·深圳研賽自動(dòng)化設(shè)備公司專(zhuān)場(chǎng)招聘(長(zhǎng)沙校區(qū))
- ·深圳市興禾自動(dòng)化股份有限公司專(zhuān)場(chǎng)招聘(長(zhǎng)沙校區(qū))
- ·中山市弘億實(shí)業(yè)有限公司專(zhuān)場(chǎng)招聘會(huì)
- ·東莞市德聲實(shí)業(yè)有限公司專(zhuān)場(chǎng)招聘
- ·深圳華創(chuàng)智聯(lián)電子有限公司專(zhuān)場(chǎng)招聘
- ·廣州2512全網(wǎng)運(yùn)營(yíng)就業(yè)班
- ·廣州2511嵌入式開(kāi)發(fā)就業(yè)班