www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 下面表格是16*2LCD液晶與單片機(jī)的硬件接法:1VSS接地2VCC接電源,+5V3VO反視度調(diào)整,接地吧4RS寄存器選擇,1-資料、0-指令5R/W讀寫(xiě)選擇,1-讀、0-寫(xiě),如果LCD函數(shù)沒(méi)有用到這個(gè)IO口的話就把它接地6E信號(hào)

下面表格是16*2LCD液晶與單片機(jī)的硬件接法:


1

VSS

接地

2

VCC

接電源,+5V

3

VO

反視度調(diào)整,接地吧

4

RS

寄存器選擇,1-資料、0-指令

5

R/W

讀寫(xiě)選擇,1-讀、0-寫(xiě),如果LCD函數(shù)沒(méi)有用到這個(gè)IO口的話就把它接地

6

E

信號(hào)使能,E由 1 -> 0 的下降沿時(shí),LCD對(duì)RS和DATA進(jìn)行取樣和執(zhí)行操作

7

DATA-DB0

懸空

8

DATA-DB1

懸空

9

DATA-DB2

懸空

10

DATA-DB3

懸空

11

DATA-DB4

接 單片機(jī) IO口

12

DATA-DB5

接 單片機(jī) IO口

13

DATA-DB6

接 單片機(jī) IO口

14

DATA-DB7

接 單片機(jī) IO口


//04:lcd_init()//LCD初始化函數(shù)
//05:lcd_DICtate(byte)//寫(xiě)指令的函數(shù)
//07:lcd_gotoxy(x,y)//列行定位函數(shù)
//06:lcd_putchar(byte)//以ASCII方式顯示一個(gè)字節(jié)變量
//08:lcd_hex(byte)//以十六進(jìn)制顯示一個(gè)字節(jié)變量
//09:lcd_byte(byte)//以十進(jìn)制顯示一個(gè)字節(jié)變量
//10:lcd_putsf(地址,個(gè)數(shù))//顯示FLASH里面的字符串

#include
#include
#include <1602lcd.h>
unsigned char byte;
unsigned char flash string[]="M8V20";
void main(void)
{

lcd_init(); //1602LCD初始化函數(shù)
lcd_dICtate(1); //LCD清屏指令是(1)
while (1)
{
byte++;
lcd_gotoxy(4,0); //光標(biāo)定位到第4列第0行
lcd_byte(byte); //以十進(jìn)制的方式顯示鍵值(字節(jié)形)
lcd_putchar('='); //顯示 = 字符
lcd_putchar(48); //顯示數(shù)字0 ,數(shù)字0的ASCII值是48
lcd_putchar('x'); //顯示 x 字符
lcd_hex(byte); //以十六進(jìn)制的方式顯示鍵值(字節(jié)型)
lcd_gotoxy(2,1); //定位到第2列第1行
lcd_putsf(string,5); //顯示FLASH里面的字符串
lcd_putsf("-AVRDIY",7); //顯示FLASH里面的字符串
delay_ms(500);
}
}

/*下面是<1602LCD.h>文件內(nèi)容

在使用LCD之前先了解一下4位數(shù)據(jù)線傳輸?shù)脑?br/>1:LCD在E由 1->0 時(shí)對(duì)RS和DB4-DB7進(jìn)行取樣和執(zhí)行操作
2:RS=0 時(shí)表示"準(zhǔn)備"寫(xiě)指令,RS=1 時(shí)表示"準(zhǔn)備"寫(xiě)顯示的數(shù)據(jù)
3:不管是指令數(shù)據(jù)還是顯示數(shù)據(jù),數(shù)據(jù)位都是8位,由于LCD用的是4個(gè)數(shù)據(jù)線,所以在傳輸時(shí)先傳輸數(shù)據(jù)的高4位(Msb),然后再傳輸數(shù)據(jù)的低4位(Lsb)
比如說(shuō)我們要寫(xiě)一個(gè)指令,指令是0b11001000 ( 高4位是1100,低4位是1000 )
那么就要這樣:
先傳輸高4位 | 接著傳輸?shù)?位
E=1 ; | E=1 ;
RS=0 ; | RS=0 ;
DB7=1; | DB7=1;
DB6=1; | DB6=0;
DB5=0; | DB5=0;
DB4=0; | DB4=0;
E=0; | E=0;
這樣,我們就完成了寫(xiě)一個(gè)指令了,相反,寫(xiě)顯示數(shù)據(jù)時(shí)就是把RS=1就可以了
對(duì)LCD的寫(xiě)操作只有寫(xiě)指令和寫(xiě)顯示數(shù)據(jù)兩種,所以,一個(gè)"寫(xiě)指令函數(shù)"和一個(gè)"寫(xiě)顯示數(shù)據(jù)函數(shù)"就可以滿足全部要求
*/
#ifndef _1602lcd_INCLUDED_ //如果原來(lái)沒(méi)有宏定義本名字就...
#define _1602lcd_INCLUDED_ //定義一下,防止多次被頭文件包含
#include //本例使用7線連接(也可以使用6線,但是沒(méi)有讀"忙"功能,不推薦)
#define RS PORTB.4 //請(qǐng)修改LCD與 單片機(jī) 的連接IO口
#define RS_DDRn DDRB.4

#define RW PORTB.5
#define RW_DDRn DDRB.5

#define E PORTB.2
#define E_DDRn DDRB.2

#define DB4 PORTC.4
#define DB4_DDRn DDRC.4

#define DB5 PORTC.5
#define DB5_DDRn DDRC.5

#define DB6 PORTC.6
#define DB6_DDRn DDRC.6

#define DB7 PORTC.7
#define DB7_DDRn DDRC.7
#define DB7_PINn PINC.7

//======================================================================================
//寫(xiě)LCD
//datas是數(shù)據(jù),高4位有效,rs決定datas是顯示還是指令,read_lcd決定是否需要讀取忙標(biāo)志BF
void lcd_h(unsigned char datas,unsigned char rs,unsigned char read_lcd)
{
RS_DDRn =1; //RS/RW/E設(shè)置為輸出
RW_DDRn =1;
E_DDRn =1;
if(read_lcd) //如果需要讀LCD忙標(biāo)志就...
{
DB4_DDRn=0; //先把4個(gè)數(shù)據(jù)口設(shè)置為輸入
DB5_DDRn=0;
DB6_DDRn=0;
DB7_DDRn=0;
RS=0;
RW=1; //讀BF
E=1;
E=1; //相同的操作相當(dāng)于等待幾個(gè)時(shí)鐘周期
E=1;
while(DB7_PINn); //等待,直到DB7=0
}
RS=rs; //寫(xiě)指令或者數(shù)據(jù)
RW=0; //寫(xiě)
DB4_DDRn=1;
DB5_DDRn=1;
DB6_DDRn=1;
DB7_DDRn=1;
E=1;
if(datas&128) DB7=1; else DB7=0;
if(datas&64) DB6=1; else DB6=0;
if(datas&32) DB5=1; else DB5=0;
if(datas&16) DB4=1; else DB4=0;
E=0; //LCD在E下降沿時(shí)對(duì)RS與DB4-DB7進(jìn)行取樣
}
//==================================================================================
void lcd_dictate(unsigned char data) //寫(xiě)指令函數(shù)
{
lcd_h(data,0,1); //輸出高4位
lcd_h(data*16,0,1); //輸出低4位
}
//===================================================================================
void lcd_putchar(unsigned char data) //寫(xiě)顯示函數(shù)
{
lcd_h(data,1,1); //輸出高4位
lcd_h(data*16,1,1); //輸出低4位
}
//====================================================================================
//初始化函數(shù)
void lcd_init(void)
{
delay_ms(20);
lcd_h(48,0,0); delay_ms(6); //這3條是初始化語(yǔ)句
lcd_h(48,0,0); delay_ms(5);
lcd_h(48,0,0);
lcd_h(32,0,1); //使能4位數(shù)據(jù)線
lcd_dictate(40); //顯示參數(shù)設(shè)定
lcd_dictate(12); //顯示參數(shù)設(shè)定
}

//======================================================================================
//列/行定位函數(shù),最開(kāi)頭的地址是0列0行
void lcd_gotoxy(unsigned char x, unsigned char y) //列/行定位函數(shù)
{
if(x<=19 && y<=3) //防止輸入的數(shù)據(jù)不正確
{
if(y==0) lcd_dictate(x+128); //第0行的地址是從128開(kāi)始
if(y==1) lcd_dictate(x+192); //第1行......
if(y==2) lcd_dictate(x+148);
if(y==3) lcd_dictate(x+212);
}
}
//=====================================================================================
void lcd_hex(unsigned char byte_data) //以十六進(jìn)制顯示一個(gè)字節(jié)變量
{
unsigned char data;

data=byte_data>>4; //求高4位
if(data<10) data+=48; else data+=55; //轉(zhuǎn)化為ASCII值
lcd_putchar(data); //顯示

data=byte_data&15; //求低4位
if(data<10) data+=48; else data+=55; //轉(zhuǎn)化為ASCII值
lcd_putchar(data); //顯示
}
//=====================================================================================
void lcd_byte(unsigned char byte_data) //以十進(jìn)制顯示一個(gè)字節(jié)變量
{
unsigned char data;

data=byte_data/100; //求百位數(shù)
lcd_putchar(data+48); //轉(zhuǎn)化為ASCII值再顯示

data=byte_data/10%10; //求十位數(shù)
lcd_putchar(data+48); //轉(zhuǎn)化為ASCII值再顯示

data=byte_data%10; //求個(gè)位數(shù)
lcd_putchar(data+48); //轉(zhuǎn)化為ASCII再再顯示
}
//=====================================================================================
void lcd_putsf(flash unsigned char *string , unsigned char n) //顯示FLASH里面的字符串
{
unsigned char i=0;
while(i {
lcd_putchar( string[ i ] ) ; //順序顯示字符
i++;
}
}
//=====================================================================================
#endif//

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

在這篇文章中,小編將對(duì)PLC的相關(guān)內(nèi)容和情況加以介紹以幫助大家增進(jìn)對(duì)它的了解程度,和小編一起來(lái)閱讀以下內(nèi)容吧。

關(guān)鍵字: PLC 模塊化 程序

7月29日消息,LG Display已將其在美國(guó)的70項(xiàng)LCD液晶顯示器相關(guān)專利轉(zhuǎn)讓給三星顯示,值得注意的是,三星顯示已于三年前退出LCD業(yè)務(wù)。

關(guān)鍵字: LCD 三星

HT16K24操作電壓為2.4V~5.5V,內(nèi)建I2C通信接口,提供三種LCD顯示與按鍵模式:24SEG × 4COM + 24 KEY;22SEG × 6COM + 22 KEY;20SEG × 8COM + 20 K...

關(guān)鍵字: LCD MCU 蜂鳴器

離線GPS工具:跟蹤、保存和查找具有距離和方位的航路點(diǎn)——沒(méi)有網(wǎng)絡(luò),沒(méi)有云,您的數(shù)據(jù),您的規(guī)則。

關(guān)鍵字: GPS設(shè)備 LCD 微控制器 Arduino Uno

在技術(shù)上,LCD和OLED各有其獨(dú)特之處。液晶電視通過(guò)控制液態(tài)晶體實(shí)現(xiàn)圖像顯示,其原理是在兩片玻璃基板中夾入液態(tài)晶體,通過(guò)細(xì)小的電線控制水晶分子的方向。而OLED憑借自發(fā)光二極管帶來(lái)更優(yōu)的視角與色彩表現(xiàn),其RGB色彩信號(hào)...

關(guān)鍵字: OLED LCD

雙鎖系統(tǒng),通過(guò)鍵盤(pán)輸入密碼開(kāi)門,客人來(lái)了用短信開(kāi)門

關(guān)鍵字: LCD 雙鎖系統(tǒng) L293D 變壓器

在汽車顯示系統(tǒng)領(lǐng)域,TFT LCD顯示屏目前是車載顯示面板的主流選擇。與此同時(shí),OLED和micro-LED顯示屏也逐漸吸引了市場(chǎng)的廣泛關(guān)注。為了適應(yīng)不同的顯示技術(shù),我們需要開(kāi)發(fā)相應(yīng)的電源技術(shù)。TFT LCD顯示屏通常使...

關(guān)鍵字: LCD OLED micro-LED

如今,汽車行業(yè)對(duì)先進(jìn)顯示屏的需求空前高漲,亟需能夠?qū)崿F(xiàn)更大尺寸、更高亮度、曲面設(shè)計(jì)、更高分辨率和更高對(duì)比度的解決方案。與此同時(shí),各類新型車載顯示屏也日益受到青睞。目前,TFT LCD是汽車平板顯示技術(shù)的主流選擇。OLED...

關(guān)鍵字: LCD OLED micro-LED

大家好,歡迎回來(lái)。在這個(gè)項(xiàng)目中,我們將學(xué)習(xí)如何使用鍵盤(pán)和LCD顯示制作一個(gè)安全的基于Arduino的門鎖。你可以用它來(lái)保護(hù)你的辦公室、房間或家里的保險(xiǎn)箱。要鎖門和開(kāi)鎖,你需要在安全系統(tǒng)中輸入密碼。這確保了只有經(jīng)過(guò)授權(quán)的人...

關(guān)鍵字: 鍵盤(pán) LCD Arduino 電子門鎖

April 1, 2025 ---- 樂(lè)金顯示廣州LCD 8.5代線今日(4月1日)正式交割至TCL華星光電,并改名為t11。至此,TCL華星光電將擁有2條6代、4條8.5代、1條8.6代和2條10.5代LCD產(chǎn)線。Tr...

關(guān)鍵字: 電視 PID面板 LCD
關(guān)閉