国产性生交xxxxx免费-国产中文字幕-啊灬啊灬啊灬快灬高潮了,亚洲国产午夜精品理论片在线播放 ,亚洲欧洲日本无在线码,色爽交视频免费观看

鍋爐信息網 > 鍋爐知識 > 鍋爐學習

一文搞懂8080協議

發布時間:

什么是 8080 協議?8080 時序也叫因特爾總線,一般mcu(mpu)模式的lcd上。Inter總線控制線有四根:RD:寫使能WR:讀使能DC(RS):數據/命令CS:片

什么是 8080 協議?

8080 時序也叫因特爾總線,一般mcu(mpu)模式的lcd上。

Inter總線控制線有四根:

  • RD:寫使能
  • WR:讀使能
  • DC(RS):數據/命令
  • CS:片選

LCD控制及傳輸數據所需要的管腳:

管教名稱功能描述
CS片選信號
DC(RS)數據或者命令管腳(1:數據讀寫,0:命令讀寫)
WRMCU(MPU)向LCD寫入數據控制線,上升沿有效,寫數據時 RD拉高
RDMCU (MPU) 從LCD讀數據控制線,上升沿有效,讀數據時,WR拉高
DB[x:0]8/9/16/18bit 雙向數據總線,一般8位MCU接口用的比較多
RST硬件復位 LCD 信號
BLLCD背光信號
IM2/IM1/IM0接口控制. IM2=0 串行,IM2 =1,IM1=0,IM0=0,6800/8080 8bit 并行接口;IM1=0,IM0=1,6800/8080 16bit 并行接口;IM1=1,IM0=0,6800/8080 9bit 并行接口;IM1=1,IM0=1,6800/8080 18bit 并行接口;
P686800/8080 選擇。0 表示8080,1 表示6800

讀寫數據

讀時序圖

通用時序圖如下:

讀數據的過程:

  • CS 拉低,選中
  • DC/RS 為高(讀數據)
  • WR 為高,禁止寫
  • 在RD的上升沿,讀線上的數據(D[0:7]),假設8位 8080并口
  • CS 拉高,取消片選

偽代碼:

LCD_CS = 0; //開始片選 nLCD_DC = 1; //讀數據 nLCD_WR = 1; //禁止寫 nLCD_RD = 0; //開始讀ndata = DATAIN();//讀取數據 nLCD_RD = 1; //結束讀nLCD_CS = 1; //結束片選

寫入數據

寫時序圖


寫數據的過程:

  • CS為低,選中
  • RD為高, 禁止寫
  • DC/RS為高(寫數據,寫命令拉低)
  • 在WR的上升沿,使數據寫入到 驅動 IC 里面
  • CS為高,結束一組數據讀取

偽代碼:

LCD_CS = 0; //開始片選 nLCD_RD = 1; //禁止讀 nLCD_DC = 1; //寫數據 nDATAOUT(Data); //輸出數據 ,先準備好數據,然后上升沿一次性更新到lcdnLCD_WR = 0; //寫入開始 nLCD_WR = 1; //寫入結束 nLCD_CS = 0; //結束片選

實列演示:GPIO 模擬讀寫時序

以GC9106 這塊LCD 驅動IC為例,介紹一下,如何根據datasheet,去模擬讀寫操作,方便后續遇到新的屏幕,可以快速入手。事實上,大部分時候,我們的主控一般都會存在lcd控制器,支持讀寫操作,只需要配置寄存器即可。不過通過GPIO模擬,對整個過程會有更新的認識。

第一步:根據硬件確認屏幕所接接口,確認引腳及協議:以8080 8位并行為例

協議:8080時序

引腳:LCD_CS、LCD_RD、LCD_WR、LCD_DC、LCD_Data[7:0]

第二步:根據 datasheet 閱讀讀寫時序

  • 讀時序

驅動IC會在下降沿產生數據,主控(MCU)在上升沿從D[7:0] 讀數據

整個讀數據的過程,分為兩步:寫入一個command address, 讀數據。

寫入cmd:

讀數據:根據時序圖,真正讀數據的過程中,第一個周期的數據是無效的,這個可以很好的解釋command列表中,為何第一次數據都是dummy data

  • 寫時序

主控(MCU)會在下降沿產生數據,驅動IC在上升沿從D[7:0] 讀數據


整個寫數據的階段分為兩個:寫命令和寫數據,唯一的區別是DC不一樣。

第三步:查看command列表。這里以讀ID為列(04H)



  • 閱讀command信息
  • 根據timing,先寫入一個cmd(04H)
  • 緊接著,讀四次數據。
  • 舍棄第一個數據(dummy data)
  • 注意:初始狀態和初始值。如果讀不出來數據,可能是上電時序的問題,這個時候可以通過硬件GPIO 復位一下lcd,然后在讀取數據。

write_cmd(0x04);nread_data(); //dummy datanID0 = read_data();nID1 = read_data();nID2 = read_data();

第四步:模擬基本讀寫時序操作。根據通用8080協議時序即可

此處用偽代碼表示思路即可:

static void write_lcd_dc(int isCmd, unsigned int value)n{n LCD_CS = 0; /* 拉低 */n LCD_RD = 1; /* 禁止讀 */n if (isCmd == 1) {n LCD_DC = 0; /* 拉低 寫命令 */n } else {n LCD_DC = 1; /* 拉高 寫數據 */n }n data_out(value); /* 準備數據 */n LCD_WR = 0; /* 拉低 */n delay10us(); /* 上升沿更新數據*/n LCD_WR = 1; /* 拉高*/n delay10us();n LCD_CS = 1; /*拉低, 取消片選*/n}nnstatic void data_out(unsigned int value)n{n /* 假設 data[0:8] 在一組GPIO上,并且連續n * 設置data[0:8] 為輸出狀態,切默認都輸出0n */n int i = 0;n for (int i = 0; i < 8; i++) {n LCD_Data[i] = ((value >> i) & 0x01);n }n}nnstatic unsigned int read_lcd_data()n{n int ret = 0;n LCD_CS = 0; /* 拉低,選中 */n LCD_WR = 1; /* 拉高, 禁止寫 */n LCD_DC = 1; /* 拉高,表明將要讀數據 */n LCD_RD = 0; /* 拉低, 開始讀數據*/n delay10us();n ret = data_In(); /* 讀數據*/n delay10us();n LCD_RD = 1;/* 拉高, 結束讀數據 */n delay10us();n LCD_CS = 1; /* 取消片選*/n n return ret;n}nnstatic unsigned int data_in()n{n int ret = 0;n /* 假設 data[0:8] 在一組GPIO上,并且連續n * 設置data[0:8] 為輸入狀態n */n int i = 0;n for (int i = 0; i < 8; i++) {n ret |= (gpio_get_value(LCD_Data[i]) << i);n }n n return ret ;n}


總結

本文介紹了8080協議的基礎時序,以及通用的讀寫操作,旨在了解學習8080協議。然后通過實際的lcd 驅動IC 應用舉例,介紹如何閱讀 lcd datasheet.通過GPIO 模擬讀寫操作,達到對整個協議的理解。

事實上,大多數情況下,我們不需要親自模擬時序,調試一款新屏時,一般通過配置lcd控制器,會自動模擬時序,只需要將原廠的setting,按照對應的規則,加入到驅動中即可。當然,也可以通過gpio模擬讀寫,將lcd的setting,通過自己模擬的讀寫接口,設進去。

上一篇:王炸機型榮耀80

下一篇:80T行走滾輪架

精選推薦

  • 催化燃燒設備供應商
    催化燃燒設備供應商

    催化燃燒設備供應商,催化燃燒處理裝置廠家,本裝置是采用廢氣先進入噴淋塔過濾——干式過濾—-蜂窩活性碳吸附—脫附再生——催化燃

  • 該不該有模具供應商
    該不該有模具供應商

    今天紅姐又來跟我探討供應商的管理問題了。故事是這樣的:供應商來料不良,原因是模具問題。而那個模具是我們找的一家模具供應商做的

  • 什么牌子高壓鍋好,高壓鍋哪個牌子好,高壓鍋什么牌子好,高壓鍋哪個品牌好
    什么牌子高壓鍋好,高壓鍋哪個牌子好,高

    1蘇泊爾 雙重安全閥門 高壓鍋雙重安全閥,防燙把手,復合底。這款高壓鍋擁有雙重安全閥門,更好的保證使用安全。搭載防燙傷把手,方便起

  • 高壓鍋啥牌子好,高壓鍋哪個牌子的好,什么高壓鍋牌子好,高壓鍋推薦選購指南
    高壓鍋啥牌子好,高壓鍋哪個牌子的好,什

    1、雙喜階梯型復底高壓鍋推薦理由:高壓鍋滿足上蒸下煮,飯菜同時進行,方便快速,有效提升烹飪效率。多重安全防護,安全系數較高,家人使用

0