1. 程式人生 > >51微控制器的LCD顯示

51微控制器的LCD顯示

一、lcd1602 (一)、管腳展示
(二)、管腳釋義
穿插:1602:意思:可以顯示2行16列字元 (三)、時序圖 1、
看的方法:先做垂線時間軸t,可以看到RS先變化(有交叉即變化),然後看到同一垂線上的R/W被拉低,DB0--DB7 改變電平,之後E被拉高,持續TPw (四)、LCD1602寫命令和資料函式 static void lcd_write_cmd(unsigned char byte) {     RS = 0;//寫入命令,R/S被拉低       RW = 0;//寫       LCDPORT = byte;       E = 1;//E被拉高       delay_us(10);//延時       E = 0;//E被拉低 } static void lcd_write_date(unsigned char byte) {     RS = 1;//寫入資料,R/S被拉高       RW = 0;       LCDPORT = byte;       E = 1;       delay_us(10);       E = 0; } (四)、LCD初始化函式 static void lcd_init() {     delay_ms(5);       lcd_write_cmd(0x38);//設定顯示位數,行數,點陣值,寫四次,防止不成功       delay_ms(5);       lcd_write_cmd(0x38);       delay_ms(5);         lcd_write_cmd(0x38);       delay_ms(5);       lcd_write_cmd(0x38);       delay_ms(5);       lcd_write_cmd(0x08);//設定游標       delay_ms(5);       lcd_write_cmd(0x01);//清屏       delay_ms(5);       lcd_write_cmd(0x06);//設定自動加一位顯示       delay_ms(5);       lcd_write_cmd(0x0c);//開啟顯示       delay_ms(5); } (五)、LCD相關命令



(六)、LCD寫入函式 void main() {       lcd_init();//初始化       lcd_write_cmd(0x80);//確定寫入地址       lcd_write_data('a');//確定寫入值       while(1); }
(七)、自定義字元顯示
1、低六位可編輯: A5 A4 A3 :表示編輯的是第幾個自定義字元 A2 A 1 A0:表示編輯的是某個字元的第幾行 2、CGRAM地址範圍:從0X40----0X7F,LCD1602為8行5列 3、自定義圖形函式 void lcd_display_self() {         lcd_write_cmd(0x40);//確定寫入的CGRAM位置         lcd_write_date(0xff);//低三行全亮,因為LCD只有五位,所以0X1F和0Xff是一樣的         lcd_write_date(0xff);//確定過地址之後行數自動加一         lcd_write_date(0xff);         lcd_write_date(0x07);//第四五六行為0000 0111,只兩三列         lcd_write_date(0x07);         lcd_write_date(0x07);         lcd_write_date(0x03);//第四五六行為0000 011,只亮兩列列         lcd_write_date(0x03);         lcd_write_cmd(0x80+0x40);//確定要顯示的DDRAM的地址         lcd_write_date(0);//表示寫入的為第0個字元 } 4、CGRAM和DDRAM地址示意: