新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 51單片機控制HD61202液晶顯示C語言程序

51單片機控制HD61202液晶顯示C語言程序

作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏

//////////////////////////////////////////////
// 從液晶片上讀數(shù)據(jù),保留在全局變量cbyte中 //
//////////////////////////////////////////////
void Rddata(void)
{
Locatexy(); //坐標定位,返回時保留分區(qū)狀態(tài)不變 //
Datalcm=0xFF;
wtcom(); // waitting for enable //
Dilcm = 1; //數(shù)據(jù)//
Rwlcm = 1; //讀數(shù)據(jù)//
Elcm = 1; //讀入到LCM//
_nop_();
cbyte = Datalcm; //虛讀一次 //
Elcm = 0;
Locatexy(); //坐標定位,返回時保留分區(qū)狀態(tài)不變 //
Datalcm=0xFF;
wtcom(); // waitting for enable //
Dilcm = 1; //數(shù)據(jù)//
Rwlcm = 1; //讀數(shù)據(jù)//
Elcm = 1; //讀入到LCM//
_nop_();
cbyte = Datalcm; //從數(shù)據(jù)口讀數(shù)據(jù),真讀 //
Elcm = 0;
}
///////////////////////////////////////////
/// 數(shù)據(jù)寫入 //
///////////////////////////////////////////
void Wrdata(Uchar X)
{
Locatexy(); ///坐標定位,返回時保留分區(qū)狀態(tài)不變 //
wtcom();
Dilcm = 1; ///數(shù)據(jù)輸出//
Rwlcm = 0; ///寫輸出 //
Datalcm = X; ///數(shù)據(jù)輸出到數(shù)據(jù)口 //
Elcm = 1; ////讀入到LCM//
_nop_();
Elcm = 0;
}
///////////////////////////////////////////
/// 清屏,全屏幕清零 //
///////////////////////////////////////////
void Lcmcls( void )
{
for(row=0;row<8;row++)
for(col=0;col
}
///////////////////////////////////
///液晶屏初始化 //
///////////////////////////////////
void Lcminit(void)
{
cbyte = DISPOFF; ///關(guān)閉顯示屏 //
WrcmdL(cbyte);
WrcmdR(cbyte);
cbyte = DISPON; ///打開顯示屏 //
WrcmdL(cbyte);
WrcmdR(cbyte);
cbyte = DISPFIRST; ///定義顯示起始行為零 //
WrcmdL(cbyte);
WrcmdR(cbyte);
Lcmcls();
col=0; //清屏 //
row=0;
Locatexy();
}
///////////////////////////////////
/// 延時 //
///////////////////////////////////
void Delay(Uchar MS)
{
Uchar us,usn;
while(MS!=0)
{ usn = 4;
while(usn!=0)
{
us=0xf0;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
/////////////////////////////////////////////////////////
// 半角字符(西文字符庫)點陣碼數(shù)據(jù)輸出16/16 //
/////////////////////////////////////////////////////////
void Putedot(Uchar Order)
{
Uchar i,bakerx,bakery; //共定義4個局部變量 //
int x; //偏移量,字符量少的可以定義為UCHAR //
bakerx = row; //暫存x,y坐標,已備下半個字符使用 //
bakery = col;
x=Order / 0x10; //半角字符,每個字符16字節(jié) //
///上半個字符輸出,8列 //
for(i=0;i<8;i++)
{
cbyte = Ezk[x]; ///取點陣碼,rom數(shù)組 //
Wrdata(cbyte); ///寫輸出一字節(jié) //
x++;
col++;
} ///上半個字符輸出結(jié)束 //
col = bakery; ///列對齊 //
row = bakerx+1; ///指向下半個字符行 //
///下半個字符輸出,8列 //
for(i=0;i<8;i++)
{
cbyte = Ezk[x]; ///取點陣碼 //
Wrdata(cbyte); ///寫輸出一字節(jié) //
x++;
col++;
} ///下半個字符輸出結(jié)束 //
row=bakerx;
} ///整個字符輸出結(jié)束 //
/////////////////////////////////////////////////////
/// 全角字符(漢字庫)點陣碼數(shù)據(jù)輸出16/32 //
/////////////////////////////////////////////////////
void Putcdot(Uchar Order)
{
Uchar i,bakerx,bakery; ///共定義3個局部變量 //
int x; ///偏移量,字符量少的可以定義為UCHAR //
bakerx = row; / / //暫存x,y坐標,已備下半個字符使用 //
bakery = col;
x=Order / 0x20; ///每個字符32字節(jié) //
///上半個字符輸出,16列 //
for(i=0;i<16;i++)
{
Wrdata(Hzk[x]); / //寫輸出一字節(jié) //
x++;
col++;
} ///上半個字符輸出結(jié)束 //
///下半個字符輸出,16列 //
col = bakery;
row = bakerx+1;
for(i=0;i<16;i++) / //下半部分//
{
Wrdata(Hzk[x]);
x++;
col++;
} //下半個字符輸出結(jié)束 //
row = bakerx;
} //整個字符輸出結(jié)束 //
/////////////////////////////////////////////////////////////////////////////
/// 一個字串的輸出.第一個參數(shù)為一個字符串,第二個參數(shù)為此字符串的字節(jié)數(shù) //
/////////////////////////////////////////////////////////////////////////////
void Putstr(Uchar /puts,Uchar i)
{
Uchar j,X;
for (j=0;j
{
X = puts[j];
if (X&0x80)
{
Putcdot(X&0x7f); / //只保留低7位//
}
else Putedot(X-0x20); / //ascii碼表從0x20開始//
if (col==LCMLIMIT){col=0;row+=2;}; ///下一列,如果列越界換行//
if (row>6) row=0; ///如果行越界,返回首行 //
}
}

上一頁 1 2 下一頁

關(guān)鍵詞: 51單片機HD61202液晶顯

評論


技術(shù)專區(qū)

關(guān)閉