LCD1602程序代碼及顯示流程圖
lcd1602顯示程序代碼
本文引用地址:http://www.eepw.com.cn/article/201710/366255.htm前些天弄了最小系統(tǒng)板后就想著學(xué)習(xí)1602的顯示程序,可惜壇子里的或網(wǎng)上的,都沒(méi)有簡(jiǎn)單的1602顯示程序,無(wú)柰在網(wǎng)上下載了一段經(jīng)過(guò)反復(fù)修改測(cè)試,終于有了下面一段代碼:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - 初始化接口
# define LCD_DB P0 // - - P0 = DB0~DB7
sbit LCD_RS=P2^0; // - - p2.0 = RS
sbit LCD_RW=P2^1; // - - p2.1 = RW
sbit LCD_E=P2^2; // - - p2.2 = E
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - 定義函數(shù)
# define uchar unsigned char
# define uint unsigned int
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - 定義子程序函數(shù)
void LCD_init(void); // - - 初始化LCD1602函數(shù)
void LCD_write_command(uchar command); // - - 向LCD1602寫(xiě)指令函數(shù)
void LCD_write_data(uchar dat); // - - 向LCD1602寫(xiě)數(shù)據(jù)函數(shù)
void LCD_set_xy(uchar x,uchar y); // - - 設(shè)置LCD1602顯示位置 X(0-16),y(1-2)
void LCD_disp_char(uchar x,uchar y,uchar dat); // - - 在LCD1602上顯示一個(gè)字符
void LCD_disp_string(uchar X,uchar Y,uchar *s); // - - 在LCD1602上顯示一個(gè)字符串
//void LCD_check_busy(void);//檢查忙函數(shù)。我沒(méi)用到此函數(shù),因?yàn)橥ㄟ^(guò)率極低。
void LCD_delay_10us(uint n); // - - 10微秒的延時(shí)子程序
void LCD_delay_50us(uint n); // - - 50微秒的延時(shí)子程序
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - 初始化LCD1602
void LCD_init(void)
{
LCD_delay_10us(20);
LCD_write_command(0x38); // - - 設(shè)置8位格式,2行,5x7
LCD_delay_10us(5);
LCD_write_command(0x0c); // - - 整體顯示,關(guān)光標(biāo),不閃爍
LCD_delay_10us(5);
LCD_write_command(0x06); // - - 設(shè)定輸入方式,增量不移位
LCD_delay_10us(5);
LCD_write_command(0x01); // - - 清除屏幕顯示
LCD_delay_50us(40);
}
//********************************
// - - 向LCD1602寫(xiě)指令
void LCD_write_command(uchar dat)
{
LCD_delay_10us(5);
LCD_RS=0; // - - 指令
LCD_RW=0; // - - 寫(xiě)入
LCD_DB=dat;
LCD_delay_10us(5);
LCD_E=1; // - - 允許
LCD_delay_10us(5);
LCD_E=0;
}
// - - 向LCD1602寫(xiě)數(shù)據(jù)
void LCD_write_data(uchar dat)
{
LCD_delay_10us(5);
LCD_RS=1;// - - 數(shù)據(jù)
LCD_RW=0;// - - 寫(xiě)入
LCD_DB=dat;
LCD_delay_10us(5);
LCD_E=1;// - - 允許
LCD_delay_10us(5);
LCD_E=0;
}
// - - 設(shè)置顯示位置
void LCD_set_xy(uchar x,uchar y)
{
uchar address;
if(y==1)
{
address=0x80+x; // - - 第一行位置
} else {
address=0xc0+x; // - - 第二行位置
}
LCD_delay_10us(5);
LCD_write_command(address);
}
// - - 顯示一個(gè)字符函數(shù)
void LCD_disp_char(uchar x,uchar y,uchar dat) // - - LCD_disp_char(0,1,0x38); // - - 顯示8
{
LCD_set_xy(x,y);
LCD_delay_10us(5);
LCD_write_data(dat);
}
// - - 顯示一個(gè)字符串函數(shù)
void LCD_disp_string(uchar x,uchar y,uchar *s)
{
LCD_set_xy(x,y);
LCD_delay_10us(5);
while(*s!=‘\0’)
{
LCD_write_data(*s);
s++;
}
}
//********************************
/*******檢查忙函數(shù)*************
void LCD_check_busy() //實(shí)踐證明,在我的LCD1602上,檢查忙指令通過(guò)率極低,以
{ //至于不能正常使用LCD。因此我沒(méi)有再用檢查忙函數(shù)。而使
do //用了延時(shí)的方法,延時(shí)還是非常好用的。我試了一下,用
{ LCD_E=0; //for循環(huán)作延時(shí),普通指令只要1次循就可完成。清屏指令
LCD_RS=0; //要用200次循環(huán)便能完成。
LCD_RW=1;
LCD_DB=0xff;
LCD_E=1;
}while(LCD_DB^7==1);
}
******************************/
void LCD_delay_10us(uint n) // - - 10微秒的延時(shí)子程序
{
uint i,j;
for(i=n;i》0;i--)
for(j=2;j》0;j--);
}
void LCD_delay_50us(uint n) // - - 50微秒的延時(shí)子程序
{
uint i,j;
for(i=n;i》0;i--)
for(j=22;j》0;j--);
}
LCD1602顯示程序流程圖及句解
讓LCD1602顯示字符前要輸入字符所在的地址,這也是每顯示一個(gè)字符地址要加一的原因,在下面的一段代碼里你會(huì)明白怎么設(shè)置地址,怎么讓地址自動(dòng)加一,怎么清屏,怎么顯示字符,希望你能看懂哦
sbit LCD_E=P2^0; //lcd1602控制置位
sbit LCD_RW=P2^1; //lcd1602控制置位
sbit LCD_RS=P2^2; //lcd1602控制置位
void LCD_command(unsigned char com)
{
LCD_E=0;
LCD_RW=0;
LCD_RS=0;
P1=com;
delay_us(100);
LCD_E=1;
delay_us(100);
LCD_E=0;
}
void LCD_date(unsigned char dat)
{
LCD_E=0;
LCD_RW=0;
LCD_RS=1;
P1=dat;
delay_us(100);
LCD_E=1;
delay_us(100);
LCD_E=0;
}
LCD_command(0x38); //設(shè)置LCD為16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
LCD_command(0x0c); //設(shè)置LCD顯示開(kāi),光標(biāo)顯示關(guān)
LCD_command(0x06); //寫(xiě)一個(gè)數(shù)據(jù)后地址加1
LCD_command(0x01); //顯示清屏
LCD_command(0x80); //數(shù)據(jù)指針設(shè)置為第一行第一位
LCD_date(‘pi’);
LCD_date(‘l’);
LCD_date(‘e’);
LCD_date(‘a’);
LCD_date(‘s’);
LCD_date(‘e’);
LCD_date(‘ ’);
LCD_date(‘c’);
LCD_date(‘h’);
LCD_date(‘e’);
LCD_date(‘c’);
LCD_date(‘k’);
LCD_date(‘ ’);
LCD_date(‘t’);
LCD_date(‘h’);
LCD_date(‘e’);
LCD_command(0x80+0x40); //LCD地址指針指向第二行第一個(gè)位置
LCD_date(‘c’);
LCD_date(‘o’);
LCD_date(‘n’);
LCD_date(‘n’);
LCD_date(‘e’);
LCD_date(‘c’);
LCD_date(‘t’);
LCD_date(‘i’);
LCD_date(‘o’);
LCD_date(‘n’);
LCD_date(‘!’);
LCD_date(‘!’);
關(guān)鍵詞: LCD1602 LCD1602顯示程序
您可能也感興趣:
今日熱點(diǎn)
為您推薦
8家險(xiǎn)企股權(quán)被掛牌轉(zhuǎn)讓,為何險(xiǎn)企股權(quán)不再被追捧?
深圳最低工資標(biāo)準(zhǔn)調(diào)整為2360元/月 失業(yè)保險(xiǎn)金為2124元/月
遼寧實(shí)施失業(yè)保險(xiǎn)省級(jí)統(tǒng)籌 對(duì)缺口核定等作出詳細(xì)規(guī)定
更多
- 蕪湖釋放創(chuàng)新“N次方”效應(yīng) 數(shù)字賦能驅(qū)動(dòng)產(chǎn)業(yè)升級(jí)
- 重慶:激發(fā)人才創(chuàng)新活力,到2025年創(chuàng)新要素活躍度顯著增強(qiáng)
- 西寧加快知識(shí)產(chǎn)權(quán)強(qiáng)市建設(shè)步伐 去年兌現(xiàn)資助資金200萬(wàn)元
- 無(wú)錫錫山區(qū)全面啟動(dòng)實(shí)施“雙招雙引” 引進(jìn)高端創(chuàng)新資源
- 重慶巴南區(qū)落實(shí)創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略 以科技創(chuàng)新引領(lǐng)五大產(chǎn)業(yè)集...
- 朝陽(yáng)北票經(jīng)開(kāi)區(qū)加快推進(jìn)數(shù)字經(jīng)濟(jì)發(fā)展 推動(dòng)體制機(jī)制創(chuàng)新
- 湖北省先進(jìn)低碳冶金產(chǎn)業(yè)技術(shù)創(chuàng)新聯(lián)合體組建 打造五千億級(jí)產(chǎn)...
- 重慶渝北將優(yōu)化創(chuàng)新生態(tài)環(huán)境 培育打造一批引領(lǐng)型的科創(chuàng)載體
更多
- 山東抓投資抓項(xiàng)目 新興領(lǐng)域投資規(guī)模持續(xù)擴(kuò)大
- 2021年各地引資成績(jī)單亮眼 迸發(fā)出巨大經(jīng)濟(jì)活力
- 多地重大項(xiàng)目投資規(guī)模力度明顯加大 新基建項(xiàng)目成重要發(fā)力點(diǎn)
- 年內(nèi)湖北新開(kāi)工城建項(xiàng)目160個(gè) 集中在道路交通等方面
- 去年我國(guó)對(duì)外投資合作平穩(wěn)發(fā)展 境外經(jīng)貿(mào)合作區(qū)建設(shè)成效顯著
- 荊州集中簽約39個(gè)項(xiàng)目 重點(diǎn)涵蓋高端裝備制造、電子信息等領(lǐng)域
- 廣東打出一系列穩(wěn)外貿(mào)政策“組合拳” 外貿(mào)逆勢(shì)創(chuàng)新高
- 蘭州新區(qū)再獲“最具投資吸引力新區(qū)” 去年新增市場(chǎng)主體5427戶
排行
最近更新
- 蕪湖釋放創(chuàng)新“N次方”效應(yīng) 數(shù)字賦能驅(qū)動(dòng)產(chǎn)業(yè)升級(jí)
- 去年快遞服務(wù)全程時(shí)限水平有較大提升 干線運(yùn)輸時(shí)限縮短
- 住建部:推動(dòng)長(zhǎng)江經(jīng)濟(jì)帶高質(zhì)量發(fā)展,打造區(qū)域協(xié)調(diào)發(fā)展新樣板
- 江蘇發(fā)布重大項(xiàng)目清單 增資擴(kuò)產(chǎn)項(xiàng)目明顯增多
- 山東抓投資抓項(xiàng)目 新興領(lǐng)域投資規(guī)模持續(xù)擴(kuò)大
- Gucci在2月將投放 10 個(gè)“SuperGucci”NFT
- 美國(guó)銀行:美國(guó)CBDC將保持美元作為世界儲(chǔ)備貨幣的地位
- 美股三大指數(shù)尾盤(pán)集體轉(zhuǎn)漲
- 光伏發(fā)電概念股有哪些?光伏發(fā)電概念龍頭股一覽
- The new iPad屏幕對(duì)比評(píng)測(cè)
- 電源接通延時(shí)器
- 汽車(chē)電子穩(wěn)定系統(tǒng)(ESP)詳解
- 聯(lián)想B520一體機(jī)拆解
- 焦炭相關(guān)股票有哪些?焦炭概念股票龍頭一覽
- 增強(qiáng)信號(hào) 3G無(wú)線上網(wǎng)卡改裝拆解全攻略
- 盤(pán)點(diǎn)全球五大智能手機(jī)生產(chǎn)商 華為聯(lián)想入圍
- 三星新平板 Galaxy Note 10.1全拆解
- 智能監(jiān)控防盜報(bào)警系統(tǒng)
- 格力電器未來(lái)三年股東回報(bào)規(guī)劃:每年累計(jì)分紅不低于當(dāng)年凈利潤(rùn)50%
- 消息稱京東科技計(jì)劃2022年在港IPO,募資10億至20億美元
- 恒大集團(tuán):呼吁境外債權(quán)人不采取任何激進(jìn)的法律行動(dòng)
- 海航董事長(zhǎng)劉璐因個(gè)人原因辭職,在海航已近28年
- 青青稞酒預(yù)計(jì)2021年?duì)I收增長(zhǎng)30%-40%,四季度凈虧損超1500萬(wàn)
- 2022年在港上市募資10億美元?京東科技:不予置評(píng)
- 財(cái)政部修訂出臺(tái)《財(cái)政行政處罰聽(tīng)證實(shí)施辦法》
- 賣(mài)房子需要交什么稅?賣(mài)房子必須攜帶哪些證件?
- 醫(yī)保卡的使用范圍有哪些?補(bǔ)牙可以使用醫(yī)保報(bào)銷(xiāo)嗎?
- 小產(chǎn)權(quán)房能過(guò)戶嗎?購(gòu)買(mǎi)小產(chǎn)權(quán)房有什么風(fēng)險(xiǎn)?
- 奕東電子的實(shí)際控制人是誰(shuí)?奕東電子股票上市了嗎?
- 百合股份是一家什么公司?百合股份的股票何時(shí)上市?
今日要聞
- 蕪湖釋放創(chuàng)新“N次方”效應(yīng) 數(shù)字賦能驅(qū)動(dòng)產(chǎn)業(yè)升級(jí)
- 去年快遞服務(wù)全程時(shí)限水平有較大提升 干線運(yùn)輸時(shí)限縮短
- 住建部:推動(dòng)長(zhǎng)江經(jīng)濟(jì)帶高質(zhì)量發(fā)展,打造區(qū)域協(xié)調(diào)發(fā)展新樣板
- 山東抓投資抓項(xiàng)目 新興領(lǐng)域投資規(guī)模持續(xù)擴(kuò)大
- Gucci在2月將投放 10 個(gè)“SuperGucci”NFT
- 美國(guó)銀行:美國(guó)CBDC將保持美元作為世界儲(chǔ)備貨幣的地位
- 美股三大指數(shù)尾盤(pán)集體轉(zhuǎn)漲
- The new iPad屏幕對(duì)比評(píng)測(cè)
- 電源接通延時(shí)器
- 汽車(chē)電子穩(wěn)定系統(tǒng)(ESP)詳解