在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC18F4521602簡單顯示規(guī)律

            PIC18F4521602簡單顯示規(guī)律

            作者: 時間:2018-07-31 來源:網絡 收藏

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

            本文引用地址:http://www.biyoush.com/article/201807/384692.htm

            1602液晶顯示器資料

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

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

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

            HD44780內置了DDRAM、CGROM和CGRAM。

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

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

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

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

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

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

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

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

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

            __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內容7位

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

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

            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(); //調用忙檢測函數(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(); //調用忙檢測函數(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)//送地址的時候應該是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ù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。

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

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

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

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

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

            }

            void main()

            {

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

            TRISB=0B11000111; //RB3-5設置為輸出

            TRISD=0B00000000; //RD設置為輸出

            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)

            {

            }

            }



            關鍵詞: 單片機

            評論


            相關推薦

            技術專區(qū)

            關閉