視頻教程:https://www.bilibili.com/video/BV1HK411W7La
#include
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^2;
sbit LCD1602_RW=P2^1;
sbit LCD1602_RS=P2^0;
sbit KEY = P3^0;
/*******************************************************************************
* 函 數(shù) 名 : Lcd1602_Delay1ms
* 函數(shù)功能 : 延時(shí)函數(shù),延時(shí)1ms
* 輸 入 : c
* 輸 出 : 無(wú)
* 說(shuō) 名 : 該函數(shù)是在12MHZ晶振下,12分頻單片機(jī)的延時(shí)。
*******************************************************************************/
void Lcd1602_Delay1ms(uint c) //誤差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
* 函 數(shù) 名 : LcdWriteCom
* 函數(shù)功能 : 向LCD寫入一個(gè)字節(jié)的命令
* 輸 入 : com
* 輸 出 : 無(wú)
*******************************************************************************/
void LcdWriteCom(uchar com) //寫入命令
{
LCD1602_E = 0; //使能
LCD1602_RS = 0; //選擇發(fā)送命令
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = com; //放入命令
Lcd1602_Delay1ms(1); //等待數(shù)據(jù)穩(wěn)定
LCD1602_E = 1; //寫入時(shí)序
Lcd1602_Delay1ms(5); //保持時(shí)間
LCD1602_E = 0;
}
/*******************************************************************************
* 函 數(shù) 名 : LcdWriteData
* 函數(shù)功能 : 向LCD寫入一個(gè)字節(jié)的數(shù)據(jù)
* 輸 入 : dat
* 輸 出 : 無(wú)
*******************************************************************************/
void LcdWriteData(uchar dat) //寫入數(shù)據(jù)
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //選擇輸入數(shù)據(jù)
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = dat; //寫入數(shù)據(jù)
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //寫入時(shí)序
Lcd1602_Delay1ms(5); //保持時(shí)間
LCD1602_E = 0;
}
/*******************************************************************************
* 函 數(shù) 名 : LcdInit()
* 函數(shù)功能 : 初始化LCD屏
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x38); //開顯示
LcdWriteCom(0x0c); //開顯示不顯示光標(biāo)
LcdWriteCom(0x06); //寫一個(gè)指針加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //設(shè)置數(shù)據(jù)指針起點(diǎn)
}
//按指定位置顯示一個(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; // 算出指令碼
LcdWriteCom(X); //這里不檢測(cè)忙信號(hào),發(fā)送地址碼
LcdWriteData(DData);
}
//按指定位置顯示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>=0x20) //若到達(dá)字串尾則退出
{
if (X <= 0xF) //X坐標(biāo)應(yīng)小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //顯示單個(gè)字符
ListLength++;
X++;
}
}
}
void main()
{
uint datt = 324;
LcdInit();
//DisplayListChar(3,1,"Cheng One");
DisplayOneChar(0,0,(char)(datt/100+'0'));
DisplayOneChar(1,0,(char)(datt/10%10+'0'));
DisplayOneChar(2,0,(char)(datt%10+'0'));
while(1)
{
if(KEY==0)
{
Lcd1602_Delay1ms(20);
if(KEY==0)
{
while(KEY==0);
datt++;
}
}
DisplayOneChar(0,0,(char)(datt/100+'0'));
DisplayOneChar(1,0,(char)(datt/10%10+'0'));
DisplayOneChar(2,0,(char)(datt%10+'0'));
}
}
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
液晶
+關(guān)注
關(guān)注
6文章
606瀏覽量
69634 -
Proteus
+關(guān)注
關(guān)注
79文章
1692瀏覽量
106573 -
晶振
+關(guān)注
關(guān)注
34文章
2866瀏覽量
68033 -
LCD1602
+關(guān)注
關(guān)注
14文章
607瀏覽量
52590
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
lcd1602顯示原理,LCD1602液晶顯示器的分類有哪些?
LCD1602是一種工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。LCD1602液晶顯示原理 LCD1602液晶
發(fā)表于 10-20 10:32
?3.6w次閱讀
LCD1602是什么?關(guān)于LCD1602液晶模塊的顯示問(wèn)題?
LCD1602表示2行16個(gè)字符,也就是有不同的顯示地點(diǎn),那么單片機(jī)如何告訴LCD1602的顯示地點(diǎn)呢?因此前面的分析可以總結(jié)為三個(gè)問(wèn)題,如何初始化;如何傳送
發(fā)表于 07-02 09:16
?2.3w次閱讀
LCD1602顯示接收到的紅外線鍵值程序和LCD1602的延遲函數(shù)
本文檔的主要內(nèi)容詳細(xì)介紹的是LCD1602顯示接收到的紅外線鍵值程序和LCD1602的延遲函數(shù)。
發(fā)表于 05-06 16:40
?25次下載
lcd1602液晶顯示屏介紹_lcd1602引腳功能
本文首先闡述了lcd1602液晶顯示屏的概念,其次闡述了LCD1602外形尺寸,最后介紹了lcd1602引腳功能。
發(fā)表于 04-23 08:53
?7.2w次閱讀
lcd1602在proteus中怎么找_lcd1602proteus仿真
proteus提供了很多LCD的仿真器件,分享一個(gè)關(guān)于lcd1602的查找操作,希望對(duì)需要的朋友有幫助。
發(fā)表于 04-23 09:02
?12.4w次閱讀
基于51單片機(jī)的LCD1602顯示proteus實(shí)驗(yàn)
基于51單片機(jī)的LCD1602顯示proteus實(shí)驗(yàn)
發(fā)表于 04-30 10:14
?38次下載
51單片機(jī)驅(qū)動(dòng)LCD1602顯示原理及例程
51單片機(jī)驅(qū)動(dòng)LCD1602顯示原理及例程1.LCD1602A介紹2.LCD1602A中文手冊(cè) 下載3.LCD1602A接線4. 51單片
發(fā)表于 11-10 19:51
?149次下載
51單片機(jī)LCD1602顯示實(shí)驗(yàn)
實(shí)驗(yàn)?zāi)繕?biāo):掌握LCD1602顯示控制方法; 掌握利用Proteus單片機(jī)控制系統(tǒng)的仿真及調(diào)試方法。任務(wù):根據(jù)要求編寫程序,并寫出原理性注釋; 將檢查程序運(yùn)行的結(jié)果,分析一下是否正確; 完成所建
發(fā)表于 11-10 20:06
?25次下載
STMCubeMX+Proteus仿真DHT11(LCD1602顯示)
信息顯示在LCD1602上Tips:之前寫過(guò)一期LCD1602的,貼個(gè)傳送門 STM32CubeMX+Proteus仿真LCD1602的
發(fā)表于 11-21 14:06
?50次下載
51單片機(jī) LCD1602驅(qū)動(dòng)顯示(模板)+Proteus
51單片機(jī) LCD1602驅(qū)動(dòng)顯示(模板)+Proteus本項(xiàng)目工程篇,只展示LCD1602驅(qū)動(dòng)顯示,不涉及其他外設(shè)驅(qū)動(dòng)使用,可以作為
發(fā)表于 11-23 17:06
?30次下載
STM32CubeMX+Proteus仿真LCD1602的顯示
本文說(shuō)明開發(fā)工具:STM32CubeMX+Keil5開發(fā)芯片:STM32F103R6顯示屏幕:LCD1602仿真軟件:Proteus 8.12工程目標(biāo):在LCD1602上
發(fā)表于 01-14 09:31
?60次下載
評(píng)論