當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]手上有一片1602的LCD,ks0066的驅(qū)動芯片,帶LED背光.參考網(wǎng)站上的一些資料,寫了個驅(qū)動程序,寫完了才發(fā)現(xiàn),跟網(wǎng)上流傳的代碼基本上差不多/*======================================= 1602lcd模塊驅(qū)動程序===============

手上有一片1602的LCD,ks0066的驅(qū)動芯片,帶LED背光.參考網(wǎng)站上的一些資料,寫了個驅(qū)動程序,寫完了才發(fā)現(xiàn),跟網(wǎng)上流傳的代碼基本上差不多

/*=======================================

1602lcd模塊驅(qū)動程序

==========================================

說明:1.晶體:11.0592MHz

2.1602驅(qū)動:ks0066

******************************************/

#i nclude

#i nclude

#define lcm_rs P2_7 //寄存器選擇

#define lcm_rw P2_6 //讀/寫控制

#define lcm_e P2_5 //讀/寫使能

#define lcm_blk P2_4 //背光led 1.off 0.on

#define lcm_data P0

//函數(shù)聲明

void delay5ms(void);

void delay400ms(void);

void lcm_write_command(unsigned char wc_lcm,busy_c);

/***********************************

//函數(shù)名稱: void lcm_ini(void)

//傳遞參數(shù): 無

//返 回 值: 無

//函數(shù)功能: LCM初始化

//函數(shù)說明:

***********************************/

void lcm_ini(void)

{

lcm_data = 0;

lcm_write_command(0x38,0); //16*2顯示,5*7點陣,8位數(shù)據(jù)接口,不檢測忙

delay5ms();

lcm_write_command(0x38,0);

delay5ms();

lcm_write_command(0x38,0); //三次顯示模式, 不檢測忙

delay5ms();

lcm_write_command(0x38,1); //16*2顯示,5*7點陣,8位數(shù)據(jù)接口,需要檢測忙

lcm_write_command(0x80,1); //關(guān)閉顯示

lcm_write_command(0x01,1); //clear顯示

lcm_write_command(0x06,1); //指針和光標(biāo)+1,不滾屏

lcm_write_command(0x0c,1); //開顯示,不顯示光標(biāo)

}

/***********************************

//函數(shù)名稱: unsigned char lcm_read_status(void)

//傳遞參數(shù): 無

//返 回 值: unsigned char

//函數(shù)功能: 讀lcm狀態(tài),等待lcm空閑

//函數(shù)說明: DB7=1,忙

***********************************/

unsigned char lcm_read_status(void)

{

lcm_data=0xff;

lcm_rs=0;

lcm_rw=1;

lcm_e=0;

lcm_e=0;

lcm_e=1;

while(lcm_data & 0x80);

return lcm_data;

}

/***********************************

//函數(shù)名稱: void lcm_write_data(unsigned char wd_lcm)

//傳遞參數(shù): unsigned char wd_lcm

//返 回 值: 無

//函數(shù)功能: lcm寫數(shù)據(jù)

//函數(shù)說明:

***********************************/

void lcm_write_data(unsigned char wd_lcm)

{

lcm_read_status(); //判斷l(xiāng)cm忙標(biāo)志

lcm_data = wd_lcm;

lcm_rs = 1;

lcm_rw = 0;

lcm_e = 0;

lcm_e = 0;

lcm_e = 1;

}

/***********************************

//函數(shù)名稱: void lcm_write_command(unsigned char wc_lcm, busy_c)

//傳遞參數(shù): unsigned char wc_lcm, busy_c

//返 回 值: 無

//函數(shù)功能: lcm寫命令

//函數(shù)說明: busy_c=0是,不用檢測忙信號

***********************************/

void lcm_write_command(unsigned char wc_lcm, busy_c)

{

if (busy_c)

lcm_read_status();

lcm_data = wc_lcm;

lcm_rs=0;

lcm_rw = 0;

lcm_e = 0;

lcm_e = 0;

lcm_e = 1;

}

/***********************************

//函數(shù)名稱: void disp_one_char(unsigned char x, unsigned char y,unsigned char disp_data)

//傳遞參數(shù): unsigned char x, unsigned char y,unsigned char disp_data

//返 回 值: 無

//函數(shù)功能: 指定位置顯示一個字符

//函數(shù)說明:

***********************************/

void disp_one_char(unsigned char x,unsigned char y,unsigned disp_data)

{

y = y&0x01;

x = x&0x0f; //限制2行,沒行15個字

if (y)

x =x + 0x40; //算RAM地址

x = x + 0x80;

lcm_write_command(x,0);

lcm_write_data(disp_data);

}

/***********************************

//函數(shù)名稱: void disp_one_char(unsigned char x, unsigned char y,unsigned char *disp_data)

//傳遞參數(shù): unsigned char x, unsigned char y,unsigned char *disp_data

//返 回 值: 無

//函數(shù)功能: 指定位置顯示一串字符

//函數(shù)說明:

***********************************/

void disp_list_char(unsigned char x,unsigned char y,unsigned char *disp_data)

{

unsigned char char_length,j;

char_length = strlen(disp_data);

y = y&0x1;

x = x&0x0f;

for (j=0;j

{

disp_one_char( x,y,disp_data[j]); //顯示一個字符

x++;

}

}

/***********************************

//函數(shù)名稱: void delay5ms(void)

//傳遞參數(shù): 無

//返 回 值: 無

//函數(shù)功能: 延時5MS

//函數(shù)說明:

***********************************/

void delay5ms(void)

{

unsigned int TempCyc = 5552;

while(TempCyc--);

}

/***********************************

//函數(shù)名稱: void delay400ms(void)

//傳遞參數(shù): 無

//返 回 值: 無

//函數(shù)功能: L延時400MS

//函數(shù)說明: LCM開機延時

***********************************/

void delay400ms(void)

{

unsigned char TempCycA = 5;

unsigned int TempCycB;

while(TempCycA--)

{

TempCycB=7269;

while(TempCycB--);

};

}

/*****d******************************

//函數(shù)名稱: void main(void)

//傳遞參數(shù): 無

//返 回 值: 無

//函數(shù)功能: 主函數(shù)

//函數(shù)說明:

************************************/

void main(void)

{

delay400ms();

lcm_ini();

disp_list_char(1,0,"Welcome");

disp_list_char(1,0,"www.dzkjcn.com")

while(1);

}

以上的程序只是簡單的顯示兩行字符,沒有滾屏和背光

4線液晶1602的C51程序

----------------------------------

| 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(); //檢測忙

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);//檢測忙信號

return(P1_7);

}

void LCMInit(void) //LCM初始化

{

LCM_Data=0xff;

writelcd(0,0x28); //三次顯示模式設(shè)置,不檢測忙信號

Delay5Ms();

writelcd(0,0x28);

D

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉