日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]本文主要介紹了PIC18F4521602簡單顯示規(guī)律的問題。

 本文主要介紹了PIC18F4521602簡單顯示規(guī)律的問題。

1602液晶顯示器資料

所謂1602是指顯示的內(nèi)容為16*2,即可以顯示兩行,每行16個字符。目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。

1. 1602液晶的正面(綠色背光,黑色字體)   2.1602液晶背面(綠色背光,黑色字體)   3.另一種1602液晶模塊,顯示屏是藍色背光白色字體

字符型LCD1602通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,引腳定義。

HD44780內(nèi)置了DDRAM、CGROM和CGRAM。

A. DDRAM就是顯示數(shù)據(jù)RAM,用來寄存待顯示的字符代碼。共80個字節(jié).那么一行可有40個地址呀?是的,在1602中我們就用前16個就行了。第二行也一樣用前16個地址。

若想要在LCD1602屏幕的第一行第一列顯示一個"A"字,就要向DDRAM的00H地址寫入“A”字的代碼就行了。這是一個令初學(xué)者很容易出錯的地方,原因就是如果你要想在DDRAM的00H地址處顯示數(shù)據(jù),則必須將00H加上80H,即80H,若要在DDRAM的01H處顯示數(shù)據(jù),則必須將01H加上80H即81H。依次類推。

B. 1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形。字符代碼0x00~0x0F為用戶自定義的字符圖形RAM(對于5X8點陣的字符,可以存放8組,5X10點陣的字符,存放4組),就是CGRAM了。后面我會詳細說的。 0x20~0x7F為標(biāo)準(zhǔn)的ASCII碼,0xA0~0xFF為日文字符和希臘文字符,其余字符碼(0x10~0x1F及0x80~0x9F)沒有定義。

D44780的指令集及其設(shè)置說明,共11條指令:

1.清屏指令;2.光標(biāo)歸位指令;3.進入模式設(shè)置指令;4.顯示開關(guān)控制指令;5.設(shè)定顯示屏或光標(biāo)移動方向指令;6.功能設(shè)定指令;7.設(shè)定CGRAM地址指令;8.設(shè)定DDRAM地址指令;9.讀取忙信號或AC地址指令;10.數(shù)據(jù)寫入DDRAM或CGRAM指令一覽;11.從CGRAM或DDRAM讀出數(shù)據(jù)的指令一覽

程序編寫:1.初始化設(shè)置指令;2.寫指令帶忙檢測函數(shù);3.寫數(shù)據(jù)帶忙檢測函數(shù);4.寫地址坐標(biāo)函數(shù)。

#include //調(diào)用頭文件,可以去PICC18軟件下去查找PIC18FXX2.H

__CONFIG(1,XT) ; //晶振為外部4M

__CONFIG(2,WDTDIS) ; //看門狗關(guān)閉

__CONFIG(4,LVPDIS) ; //禁止低電壓編程

#define RSPIN RB5 //0 input instrument;1 input data

#define RWPIN RB4 //0 give LCD write instrument or data;1 read LCD information

#define EPIN RB3 //1 read infor;1-0 action instrument

//名稱: 1602檢測到忙

void lcd_wait_busy(void)//RS R/W DB7 DB6~DB0

{//讀取忙信號或AC地址信號:0 1 FB AC內(nèi)容7位

//BF=1 表示液晶顯示忙,暫無法接受單片機數(shù)據(jù)或指令

TRISD7=1;//為讀狀態(tài)做準(zhǔn)備

RSPIN=0;//選擇指令寄存器

RWPIN=1;//選擇讀

EPIN=1; //使能電平,1,讀信息

while(RD7==1);//,BF=1表示液晶顯示器忙

EPIN=0;

TRISD7=0;

}

//名稱: 1602寫命令函數(shù)(帶忙檢測)

void lcd_write_com_busy(unsigned char combuf)

{

lcd_wait_busy(); //調(diào)用忙檢測函數(shù)

RSPIN=0;//input instrument

RWPIN=0;//give LCD writing instrument or data

PORTD=combuf;//command to PD

EPIN=1;

asm("NOP");

EPIN=0;//1 to 0 action instrument

}

//名稱: 1602寫數(shù)據(jù)函數(shù)(帶忙檢測)

void lcd_write_data_busy(unsigned char combuf)

{

lcd_wait_busy(); //調(diào)用忙檢測函數(shù)

RSPIN=1;

RWPIN=0;

PORTD=combuf;

EPIN=1;

asm("NOP");

EPIN=0;

}

//名稱: 1602寫給顯示地址函數(shù)

void lcd_write_address(unsigned char x,unsigned char y)

{

x&=0x0f; //列地址限制在0-15

y&=0x01; //行地址限制在0-1

if(y==0x00)//送地址的時候應(yīng)該是0x80+Address

lcd_write_com_busy(x|0x80); //第一行的列地址寫入

else//second row 0x40

lcd_write_com_busy((x+0x40)|0x80); //第二行的列地址寫入

}

//名稱: 指定地址寫入函數(shù)

void lcd_write_char(unsigned char x,unsigned char y,unsigned char buf)

{

lcd_write_address(x,y); //寫入地址

lcd_write_data_busy(buf); //寫入顯示數(shù)據(jù)

}

//初始化開始

void lcdreset(void)

{

lcd_write_com_busy(0x38); //功能設(shè)定指令,設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。

lcd_write_com_busy(0x08); //顯示開關(guān)控制指令,顯示功能關(guān),無光標(biāo)

lcd_write_com_busy(0x01); //清屏指令

lcd_write_com_busy(0x06); //進入模式,每次定入1位數(shù)據(jù)后光標(biāo)右移,屏不移動

lcd_write_com_busy(0x14); //設(shè)定顯示屏或光標(biāo)移動方向指令,寫入新的數(shù)據(jù)后,光標(biāo)右移,顯示屏不移動

lcd_write_com_busy(0x0c); //顯示功能開,無光標(biāo),不閃爍

}

void main()

{

ADCON1=0X06; //所有IO均為數(shù)字口,模擬量輸入禁止

TRISB=0B11000111; //RB3-5設(shè)置為輸出

TRISD=0B00000000; //RD設(shè)置為輸出

lcdreset();

lcd_write_char(0,0,0x41); //A

lcd_write_char(1,0,0x42); //B

lcd_write_char(2,0,0x43); //C

lcd_write_char(3,0,0x44); //D

lcd_write_char(4,0,0x45); //E

lcd_write_char(5,0,0x46); //F

lcd_write_char(6,0,0x47); //G

lcd_write_char(7,0,0x48); //H

lcd_write_char(8,0,0x49); //I

lcd_write_char(9,0,0x4A); //J

lcd_write_char(10,0,0x4B); //K

lcd_write_char(11,0,0x4C); //L

lcd_write_char(12,0,0x4D); //M

lcd_write_char(13,0,0x4E); //N

while(1)

{

}

}

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

在單片機通信系統(tǒng)中,數(shù)據(jù)幀是實現(xiàn)設(shè)備間可靠對話的核心載體。不同于網(wǎng)絡(luò)通信中成熟的TCP/IP協(xié)議,單片機通信往往需要自定義數(shù)據(jù)幀格式,而幀頭、幀尾與校驗機制則是保障數(shù)據(jù)傳輸準(zhǔn)確性的三大關(guān)鍵。

關(guān)鍵字: 單片機 數(shù)據(jù)幀

隨著嵌入式技術(shù)的不斷發(fā)展,時序分析工具和方法也在不斷進步,未來將朝著智能化、自動化的方向發(fā)展,為開發(fā)者提供更高效的調(diào)試手段。但無論技術(shù)如何發(fā)展,扎實的時序分析基礎(chǔ)都是嵌入式開發(fā)者不可或缺的能力,只有深入理解通信時序的本質(zhì)...

關(guān)鍵字: 時序 單片機

在嵌入式系統(tǒng)設(shè)計中,不同架構(gòu)、不同廠商的單片機協(xié)同工作早已成為常態(tài)。從8位的51系列到32位的STM32,從精簡指令集的PIC到復(fù)雜指令集的AVR,這些性能各異的單片機如何突破硬件差異實現(xiàn)數(shù)據(jù)交互,是嵌入式開發(fā)中的核心課...

關(guān)鍵字: 嵌入式 單片機

在嵌入式系統(tǒng)開發(fā)中,單片機的時鐘系統(tǒng)是整個系統(tǒng)的"心臟",所有的指令執(zhí)行、外設(shè)操作、定時器中斷都依賴于精準(zhǔn)的時鐘信號。但在實際開發(fā)過程中,很多開發(fā)者都會遇到單片機時鐘不準(zhǔn)的問題,表現(xiàn)為定時器計時偏差、UART通信波特率錯...

關(guān)鍵字: 控制系統(tǒng) 單片機

在單片機開發(fā)與調(diào)試過程中,復(fù)位電路作為保障芯片正常啟動的核心模塊,其穩(wěn)定性直接影響程序燒錄與系統(tǒng)運行。實際應(yīng)用中,不少開發(fā)者會遇到“接穩(wěn)壓電源可正常燒錄,接入電池后卻無法燒錄程序”的故障,此類問題多與復(fù)位電路設(shè)計、電池供...

關(guān)鍵字: 單片機 復(fù)位電路 時序匹配

在單片機的世界里,“字節(jié)”(Byte)是一個貫穿始終的核心概念。從存儲數(shù)據(jù)到執(zhí)行指令,從變量定義到外設(shè)通信,字節(jié)無處不在。很多初學(xué)者在學(xué)習(xí)單片機時,往往更關(guān)注復(fù)雜的程序邏輯和外設(shè)驅(qū)動,卻忽略了字節(jié)這個基礎(chǔ)知識點,導(dǎo)致在后...

關(guān)鍵字: 單片機 字節(jié)

在單片機的數(shù)字邏輯中,我們通常最關(guān)注的是高電平和低電平兩種狀態(tài),它們構(gòu)成了二進制數(shù)字世界的基礎(chǔ)。然而,除了這兩種狀態(tài)之外,還有一種至關(guān)重要但常常被忽視的狀態(tài)——高阻態(tài)(High Impedance State)。高阻態(tài)就...

關(guān)鍵字: 單片機 高阻態(tài)

對于PIC入門者來說,不需要盲目追求高端開發(fā)板,一塊功能均衡、資料豐富的入門款就能滿足需求。比如Microchip官方推出的PIC16F84A開發(fā)板,它搭載經(jīng)典的8位PIC內(nèi)核,引腳布局清晰,自帶LED、按鍵等基礎(chǔ)外設(shè),...

關(guān)鍵字: PIC 單片機

該低功耗器件支持5V運行,在實現(xiàn)高性能的同時,能有效保障系統(tǒng)簡潔性與成本效益

關(guān)鍵字: MCU 單片機 工業(yè)自動化
關(guān)閉