久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

STM32軟件SPI驅(qū)動1.8寸TFT-LCD完整教程

STM32軟件SPI驅(qū)動1.8寸TFT-LCD完整教程 如果你第一次玩1.8寸TFT-LCD大概率會經(jīng)歷這些屏幕接上電背光亮了但是屏幕白茫茫一片不管你往寄存器里寫多少命令都沒反應(yīng)。我也從這個狀態(tài)過來的。后來發(fā)現(xiàn)卡住大多數(shù)人的往往不是屏幕本身而是驅(qū)動方式的選擇——很多店家給的例程默認走硬件SPI硬件SPI的引腳在自己板子上又經(jīng)常和別的外設(shè)撞車一旦出問題很難定位。這篇文章我要分享的就是我最終穩(wěn)定跑通的方案STM32通過軟件SPI驅(qū)動1.8寸TFT-LCD也就是用GPIO手動模擬SPI時序把底層的每一位時鐘、每一個電平都攤開來看。這套方案適合剛學(xué)會GPIO輸出、還沒系統(tǒng)學(xué)過SPI外設(shè)的初學(xué)者也適合硬件SPI引腳被其他模塊占用、需要靈活換引腳的項目。128x160的分辨率不大軟件SPI的帶寬完全夠用。1. 為什么這塊屏的驅(qū)動要用軟件SPI先說結(jié)論軟件SPI不是來替代硬件SPI的它是很多實際場景里更省事、更好排查問題的選擇。1.8寸TFT-LCD的分辨率只有128x160滿屏刷一種顏色也才40多KB像素數(shù)據(jù)軟件模擬的方式完全扛得住。如果你只是做菜單界面、顯示傳感器數(shù)據(jù)、畫個波形曲線那軟件SPI的刷新速度綽綽有余。1.1 硬件SPI和軟件SPI到底差在哪硬件SPI是芯片內(nèi)部集成的外設(shè)你只要配置好SPI_CR1寄存器、指定好波特率、極性/相位然后往數(shù)據(jù)寄存器里丟一個字節(jié)剩下的移位輸出、時鐘生成都由硬件電路自動完成CPU基本不參與。軟件SPI則完全是另一條路把SCK、SDA對應(yīng)的GPIO引腳當作普通IO口用代碼循環(huán)去翻轉(zhuǎn)電平往SDA上放一個bit再讓SCK來一個上升沿如此重復(fù)8次湊夠一個字節(jié)。這兩種方式的區(qū)別可以列個表看對比項硬件SPI軟件SPI引腳靈活性固定綁定在復(fù)用引腳上任意GPIO都能用傳輸速度輕松跑幾MHz甚至更高實測大約幾百kHz到1MHz左右CPU占用外設(shè)自動處理占用極低每個bit都要CPU翻轉(zhuǎn)占用高調(diào)試難度配置項多出問題排查鏈路長代碼直觀波形一眼能看懂適用場景刷視頻、大屏動畫、高速傳感器菜單、儀表盤、數(shù)據(jù)展示在實際使用中軟件SPI還有一個隱藏優(yōu)勢你可以隨時調(diào)整引腳連接。比如畫好的PCB走線發(fā)現(xiàn)問題或者手頭只剩某個空閑引腳只需要改一下宏定義不用重新配置SPI外設(shè)。1.2 什么場景下優(yōu)先考慮軟件SPI我歸納了三個最典型的場景。第一種是硬件SPI被占用了。STM32F103C8T6這顆芯片雖然有兩個SPI外設(shè)但項目中W25Q128存儲、RF24L01無線模塊往往各占一個剩下的引腳還要給串口、定時器、ADC屏幕就只能去普通GPIO上想辦法。這時候軟件SPI幾乎是唯一解。第二種是引腳布局問題。很多藍板STM32F103C8T6最小系統(tǒng)板的硬件SPI1引腳在PA5/PA6/PA7如果這些引腳已經(jīng)接了編碼器或者舵機再去接屏幕就得飛線繞板子信號不穩(wěn)定不說看著也別扭。軟件SPI可以直接把屏幕接到閑置的PB口一排排插針上整潔又可靠。第三種是學(xué)習SPI協(xié)議本質(zhì)。用軟件模擬時序的時候你能直觀看到SCK電平怎么翻轉(zhuǎn)、SDA數(shù)據(jù)什么時候被采樣、為什么CS要拉低才能選中設(shè)備。這些硬核知識通過波形和代碼雙重驗證比單純用硬件外設(shè)黑盒操作理解深得多。之后再去用硬件SPI配置寄存器時你心里會非常有底。2. 動手之前的準備屏幕引腳、接線與工程環(huán)境硬件準備的核心就一句話把屏幕的6根信號線接到STM32的任意GPIO上供電方式看清模塊絲印。下面我以最常見的STM32F103C8T6藍板為例把整個準備過程拉通。2.1 1.8寸TFT-LCD引腳定義與接線表1.8寸TFT-LCD模塊一般引出8個引腳但實際上我們需要操作的只有6個信號引腳。各廠家絲印命名略有差異最常見的標注是VCC、GND、CS、RES、DC、SDA、SCK、BLK其中SDA也叫SDI或MOSIDC也叫RSSCK也叫SCL或者CLK別被叫法繞暈對應(yīng)關(guān)系如下屏幕引腳類型說明VCC電源供電正極3.3V或5V取決于模塊GND電源供電地CS片選拉低選中屏幕芯片RES復(fù)位硬件復(fù)位信號低電平有效DC數(shù)據(jù)/命令選擇低電平表示寫命令高電平表示寫數(shù)據(jù)SDA/MOSISPI數(shù)據(jù)輸入主控向屏幕發(fā)送數(shù)據(jù)SCK/SCLSPI時鐘主控產(chǎn)生的時鐘信號BLK背光控制拉高或接電源點亮背光我的接線方案是全部走PB口避免和SWD調(diào)試口PA13/PA14沖突也和串口1的PA9/PA10分開屏幕引腳STM32引腳說明CSPB10軟件片選RESPB12復(fù)位控制DCPB14命令/數(shù)據(jù)切換SDAPB15數(shù)據(jù)輸出SCKPB13時鐘輸出BLK3.3V串100R電阻背光常亮VCC3.3V模塊供電GNDGND共地這里有個注意點模塊背面的絲印如果寫5V是可以接5V供電的因為模塊上大多有穩(wěn)壓芯片轉(zhuǎn)成3.3V給屏幕核心供電如果絲印直接寫3.3V老老實實接3.3V。但無論哪種情況ST7735的邏輯IO電平都不支持5VSTM32輸出3.3V直接接過去是安全的。BLK背光引腳直接接3.3V也可以但我建議串一個100R電阻防止背光電流過大實測亮度也足夠。2.2 STM32CubeMX配置與GPIO初始化現(xiàn)在新學(xué)STM32基本都是CubeMX HAL庫這套組合了配置起來比標準庫快很多。打開STM32CubeMX芯片選STM32F103C8Tx按下面步驟配置RCC選項里HSE選擇Crystal/Ceramic Resonator讓外部8MHz晶振作為時鐘源。SYS選項里Debug選擇Serial Wire保留SWD下載調(diào)試功能。在引腳規(guī)劃界面把PB10、PB12、PB13、PB14、PB15分別點擊配置為GPIO_Output。逐個引腳檢查GPIO Output levelCSPB10初始化為High因為片選默認高電平不選中設(shè)備其余引腳初始化為Low。GPIO Speed統(tǒng)一選擇High這個選項影響IO翻轉(zhuǎn)速度選High能確保軟件SPI高電平持續(xù)時間夠短、時序更穩(wěn)定。Clock Configuration里確認SYSCLK為72MHzAPB2外設(shè)時鐘為72MHz。Project Manager里Toolchain選擇MDK-ARM生成工程。生成之后HAL_GPIO_WritePin這個函數(shù)夠用了。我習慣用宏把引腳操作封裝一層這樣萬一后面要換引腳只需要改宏定義不用在代碼里到處找#define LCD_CS_PORT GPIOB #define LCD_CS_PIN GPIO_PIN_10 #define LCD_RES_PORT GPIOB #define LCD_RES_PIN GPIO_PIN_12 #define LCD_DC_PORT GPIOB #define LCD_DC_PIN GPIO_PIN_14 #define LCD_SDA_PORT GPIOB #define LCD_SDA_PIN GPIO_PIN_15 #define LCD_SCK_PORT GPIOB #define LCD_SCK_PIN GPIO_PIN_13 #define LCD_CS_LOW() HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_RESET) #define LCD_CS_HIGH() HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_SET) #define LCD_RES_LOW() HAL_GPIO_WritePin(LCD_RES_PORT, LCD_RES_PIN, GPIO_PIN_RESET) #define LCD_RES_HIGH() HAL_GPIO_WritePin(LCD_RES_PORT, LCD_RES_PIN, GPIO_PIN_SET) #define LCD_DC_LOW() HAL_GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, GPIO_PIN_RESET) #define LCD_DC_HIGH() HAL_GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, GPIO_PIN_SET) #define LCD_SDA_LOW() HAL_GPIO_WritePin(LCD_SDA_PORT, LCD_SDA_PIN, GPIO_PIN_RESET) #define LCD_SDA_HIGH() HAL_GPIO_WritePin(LCD_SDA_PORT, LCD_SDA_PIN, GPIO_PIN_SET) #define LCD_SCK_LOW() HAL_GPIO_WritePin(LCD_SCK_PORT, LCD_SCK_PIN, GPIO_PIN_RESET) #define LCD_SCK_HIGH() HAL_GPIO_WritePin(LCD_SCK_PORT, LCD_SCK_PIN, GPIO_PIN_SET)環(huán)境方面再提醒一句第一次在Keil里下載程序記得先把ST-Link驅(qū)動裝好Options for Target - Debug里選擇ST-Link Debugger并確認能識別到芯片IDCODE。如果板子上是CH340或CP2102串口芯片那對應(yīng)的串口驅(qū)動也要裝好否則printf調(diào)試信息永遠看不到。很多人卡在這一步以為代碼有問題其實是電腦根本沒枚舉出設(shè)備。3. ST7735初始化序列從復(fù)位到亮屏每個命令都在干什么1.8寸TFT-LCD模塊的核心是一顆叫ST7735的驅(qū)動芯片。這塊芯片內(nèi)部集成了顯存GRAM和掃描控制邏輯MCU不需要一直去刷新屏幕只要把像素數(shù)據(jù)通過SPI寫到它的GRAM里ST7735自己會不停地掃描GRAM并驅(qū)動液晶面板顯示。理解這一點特別關(guān)鍵。3.1 ST7735的核心工作原理整個通信模型可以類比成向一塊畫板填格子CS是“點名”拉低表示“選中你這塊畫板我開始跟你說話”DC是“告訴畫板我接下來要說什么”說命令還是說數(shù)據(jù)SDA和SCK則是真正傳遞信息的那根線和那個時鐘節(jié)拍RES是“把畫板恢復(fù)成出廠狀態(tài)”。ST7735有很多寄存器有的控制顯示方向MADCTL有的控制像素格式COLMOD有的控制電源和伽馬曲線。初始化就是按照芯片手冊規(guī)定的順序依次設(shè)置這些寄存器讓它進入可以正常顯示的狀態(tài)。ST7735內(nèi)部GRAM的容量是128x160x16bit因為每個像素用16位RGB565表示剛好是40KB左右。當MCU連續(xù)寫入像素數(shù)據(jù)時GRAM的寫地址會自動遞增自動從左到右、從上到下填充滿你設(shè)置好的窗口區(qū)域這個自動遞增特性是我們后面能高效刷屏的基礎(chǔ)。3.2 初始化代碼逐段拆解ST7735芯片有R版和S版兩個常見版本初始化序列有差異。ST7735R老版常見紅色PCB需要配置一整套電源、幀率、伽馬寄存器才穩(wěn)定ST7735S新版常見藍色/黑色PCB初始化簡單很多有些屏只要最基本幾步就能點亮。判斷方法很簡單看模塊背面絲印或者問賣家。先給一版最簡初始化適合ST7735Svoid LCD_Init(void) { // 硬件復(fù)位 LCD_RES_LOW(); HAL_Delay(120); LCD_RES_HIGH(); HAL_Delay(120); // 軟件復(fù)位 LCD_Write_Cmd(0x01); // SWRESET HAL_Delay(150); // 退出睡眠模式 LCD_Write_Cmd(0x11); // SLPOUT HAL_Delay(200); // 像素格式設(shè)為16位色 LCD_Write_Cmd(0x3A); // COLMOD LCD_Write_Data(0x05); // 16bit/pixel // 關(guān)閉反顯 LCD_Write_Cmd(0x20); // INVOFF // 開啟顯示 LCD_Write_Cmd(0x29); // DISPON HAL_Delay(100); }如果這版點不亮換成ST7735R的完整初始化。完整初始化會在SLPOUT之后、DISPON之前加入FRMCTR1幀率控制0xB1、PWCTR1電源控制0xC0、VMCTR1電壓控制0xC4、GAMMA曲線0xE0、0xE1等寄存器配置。這些參數(shù)每家面板略有差異最靠譜的來源是你買屏的店鋪給例程源碼照抄對應(yīng)的初始化函數(shù)即可。我把自己手頭這塊紅色PCB屏的參數(shù)補全過代碼如下void LCD_Init(void) { LCD_RES_LOW(); HAL_Delay(120); LCD_RES_HIGH(); HAL_Delay(120); LCD_Write_Cmd(0x01); // SWRESET HAL_Delay(150); LCD_Write_Cmd(0x11); // SLPOUT HAL_Delay(200); LCD_Write_Cmd(0xB1); // FRMCTR1 幀率控制 LCD_Write_Data(0x01); LCD_Write_Data(0x2C); LCD_Write_Data(0x2D); LCD_Write_Cmd(0xB2); // FRMCTR2 LCD_Write_Data(0x01); LCD_Write_Data(0x2C); LCD_Write_Data(0x2D); LCD_Write_Cmd(0xC0); // PWCTR1 電源控制 LCD_Write_Data(0xA2); LCD_Write_Data(0x02); LCD_Write_Data(0x84); LCD_Write_Cmd(0xC1); // PWCTR2 LCD_Write_Data(0xC5); LCD_Write_Cmd(0xC4); // VMCTR1 LCD_Write_Data(0x0A); LCD_Write_Data(0x00); LCD_Write_Cmd(0xE0); // GAMMA LCD_Write_Data(0x02); LCD_Write_Data(0x1C); LCD_Write_Data(0x07); LCD_Write_Data(0x12); LCD_Write_Data(0x37); LCD_Write_Data(0x32); LCD_Write_Data(0x29); LCD_Write_Data(0x2D); LCD_Write_Data(0x29); LCD_Write_Data(0x25); LCD_Write_Data(0x2B); LCD_Write_Data(0x39); LCD_Write_Data(0x00); LCD_Write_Data(0x01); LCD_Write_Data(0x03); LCD_Write_Data(0x10); LCD_Write_Cmd(0xE1); // GAMMA - LCD_Write_Data(0x03); LCD_Write_Data(0x1D); LCD_Write_Data(0x07); LCD_Write_Data(0x06); LCD_Write_Data(0x2E); LCD_Write_Data(0x2C); LCD_Write_Data(0x29); LCD_Write_Data(0x2D); LCD_Write_Data(0x2E); LCD_Write_Data(0x2E); LCD_Write_Data(0x37); LCD_Write_Data(0x3F); LCD_Write_Data(0x00); LCD_Write_Data(0x00); LCD_Write_Data(0x02); LCD_Write_Data(0x10); LCD_Write_Cmd(0x3A); // COLMOD LCD_Write_Data(0x05); LCD_Write_Cmd(0x20); // INVOFF LCD_Write_Cmd(0x29); // DISPON HAL_Delay(100); }初始化里這些延時不是隨便拍的ST7735從睡眠模式喚醒后內(nèi)部DC-DC轉(zhuǎn)換器和振蕩器需要時間穩(wěn)定延時不夠可能出現(xiàn)“十次有三次亮不了”這種玄學(xué)問題。我踩過一次RES拉低只等了10ms結(jié)果屏幕偶爾亮偶爾不亮把延時加到120ms之后徹底穩(wěn)定。4. 軟件SPI核心收發(fā)代碼上升沿采樣到底怎么模擬軟件SPI沒有硬件外設(shè)幫你計數(shù)和采樣所以一切邏輯都靠循環(huán)里的人工操作。代碼并不長核心就一個字節(jié)發(fā)送函數(shù)搞清楚這一段的電平變化邏輯整個驅(qū)動就拿下了一大半。4.1 字節(jié)發(fā)送函數(shù)的時序邏輯我在PB13上用GPIO生成時鐘PB15上放數(shù)據(jù)模擬的是SPI模式0空閑時SCK為低電平在SCK上升沿時數(shù)據(jù)被采樣有效。發(fā)送一個字節(jié)的流程是先把SCK拉低把SDA設(shè)置成當前要發(fā)送的bit最高位先發(fā)再把SCK拉高產(chǎn)生一個上升沿這時ST7735會在SDA上讀到一個穩(wěn)定的電平。循環(huán)8次后8個bit全部完成一字節(jié)發(fā)送結(jié)束。void SPI_WriteByte(uint8_t dat) { for (uint8_t i 0; i 8; i) { LCD_SCK_LOW(); // 時鐘拉低準備一次數(shù)據(jù)發(fā)送 if (dat 0x80) // 取出最高位 LCD_SDA_HIGH(); else LCD_SDA_LOW(); dat 1; // 左移準備下一位 LCD_SCK_HIGH(); // 時鐘拉高產(chǎn)生上升沿從設(shè)備采樣 } }注意循環(huán)體內(nèi)的順序先拉低SCK再改SDA最后拉高SCK。如果順序反了比如先改SDA再拉低SCK就會出現(xiàn)SDA變化瞬間和上升沿重疊的情況從設(shè)備可能采到不穩(wěn)定的電平。順序看似簡單卻是軟件SPI可靠性的關(guān)鍵。在STM32F103這種72MHz主頻下GPIO翻轉(zhuǎn)本身只要幾個時鐘周期整個函數(shù)跑起來大概1微秒多一字節(jié)完全滿足ST7735的工作要求。如果你發(fā)現(xiàn)屏幕偶爾顯示亂碼可以在這個函數(shù)里加幾個空操作延時比如每次電平切換后加兩個__NOP()給信號穩(wěn)定留點余量。但多數(shù)情況下不加延時也穩(wěn)定我自己跑下來滿速刷屏沒有任何問題。4.2 命令和數(shù)據(jù)的區(qū)分DC引腳的作用光有字節(jié)發(fā)送還不夠ST7735要知道你發(fā)的是命令還是數(shù)據(jù)這個信號由DC引腳決定。DC為低芯片把你的數(shù)據(jù)當成要寫入的寄存器地址或命令DC為高芯片把你的數(shù)據(jù)當成顯示內(nèi)容或者寄存器參數(shù)寫入GRAM。封裝成兩個函數(shù)void LCD_Write_Cmd(uint8_t cmd) { LCD_CS_LOW(); LCD_DC_LOW(); // 命令模式 SPI_WriteByte(cmd); LCD_CS_HIGH(); } void LCD_Write_Data(uint8_t dat) { LCD_CS_LOW(); LCD_DC_HIGH(); // 數(shù)據(jù)模式 SPI_WriteByte(dat); LCD_CS_HIGH(); }有些初始化命令后面要跟多個參數(shù)比如設(shè)置顯示窗口的CASET命令0x2A后面要跟4個字節(jié)參數(shù)所以實際使用中先寫命令再連續(xù)寫多個數(shù)據(jù)LCD_Write_Cmd(0x2A); // 列地址設(shè)置 LCD_Write_Data(0x00); LCD_Write_Data(0x00); LCD_Write_Data(0x00); LCD_Write_Data(0x7F); // 0~127共128列這里有一個優(yōu)化點如果在寫確認是命令時已經(jīng)拉低了CS那同一個命令后續(xù)的數(shù)據(jù)其實可以保持CS拉低連續(xù)寫不需要在每寫一個字節(jié)時都切換一次CS。但為了防止邏輯混亂和不必要的時序風險我封裝的兩個函數(shù)之間會切換CS。這個速度損失在初始化階段無所謂但在刷屏階段就必須優(yōu)化了下面說。4.3 優(yōu)化連續(xù)刷數(shù)據(jù)時別頻繁切換CS刷屏的本質(zhì)是在設(shè)置好窗口之后連續(xù)不斷地向GRAM寫入像素顏色。如果每個像素都調(diào)用一次上面那個帶CS切換的LCD_Write_Data你會發(fā)現(xiàn)刷一屏慢得離譜。因為每次CS拉高再拉低ST7735的串行接口會重新等待命令/數(shù)據(jù)標識窗口地址寄存器也可能被重置。正確做法是設(shè)置好窗口后把CS拉低不要動把DC拉高告訴芯片“下面全是數(shù)據(jù)”然后循環(huán)發(fā)送所有像素字節(jié)最后再把CS拉高。我實測這個改動讓全屏填充速度提升了接近一倍。void LCD_SetWindows(uint16_t x_start, uint16_t y_start, uint16_t x_end, uint16_t y_end) { LCD_Write_Cmd(0x2A); // CASET 列地址 LCD_Write_Data(x_start 8); LCD_Write_Data(x_start 0xFF); LCD_Write_Data(x_end 8); LCD_Write_Data(x_end 0xFF); LCD_Write_Cmd(0x2B); // RASET 行地址 LCD_Write_Data(y_start 8); LCD_Write_Data(y_start 0xFF); LCD_Write_Data(y_end 8); LCD_Write_Data(y_end 0xFF); LCD_Write_Cmd(0x2C); // RAMWR 準備寫GRAM }設(shè)置窗口時x、y都是16位參數(shù)所以分成高8位和低8位兩次發(fā)送。屏幕分辨率128x160CASET的范圍是0~127RASET的范圍是0~159參數(shù)寫錯就會出現(xiàn)顯示錯位或者花屏。后面填充顏色時CS只切換一次void LCD_Fill(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color) { uint32_t count (uint32_t)(x2 - x1 1) * (y2 - y1 1); LCD_SetWindows(x1, y1, x2, y2); LCD_CS_LOW(); LCD_DC_HIGH(); // 后面全是數(shù)據(jù) while (count--) { SPI_WriteByte(color 8); // 高字節(jié) SPI_WriteByte(color 0xFF); // 低字節(jié) } LCD_CS_HIGH(); }5. 刷屏與顯示內(nèi)容填充顏色、ASCII字符和BMP圖片屏幕上顯示任何內(nèi)容本質(zhì)都是往GRAM里寫顏色數(shù)據(jù)。把這一層抽象出來之后畫點、畫線、畫矩形、顯示字符甚至顯示圖片都是同一個套路先設(shè)置窗口再往窗口里填充顏色值。5.1 RGB565顏色編碼與單色填充ST7735在COLMOD設(shè)為0x05時每個像素用16位RGB565格式表示高5位是紅色中間6位是綠色低5位是藍色。這種格式舍棄了每個顏色分量的一部分精度把16位空間利用率拉滿。實際使用中我習慣用一個宏把RGB三通道的0~255值轉(zhuǎn)換成RGB565#define RGB565(r, g, b) (((r 0xF8) 8) | ((g 0xFC) 3) | ((b 0xF8) 3))注意轉(zhuǎn)換后的16位數(shù)據(jù)在字節(jié)發(fā)送時高位在前color 8先發(fā)高字節(jié)再發(fā)color 0xFF低字節(jié)。很多剛上手的朋友把順序搞反結(jié)果顏色整體偏色或者紅藍互換屏幕上圖形輪廓是對的但顏色全亂了。全屏填充一種顏色一行代碼就能實現(xiàn)LCD_Fill(0, 0, 127, 159, RGB565(255, 0, 0)); // 全屏紅色 LCD_Fill(0, 0, 127, 159, RGB565(0, 255, 0)); // 全屏綠色 LCD_Fill(0, 0, 127, 159, RGB565(0, 0, 255)); // 全屏藍色5.2 顯示ASCII字符需要自己準備字模液晶屏本身不認字符要顯示字母和數(shù)字必須把字符轉(zhuǎn)換成像素點陣數(shù)據(jù)插進GRAM。我用的是一種常用的8x16 ASCII字模庫每個字符占16個字節(jié)每個字節(jié)對應(yīng)一列的8個像素點從左到右共8列加上縱向16列正好組成8x16的字符。每個字節(jié)的最低位對應(yīng)字符的頂部還是底部不同的取模工具可能不同如果顯示效果是上下顛倒的把取模方向改成從下到上即可。顯示字符函數(shù)的核心邏輯是先按字符的位置設(shè)置顯示窗口然后逐列讀字模遇到為1的bit就填前景色遇到為0的bit就填背景色。關(guān)鍵是把窗口設(shè)置成8像素寬、16像素高然后逐像素輸出。void LCD_ShowChar(uint16_t x, uint16_t y, char ch, uint16_t color, uint16_t bg) { const uint8_t *font ASCII_8x16[ch - ]; LCD_SetWindows(x, y, x 7, y 15); LCD_CS_LOW(); LCD_DC_HIGH(); for (uint8_t i 0; i 16; i) { uint8_t byte font[i]; for (uint8_t j 0; j 8; j) { if (byte (0x80 j)) { SPI_WriteByte(color 8); SPI_WriteByte(color 0xFF); } else { SPI_WriteByte(bg 8); SPI_WriteByte(bg 0xFF); } } } LCD_CS_HIGH(); }字模數(shù)組ASCII_8x16的代碼網(wǎng)上很多直接下載或者自己用取模軟件生成都行。這段邏輯里0x80 j是在從高到低逐位讀取一個字節(jié)的8個bit剛好對應(yīng)屏幕上從左到右的8列像素。顯示中文需要額外準備16x16或者32x32的全角字模思路完全一樣只是字節(jié)數(shù)和行列數(shù)更多。5.3 用取模軟件顯示一張完整圖片顯示BMP圖片的流程本質(zhì)上就是把你準備好的圖片數(shù)據(jù)數(shù)組逐字節(jié)灌進GRAM。圖片需要預(yù)先在電腦上轉(zhuǎn)換成C語言的const數(shù)組我用的是Image2Lcd這款工具設(shè)置非常關(guān)鍵設(shè)置項推薦值輸出顏色16位真彩色像素格式RGB565掃描方式水平掃描行優(yōu)先高位在前勾選最大寬度/高度128 / 160生成的數(shù)組是const unsigned char gImage_xxx[]每個像素占2字節(jié)。顯示時直接設(shè)置窗口為圖片大小然后連續(xù)發(fā)送整個數(shù)組void LCD_ShowPicture(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *pic) { uint32_t total (uint32_t)width * height * 2; // 總字節(jié)數(shù) LCD_SetWindows(x, y, x width - 1, y height - 1); LCD_CS_LOW(); LCD_DC_HIGH(); while (total--) { SPI_WriteByte(*pic); } LCD_CS_HIGH(); }這個函數(shù)不關(guān)心圖片內(nèi)容只管逐字節(jié)搬運所以任何圖片只要轉(zhuǎn)成數(shù)組就能顯示。要注意取模軟件的掃描方式必須和你的窗口設(shè)置一致如果取模時是垂直掃描而代碼里窗口是水平填充圖像會變成“拉絲”效果一行一行錯位錯開。6. 白屏、花屏、偏色我把常見的坑都踩了一遍配置完這些代碼之后并不是所有板子都能一次點亮。下面這些坑都是我實際踩過的逐個排查基本能解決90%的問題。6.1 白屏的排查鏈路如果背光亮了但屏幕全白按下述順序查。第一步查硬件復(fù)位。很多模塊的RES引腳需要穩(wěn)定拉低再拉高的過程STM32上電瞬間RES引腳的電平如果被其他初始化邏輯干擾屏幕就會停留在復(fù)位狀態(tài)。用代碼在初始化最開始顯式做一次RES低120ms - 高120ms能排除絕大多數(shù)復(fù)位問題。第二步查DC引腳。DC接錯是白屏的另一個高發(fā)原因。DC一旦接反屏幕會把命令當成數(shù)據(jù)處理、把數(shù)據(jù)當成命令處理所有寄存器配置全部錯亂屏幕上就是一片白。確認DC接到了PB14代碼里DC宏定義正確。第三步查初始化序列是否匹配你的芯片版本。紅板ST7735R沒有完整伽馬配置就是白屏藍板ST7735S用完整配置反而可能花屏。先判斷版本再決定初始化方案不要混用。第四步如果你有邏輯分析儀直接抓SCK和SDA波形看初始化階段是否有電平翻轉(zhuǎn)。軟件SPI的速度正好在邏輯分析儀的采樣范圍內(nèi)方便得很。抓不到波形說明代碼根本沒跑起來那就是工程配置問題去查時鐘樹和GPIO模式。6.2 花屏和錯位的真正原因花屏的排查點比白屏更多但特征很明顯屏幕上能看出有東西在顯示只是色彩和位置不對。最常見的花屏原因是窗口設(shè)置和實際像素尺寸不匹配。比如把128x160的屏幕錯配成132x162或者CASET/RASET參數(shù)寫反了GRAM的寫入指針就會溢出到非預(yù)期區(qū)域出現(xiàn)“斜著錯位”的條紋。把窗口參數(shù)改成0~127和0~159通常就能解決。另一種花屏表現(xiàn)為顏色漸變、色斑明顯這不一定是代碼問題可能是模塊電源紋波偏大。我在用杜邦線供電、電源線較長的時候遇到過后來在VCC和GND之間并了一個100uF電解電容現(xiàn)象立刻消失。如果你用的是面包板飛線給屏幕供電多并個電容是好習慣。還有一種是MADCTL方向設(shè)置導(dǎo)致的“翻轉(zhuǎn)錯位”。ST7735的0x36寄存器控制掃描方向和RGB/BGR順序不同廠家的屏初始值不同。如果你發(fā)現(xiàn)顯示內(nèi)容上下顛倒或者左右反轉(zhuǎn)通過修改LCD_Write_Data(0x00)這個參數(shù)來調(diào)整。常用幾組值顯示方向MADCTL值豎屏普通0x00橫屏90度0x60豎屏180度0xC0橫屏270度0xA0這幾個值是經(jīng)驗值不同批次屏幕存在細微差異以實測為準。6.3 引腳電平與供電的灰色地帶ST7735的IO邏輯電平是1.8V~3.3V不支持5V。如果你的主控是5V供電的Arduino或者51單片機必須加電平轉(zhuǎn)換直接接大概率燒壞屏幕控制器或者出現(xiàn)各種奇怪亂碼。STM32本身輸出3.3V這一步反而安全但要注意千萬不能圖省事用5V供電然后直接接3.3V邏輯——電源域和IO電平域是兩回事。另外一個容易被低估的是杜邦線長度。軟件SPI雖然速度慢但線上反射噪聲依然可能導(dǎo)致數(shù)據(jù)錯誤。我試過用30cm的杜邦線連接屏幕滿速刷屏時偶發(fā)花屏縮短到15cm以內(nèi)就完全正常。如果現(xiàn)場不得不走長線那就把SPI_WriteByte的循環(huán)里加幾個__NOP()降速或者干脆把時鐘半周期拉長犧牲一點速度換穩(wěn)定性。最后再提一個值得一提的細節(jié)如果屏幕模塊是帶有PCB板載穩(wěn)壓的版本供電電壓標稱5V實際芯片邏輯部分還是3.3V。這種情況下供電接5V沒問題但不要同時把屏幕的SDA、SCK信號接到5V電平上信號線上沒有穩(wěn)壓芯片保護5V邏輯電平直接懟上去照樣可能損壞ST7735。寫在最后的一點實際建議這套STM32軟件SPI驅(qū)動1.8寸TFT-LCD的方案我已經(jīng)在好幾個項目里復(fù)用了包括一個室內(nèi)溫濕度監(jiān)測器和一個手持LCR表界面。我的體會是屏幕驅(qū)動本身不復(fù)雜但一定要把“時序”兩個字刻在腦子里。SCK什么時候翻轉(zhuǎn)、SDA什么時候變化、DC什么時候切換每一步都要清清楚楚。軟件SPI雖然慢但它把整個通信過程變得完全可控一旦出問題用邏輯分析儀看波形比對著硬件SPI寄存器猜原因高效太多。最后分享一個經(jīng)驗在調(diào)試階段建議把SPI_WriteByte里的時鐘速度刻意調(diào)慢一點比如在每次SCK翻轉(zhuǎn)后加幾個__NOP()這樣邏輯分析儀能更清晰地看清楚每一位數(shù)據(jù)。等整個鏈路確認無誤后再把這些延時拿掉恢復(fù)滿速刷屏。這種方法能有效區(qū)分“時序錯誤”和“邏輯錯誤”排查起問題來快得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久这里只| 久久综合激情| 99九九久久| 99国产精品自在自在| 熟妇综合一区二区三区| 日本99久久| 中文字日本乱码| 高潮9999外国| 国产日韩精品无码去免费专区国产| 玖玖婷婷五月天| 东北女人操比视频| 国产一级内射高清视频| 日韩草久视频| 欧美综合第一页| 亚洲欧美日韩综合在线尤物| 青青草在线视频美女| 熟女日韩| 日韩精品碰碰| 狠狠中文字幕| 久久亚洲不卡一区二区三区| 极品一区二区三区免费| 强奸乱伦大香蕉| 日本 欧美 国产一区| 午夜毛片高清免费不卡| 日韩免费看在线黄色片| 国产污视频麻豆传媒一区二区| 高清无码91| 九九热精品视频在线观看| 97在线/亚洲| 曰韩无码777| 青青草导航在线视频| 欧美视频一区二区在线| 在线看污网站| 中文字幕视频2区| 国产午夜精品一区二区三区牛牛| 色狠狠综合噜一二三区| 国产又猛又粗又爽又黄| 天天日日舔舔| 久久精品国产99精品亚洲蜜...| 98福利在线视频| 日韩人妻一二三区视频| 精品一区二区三区蜜桃| 亚洲资源网| 国产操偷| 伊人四虎综合| 五十路成人在线视频二区三区| 亚洲人妻五月丁香婷婷| 台湾大香蕉99热| 中文字幕精品日韩中文字幕| 国产老女人久久毛| 黄久久| 日韩人妻资源在线看| 一区二区三| 夜夜综合| 色女综合| 久久人妻97久久久久久久| 美国一区二区免费视频| 大香蕉草草| 欧美天天谢综合网| 97二区四区| 日韩精品永久在线观看| 精品国产乱码久久久久久蜜臀| 久久天天躁日日躁狠狠躁| 亚洲黄色影视| 日韩乱伦影音先锋| 国产亚洲日本精品在线| 国产东北女人在线视频| 操逼www.| 欧美成人黄网色网站| 国产黄片精品在线| 岛国视频一二三区| 免费视频97| 久久久久成人网| 96一区二区三区| 91劲爆| 亚洲色图 图片| 97久久久网站| 84YTCOM性无码| 亚洲国产精品9999在线观看| 国产午夜精品一区二区三区牛牛| 精品久久久av| 亚洲阿v天堂在线| 日本三级久| 一级做受视频免费是看美女| 我想要啊 啊 啊| 超碰到97情色| 99re98| 99re视频在线播放青草| 久久久久9999妇女| 日韩有码免费视频| 国产操逼视频在线观看| 亚洲有码视频二区| 人妻精品一区一区三区蜜桃91| 人人搞人人插人人操| 欧美日韩妖精91com| 爽爽淫人网| 亚洲最大网站av| 八戒午夜福利理论片| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 国产精品久久久777| 在线无码视频| 91久久久亚洲| 美女久久久| 在线不欧美| 98超碰欧美| 欧美五区| 亚洲高清视频在线观看| 淮穴色AV| 欧洲色色| 日本精品人妻少妇一区二区| 99re95| 超碰97久久观看| 国产大片精久久久久久| 99热婷婷| 歐美性天天| 欧美日韩国产中文精品字幕自在自线, | 亚洲精美粉嫩嫩泬在线观看 | 日本综合色图| 中字乱伦AV| 99操视频| 翘臀vidoes| 一区二区影院| 亚洲一区中文字幕一区| 日韩欧美俄罗斯A片| 日韩极品无码B| 免费又黄又裸乳的视频| 色婷视频| 精品乱子一区二区三区99| 国产精品久久久久久久久久久久久久久久| 歐美性天天| 97色欧州| 亚洲天天更新| 久精品无码av一区二免费国产在线观看 | 天天操狠狠日夜夜干超碰撸com视频在线观看| 亚洲色诱惑| 99999精品视频| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 人妻少妇色综合| 亚洲第一色页夜| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 人人操人人插 - 百度 - 百度| 91制服丝袜中文字幕| 丰满少妇精品一区二区| 欧美后入式| 殴洲老熟女| 久久久久女教师免费一区| 欧美精品亚洲精品日韩传电影| 激情五月天中文字幕色| 欧美三级中文字幕hd| 岛国免费黄色网址| 成人五月天丁香激情综合| 麻豆国产视频精品观看| 中国少妇XXXX做受| 亚洲AV小说| 极品美女嘿咻| 欧美色性爱| 丁香六月婷婷| 欧美+日产+中文| 国产做?爰片久久毛片?片美国| 99re这里只有精品中心播放| 欧美性夜| 亚洲天天艹| 丝袜色综合| 亚洲古典另类欧美在线| 欧美日韩系列| 91午夜无码| 99热99在线| 欧美乱伦专区| 九九超碰综合网| 亚洲AV性爱电影| 超碰日本97美女人妻人人玩人人爱| 色色色色色色色色综合| 91欧美大片| 亚洲精品成人| 欧美日韩国产精品久久色婷婷| 9久在线视频只有精品| 国产激情视频在线观看| 精品国产三级av韩国在线| 久久精品国产72国产精品福利| 玖玖视频在线资源一区二区三区| 青青草在线成人视频| 人妻精品视频一区二区三区| 97色视频在线| 久久欧美性爱视频| 2017亚洲天堂| 日韩情色AV| 中文字幕后石码四区五区| 91 亚洲 欧洲| av网站在线观看了| 国产风韵犹存熟妇三区| 午夜激情床戏激情| 久久性爱城| 欧美综合色综合| 国产 亚洲 一二三四| 91狠婷| 97资源久久| 黄色不卡视频| 精品女人999| 懂色天天爱天天日天天射天天澡| 性欧美999| 手机在线观看不卡无码av| 90后后入| ,国产乱人伦精品一区二区三区| a片在线播放| 精彩视频日韩| 在线国产一区二区av| 97资源欧美| 亚洲精品丝袜-不卡成人免费……| 射综合网| 久草久日| 嫩草 我啊~嗯~在线| 久久25| 丁香五月婷婷啪啪| 国产剧情AV不卡在线观看| 一区二区三区一亚洲中文字幕、综合区灬 | 亚洲欧美国产中文视频| 国产妇女精品视频青青草| 婷婷丁香久久| 国产精品三级视频网站| 亚洲系列第一页| 亚洲欧美综合网| 欧美中文狠| 久精品无码av一区二免费国产在线观看| 精品久久久av无码免费| 欧美综合天堂| 九九九九热只有精品| 国产精品白丝AV| 97天天插| 国产区在线| 久久精品人妻一区二区三区| 密臀在线免费观看| se吧提供国产乱老熟视频胖女人| 四虎影视精品| 一级黄碟在线观看| 午夜精品人妻二区三区| 国产高清成人传媒影视| 国产浮力影院第1页| 懂色aV一区二区天美传媒| 性色亚洲| 久操电影| 熟妇色99| 精品对白久久不卡| 超清福利精品视频在线| 亚洲精品无码少妇久久| 欧美日韩国产成人高清| 精品人妻中文字幕4399| 亚洲无码?第一页| 亚洲,日韩,欧美,成人播放| 综合97久久| 熟女网站最新| 久久久久9999妇女| 9ⅰ久久久天天| 大香蕉手机在线| 十八禁电影伊人网| 中文字幕欧美日本乱码一线二线 | 黄视频免费| 乱伦av麻豆| 亚欧Av| 在线只有精品| 少妇蜜汁| 亚洲做性| 国产精品亚洲天堂网址| 国产女人与拘做受视频免费| 99精品在线| 色综合99999| 变态综合色| 51国产午夜精品视频| 国产综合色精品在线观看| 大屁股xxxxx| 久久久性爱视频| 影视综合无码少妇| 久久熟女精品不卡一区| 日本操逼视频导航| 另类欧美| 日本色婷婷| 91无摭挡| 久久鲁干| 91黑丝美女| 欧美78P| 国产污视频麻豆传媒一区二区 | 黄片免费久久久久久久| Julia在线播放亚洲久久| 久久九精品| 蜜桃久久一区二区| 亚洲欧美国产成人综合不卡| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚洲久久东京热一二三四五区视频| 夜夜夜爽www精品视频| 青青操网| 大香蕉十区| 韩国手机不卡无码三级视频| 大香蕉一人在线| AAAA级日本片免费视频| 青青草天天亲夜夜操网| 日本三级精品| 2020中文字幕| 亚洲精品九九九| 国产精品色哟哟| 综合亚州欧美| 国内精品不卡无毒99999| 传媒在线观看一区二区三区| 精品亚洲国产成人AV制服丝袜| av草草在线电影| 国产亚洲精品美女久久久| 色五月激情网| 高清国产精品福利网站| 狠狠干综合| 欧美激情视频一区二区| 黑人精品成人一区二区三区| 婷婷成人久久久精品| 午夜在线播放| 亚洲男人天堂2013| 久久午夜伦| 啪啪啪东京| 男人 天堂 日 亚洲| 亚欧高清| 婷婷婷婷婷婷久久久久| 91真人天天在线| 成人AV在线电影| 天堂成人网| 色天使亚洲综合在线观看| 97欧美色综合| 亚洲一区二区精品福利| 中国一级操逼视频| 中文字幕av色| 99日韩| 自拍偷拍国产欧美日韩韩| 天天综合网合集91| 97人人干| 亚洲欧美自拍偷拍| 老熟女91视频| 中文字幕在线第二页| 精品国产人成在线| 91性网| 久久久久久免费电影| 五月丁香综合激情| 九九九精品| 少妇人妻在线| 日本黄色裸日本黄色裸体| 亚洲AV秘 精品久久老牛影视| 国产有码一区| 97久久视频| 乱伦系列一区二区| 69XX一中文字幕人妻91| 亚洲色图欧美色图在线播放| 操少妞在线视频| 真实高潮91| 五月激情影院| 干B| 97一本大道亚洲一区| 久久9视频| 青青操狠狠撩| 夜夜操二区| 国产精品制服丝袜清纯唯美 | 婷婷五月天久久精品视频一区二区三区| 亚洲午夜福利视频| 伊人专区一区二区三区| 国产精品久久久久亚洲av | 久草成人福利导航| baisiav| 丁香六月激情综合| 理论久久婷婷网8| 欧洲亚洲人人爽爽视频| 久久m| 操淫穴亚洲五月丁香| 成全动漫视频观看免费下载| 欧差乱伦二三| 26uuu性物| 传媒免费一区二区三区| 欧美综合色综合| 天天操天天7| 国产激情在线| 九九精品无码专区免费| 天天看天天日天天操| 99人妻碰碰碰久久久久禁片| 大香蕉免费3| 亚洲AV成人无码一二三久久| 黄片qw| 欧洲熟妇xxXx欧美老妇裸体| 亚洲 欧美 天天| 久久精品国产96精品亚洲拳交| 看一级黄色视频| 亚洲激情四射| 在线小视频| 国产精品久久久久9999小说| 宅男影院久久久,99| 333kkkk·亚洲com久久| 亚洲中文字幕精品久久久久久直播| 91xingse| 神马久久网| JuliaAnn丝袜熟女系列| 天天操天天舔| 久久有碼| 色综合久| 天天日天天舔天天喷天天射| 九九九九九精品十六| 97超碰大| 欧美精品庄| 性色av网站| 黄色不卡视频| 亚洲图片小说欧洲| 日韩免费三级黄片电影| 超碰在线99| 密臀在线视频| 亚洲AV麻豆Aⅴ无码电影一| 亚洲第一页色| 九七色图| 天天流夜夜操| 久久一区二区蜜桃| 久操精品网| 青青草影视蜜久久| av绯色| 蜜臀亚洲综合一二三四区| 免看60秒涩涩视频| 香蕉国产精品麻豆亚洲欧美日韩| 超碰精品在线| 成人三级片一区二区三区视频| 少妇高潮对白在线观看| 91国精产品| 国产精品日韩在线一区| 手机不卡视频不卡在线一二三区| 99在线啪| 91热爆在线| 黑丝制服中文字幕| 婷婷五月天在线观看| 五十路熟女工口| 中文字幕美女91| 日韩免费人妻色情网站| 张柏芝国产一区在线观看| 日本加靬比网站发布页| 日韩激情毛片一级久久久| 熟女中出视频| 天天躁日日躁狠狠躁| 久久久久久午夜男人的天堂| 中日韩免费看男女操逼大全| 99只有精品| 国产精品免费美女视频| 亚洲色图 欧美| 物业黑人 AV一区| 欧美日韩另类在线播放| 伊人久大| 99色悠悠| 视频黄色国产一级| 亚洲夜色在线| ,成人免费啪啪视频| 天天日骚逼熟女| 免费看国产曰批40分钟怎么下载| 91在线欧美| 天天操天天日天天干| 中文字幕 av v| 国产精品色片一区二区| 日日骚av| 欧美色色人| 欧美大香蕉专区网| 国产精品噜噜噜日日日| 91日日夜夜| 久久免费看高潮毛片韩国| 不卡中文字幕aⅴ在线| 91五十路| 超碰91在线| 亚洲日本大香蕉1| 激情文学 国产一二三aV| 亚洲操人| 强奸a片网| 天天干18禁| 综合网亚| 粉嫩国产精品久久粉嫩| 人人 操人人 操人人| 无码高清操逼| 性爱视频免费网址| 人妻夜夜爽天天爽三区麻豆AV网站| 男人成人黄色视频在线观看免费下载| 亚洲最大黄网| 妇女性内射冈站HDWWWCOM| 色偷偷2020免费视频播放| 青青草日逼视频| 亚州操操穴网| 天天弄欧美| 97在线欧洲| 99性视频| 99色在线| 无码99| 伊人网av| 中文字幕一二三区| 狠狠五月天| 青草青青久久久久久国产| 国产不卡片| 色女综合| 欧美色图97| 精品夜夜澡人妻无码AV| 亚州91| 亚洲加勒比| 久久99深爱久久99精品| 伊人国产AV| 欧美综合1性辶| 人人弄人人摸| 免费a级毛片av无码久久精品中文字幕| 欧美自拍偷拍综合图片| 成人免费福利在线观看| 精品中文字幕一区二区l - 百度| 国产尤物AV尤物在线观看不卡| 日韩国产不卡在线视频| 男人高清无码一区二区| 啪啪视频亚洲第一| 亚洲情色 自拍| 国产一级特黄大片处女| 激情综合五月婷婷| 大色综合网| 色婷婷影视| 亚洲日本天堂| 亚洲春色欧美激情自拍| 国产精品干干干| 国产家庭乱伦网址| 午夜精品久久久99| 日韩人妻无码不卡网站| 无码人妻精品一区二区三区99不卡| 99在线无码精品秘 入口黑人| 亚欧成人中文字幕一区| 嗯阿好爽好紧| 久久久久ab| 日本不卡一区| 午夜免费视频1000| 久草新免费| 国产成人精品午夜福利| 女人与公拘交酡2020视频| 日本一级性爱| 一区二区三区激情在线观看| 欧美72网页| 国产强奸乱伦无码视频| 在线观看综合精品亚洲| 亚洲少妇综合在线播放| 91色五月俺来也| 色一区二区三区综合| 久久亚洲欧美中文字幕国语| 99久久无色码| 亚欧免费观看视频| 六月丁香啪啪啪| 96超碰网| 人妻天天操天天爽视频免费| 91综合网在线| 屌色在线97视频| 精品午夜福利| 中日无幕一二三四区| 超碰九区| 激情五月综合网| 怡红院亚洲怡春院av| 1769一区| 亚洲天堂性爱| 日韩乱伦AⅤ| 麻豆天美国美国产| 啊啊啊爽爽| 日韩亚洲美女一区久久| 欧美成人一级麻豆| 婷婷另类小说| 色五月网址| 国产精品懂色tv影视免费观看| 狠狠色综合网| 麻豆国产精品午夜视频| 亚州高清色综合| 操逼不卡中文字幕| 国产白丝网站| 九久久九精品视频| 中文一区二区三区影院| 91丨精品丨国产丨丝袜| 国产精品一区二区三区在线密挑| 少妇久久久| 九九九九精品一区| 九九久久九九久久| 中文字幕一二区二三区人妻专区| 亚州色站 日韩电影| 再深点灬舒服灬太大了添视频| 婷婷人妻激情| 亚洲情色在线| 国产色精品午夜大片| 天天综合网网欲色| 亚洲中文字幕久久无码精品| 中文一区二区婷婷视频| 激情综合二| 国产精品久久| 亚洲图片第一页| 精品久久青青草| 亚洲二区精品在线观看 | 无码操逼网| se吧提供91精品国产91久久久久久 | 日本媚薬中文字幕在线| 欧亚日韩综合精品国产| 91精品国久久久久久无码| 欧美刺激色黄片免费看| 麻豆国产视频精品观看| 少妇无码999| 国产精品色约约| 久久 亚洲 日韩 人妻| 午夜色婷婷| 精品毛片av一区二区| 少妇被c 黄 免费观看| 久久久久久99999国产精品| 夜夜爽爽爽| 日本一区二区三区精品| 91日本在线观看| 日本91白丝| 国产亚洲精品第一最新| 丰满人妻无码一区二区三区| 五十路熟女人妻一区二区在线观看| 久久老熟女| 欧美日韩小说| 亚洲熟妇AV日韩熟妇在线| 天堂麻豆天美| 人妻在线中出视频| 日本91白丝| 热天堂一区二区| 男人兔费天堂| 五月天婷婷久久| 亚洲第一狼人丝袜美女另类| 亚洲精品成人| 人人做人人妻人人夜视频| 强奸国产在线| 一区在线观看中文字幕| 国产成人网站在线观看| 激情五月婷| 性色av蜜臀av色欲aV| 日本在线视频导航| 国产乱婷婷精品二区三区| 伊人国产视频| 丰满搜索结果 -第18页- 久久高清无码 | 色五月av| 九九拍拍精品视频在线播放| 91高清日| heyZO天然素人无码AⅤ专区| 强奸乱伦大香蕉| 俺去也婷婷| 五月开心网| 极品粉嫩一区二区| 亚洲极品| 国产内射爽爽大片| 女人被男人桶爽视频网站| 91九色精品熟女内射| 日han少妇无码| 91综合网在线| 性爱av在线免费观看| 欧美色图私拍91| 91国产在线精品| 综合另类| 久草五月| 日韩国产成人自拍视频| 免费观看的av| 97超碰伊人| 国产精品美女久久久久久网站| 成人av免费观看| 韩国三级三级BD在线| 精品免费1| 亚洲欧美视| 国产极品粉嫩馒头一线天av| 国产后入精品| 亚洲骚男同com| 午夜久久无码1000合集| 又黄又爽在线观看视频| 黄色AAAAA欧美| 热久日综合| 成人羞羞视频国产| 韩三级a视频在线观看| 蜜臀AV一区二区三区激情综合| 欧美日韩制服| 8050午夜少妇无码| 九九九九97| 偷拍自拍在线视频观看| 99热超碰在线| 国产午夜精品在线观看| 九九精品美女高溯喷水| 正宗无毛一线天嫩逼| 综合久久欧美| 自拍盗摄一区| 思思热久久成人| 呦女网站| 天天爽天天爽| 日韩免费av片高清无码| 日韩操人| 中日韓欧美高清| 国产一区二区三区中文字幕| 国产精品片| 婷婷15月天青娱乐| 无码日韩网站| 在线电影亚洲色图| 人妻乱仑一区二区三区| 国产自啪精品视频网站黑丝| 美国精品国产精品| 亚洲精品白丝| 97国产超湿| 欧美成人性爱视频免费观看| 欧美综合在线91| 国模少妇一区二区三区| av午夜玫瑰| 97人人干| 日本欧美一区二区三区免费| 国产99热| 青青欧美| 97久精品| 欧亚免费视频| 富女玩鸭子一级毛片| 日韩情色视频| 丁香成人五月天| 极品少妇久久久| 色婷婷成人| 午夜舔阴达高潮视频免费看| 久久偷拍人| 国产超碰国产97| 99热最新| 深田咏美亚洲精品福利社| 欧美A片中文字幕| 久久精品男人的天堂| 亚洲se91| 九九九九97| 色色婷婷五月天| 国产黄色影片在线观看| 伊人9| 国产成人啪一区二区| 天天干天天拍| 91精品大奶人妻| 蜜乳视频网站| 永久免费av无码网站国产app| 久久一区,青青青青草视频在线播放| 十八禁啪啪视频| 中文字幕在线第二页| 亚洲不卡不卡中文字幕不卡 | av婷婷色网| 艳美熟妇先锋一二三区| 久久五月天婷婷| 日韩精品中文字幕一| 国产在线综合福利网站| 久久久78| 综合 亚洲 欧美| 国产精品乱码久久久久| 成年无码动漫av片无尽在线| 夜夜精品视频| 人妻二区| 亚洲精品乱码线路中文字幕| 成人一二| 成人乱码一区二区三少妇| 美女被艹尤物视频| 亚洲高清无码免费观看视频| 午夜久久无码1000合集| 色色99| 欧美熟女少妇| 97干com| 男人天堂一区二区| ′ !γ}丶。。久久精品欧美一区二区三区| 99精品在线播放| 99re6久热只有精品6在线直播| 老熟女乱子伦中文字幕一区二区| 在线v中文字幕一区二区三区| 色婷婷丁香五月天| 啊啊啊好湿久久| 亚洲精品骚逼| 欧美亚洲丝袜人妻制服中文99| 欧美BT 亚洲色图| 岛国免费黄色网址| 精品国产乱码久久久久久影片| 欧美日本久久精品一区| 亭亭在线资源| 精品久久久久综合无码| 日韩久久.一级黄色片| 丁香五月天啪啪| 久久亚洲不卡| 欧美久久婷婷| 好涩综合| 丁香六月激情| 久久亚洲人妻| 久操国产在线| 亚洲精品乱码久久久久久蜜桃麻豆| 伊人久久88国产女| 精品一区二区三区蜜桃臀www| 欧美性天天| 人妻系列无码专区中文有码| 嗯嗯嗯啊啊啊在线免费观看| 东京热精品97综合网| 国产精品粉嫩福利在线| 青青色在线观看| 久久久久国产无av| 国模不卡一本二本三电影| 欧美老妇女内射网址| 日韩欧视频| 一区AV| www.狠狠操| www男人天堂| AV电影在线播放| 尤物视频偷拍免费| 亚洲男人天堂Av| 加勒比性爱成人在线| 乱伦一区二区三区‘| 清清草影| 久久精品国产亚洲AV高级北京| 中文久久一区| 色欲无码人妻日韩欧美精品| 九九激情网| 狠狠入| 日韩不卡在线一区二区| 精品久久久久黄少妇| 91n处女在线观看| 成 人片 黄色大片| 久久精品性| 久久久无码精品人妻二区| 色青青久久影视| 天天爱天天韩国日本牛牛牛牛 | 色噜噜精品一区二区三| 欧美91在线+|+欧美| 九月丁香婷婷色| 欧美影音在线| 黄网在线播放| 99色热| 中文字幕啊啊啊在线观看视频| 亚洲色图伊人网| 18啪啪手机免费性爱| 亚洲日韩黑丝| 午夜高清成人在线视频| 超碰导航97| 日本精品第一视频在'| 激情视频图片| 亚洲性综合9| 成人26uuu| 1000午夜黄色| 欧美视频中文字幕区| 丝袜视频一区二区在线播放国产中文| 日韩精品.久久精品.AV女优.天美传媒| 久热热| 日韩一级二级三级免费看完整版国语版 | 91国产精品熟女| 午夜福利成人免费视频| 精品无码秘 人妻一区二区| 男人的天堂久久狠| 91大胆欧美| 亚洲综合影院| 综合亚洲欧美| 亚洲精品美女操逼| caoni国产亚洲av| 婷婷婷婷婷婷久久久久| 在线色资源| 9长久久精品| 大香蕉人妻| 中文字幕亚洲热播人妻| 熟女熟妇伦久久影院毛片一区二区 | 中文字幕在线免费观看视频| 亚洲人成网站7777| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 一二三四区操操Av| 家庭乱伦国产精品| 另类专区加勒比| 国产极品久久久| www.91色综合| 草草网站影院白丝内射| 操碰97| 青青草在线视频播放器| 日韩八十路老熟女| 五十路熟女,国产欧美精品区一区二区三区| 久久综合久久综合人久久夜精品| 国产精品久久99日日| 欧亚性爱在线视频| 五月婷亚洲精品天堂| 91天美免费| 97干色| 久9精品| 久久久性爱| 欧美色一二三| 无码人妻精品一区二区三区九九| 香蕉一区二区三区在线视频| 秋霞一级视频在线观看免费| 亚洲欧美一区二区三区一猛片| 久久精品区| 亚洲欧美伦综合| 国产高清午夜成人在线观看| 日韩十八禁| 凹凸视频在线一区二区| 天堂69亚洲精品中文字| 粉嫩av在线| 试看日韩黄片| 岛国大片国产| 亚洲日本韩国在线| 99精品在线观看| 久热9| 中文字幕在线日亚洲9| 一区二区三区激情在线观看| 99热这里| 大香蕉在线视频重口味毛片在线| 色69大色97香蕉| 亚洲图片欧美另类综合免费视频大大香| 一卡二卡三卡| 污色区网站| 中日韓欧美高清| 美女黄色91| 欧美亚洲首页| 欧美亚洲国产91在线| 69久久| 一级黄色性爱裸体视频| 久久五十路熟女人妻| 韩国黄片aaaa| 亚洲中文字幕妇伦久久| 久久97资源 网| 日韩福利电影网| 福利伊人玖玖国产| 激情五月婷婷综合| 国产和美国毛片| 国产无码成人无码| 亚洲成人性爱在线观看| 亚洲永久永久永久永久一级一级一级精品| 丁香六月东京热| 久久香蕉国产线看观看亚洲女人 | 超碰吊日色| 99亚洲国产精品色一区二区三区| 激情五月天丁香社区| 国产小黄片在线免费观看| 黄资源| 久久超碰97| 久久欧美按摩999| 夜夜躁狠狠躁日日躁av| 99日精品欧美国产| 久久国产精品视频| 中国一级特黄大片护士| www.高清无码诱惑一区.com | 五月激情综合网| julia国产在线 | 人人操超碰在线| 色综合色欲色综合色综合色综合| 亚洲国产精品久久久久婷婷老年| www.av在线视频| 日本不卡一区二区三区| 亚洲欧综合另类无码一区| 色婷婷久久综合超碰| а√天堂资源官网在线资源| 人妻少妇av在线观看| 亚洲欧美性生活| 欧美日日操| 97超碰超| 国产AV天美| 亚洲国产欧美中日韩成人综合视频| 330Dv国产女人终合视频极品人与兽 | 婷婷亚洲五月***久久| 啪啪AV导航| 粉嫩不卡一区二区性爱| 国产精品网站免费| 亚洲成人在线乱码色午夜| 欧美激情专区| 你草精品在线视频| 成人a v在线播放免费| 色婷婷网| 亚洲双插| 成人精品视频一区二区| 久久国产在线一区二区| 欧美成人都市人妻| 蜜乳av一区二区| 亚洲91大片| 激情久久久| 欧美性生活男人的天堂| 蜜臀久久99精品久久久久久久久| 亚洲97成人在线观看| 超碰97在线 欧美 国产| 激情五月综合| 国产小视频91| 久久天堂| 日韩视频中文字幕| 亚洲人人夜夜澡人人爽| 大香蕉亚洲中文| 在线观看成人性爱免费小视频| 丰满人妻一区二区三区色-百度| 天天干夜夜操一区二区| 综合激情婷婷| 玖玖婷婷五月天| 久久久中文| 大香蕉日韩| 欧美78P| 亚洲大色堂| 女同在线视频一区| 操逼逼福利视频| 久热精品在线国产| 91春色| 久久久9 9 9精品| 夜夜嗷嗷一区二区| 亚洲AV资源| 99re3这里只有精品| 久久99操天天日| 国产熟女免费观看久久| 香蕉综合网| 日日不卡av| 嗯嗯啊啊啊好爽| 成年男人的天堂| 伊人大香蕉在线| 91真人天天在线| 欧美日韩淫加| 亚卅熟女乱色| 欧美91在线| 好吊色综合| 亚洲91网| 国产黄色影片在线观看| 亚洲丝袜少妇在线| 精品蜜乳AV免费观看| 中文字幕五月婷婷免费| 美女一区二区国产精品| 综合五月天| 九九九九九九九九九九九免费国产| 国模不卡一本二本三电影| 四虎在线免费视频| 色情婷婷久久五月天| 女人综合网| 精品无码久久久久久国产浪潮| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国产最新小视频在线播放下载| 少妇高潮特黄A片| 亚洲色婷婷| 色九月综合| 97人人夜| 国产亚洲精品美女久久久| 亚洲av综合色| 日韩欧美经典在线观看| 久久亚洲熟妇在线视频| 久久春色| 五月婷婷激情网| 96久久久精品| 亚洲男人天堂2017| 萌白酱自拍视频| 亚洲91网。| 精人妻无码一区二区三区伊人直播| 人人爱人人乐人人操| 色色色综合网| 黑人与人妻| a'v在线资源| 婷婷伊人| 大粗鳼巴久久久久| 日韩,欧美,中文在线| 亚洲一区二区三区久久 亚洲一区二区| 久久综合久色欧美综合狠狠| 中国一级αV| 日韩av乱伦| 欧美色图亚洲特色| 手机av亚洲丝袜美腿日韩第一页二页| 久久一二三四五六七八九区| AV在线性爱| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 狠狠 91| 国产精品久久久久久久久久久久久久| 国产一级黄色片在线观看| 啊啊啊啊啊好舒服视频| 东京热男人的天堂精品| 青青草视频在线观看一区二区| 777超碰| 亚洲高清无码免费观看视频| 国产精品九九| 久久久九九网站| 丰满人妻一区二区三区免费| 久99| 国产综合日韩伦理| 久久久国产精品亚洲精品| 东京热视频网| 欧洲综合视频| 久久久久久久伊人精品| 超碰到97情色| 开心五月深爱五月| 天天夜躁日日躁狠狠2002| 国产乱码精品久久久久久| 亚洲人体视频在线观看| 日韩欧美中文| 日本大香蕉综合网红本杳社区| 天天综合~91入口| 亚洲成人贴图| 综合欧美日韩在线| 中文字幕亚韩| 精品免费视频国产一区| 欧洲与亚洲欧美精品中文字幕| 色色色色网站| 国产91影院| 亚洲精品美女操逼| 91蜜桃婷婷狠狠久久综合9色| 美女黄站| 久草视频制服诱惑| 久久国产乱子伦精品免费女,网站| 人人插人人搞人人操| 人妻少妇精品久久久久久久| 亚洲怡春院| 亚洲国产精品乱码在线观看| 中文久久久| 久久精品电影| 色爱综合网欧美| 99热成人| 人妻熟女av国产网站| 日韩无码操逼片| 欧洲久久一二线| 超碰视97中文| www.久久| 亚洲人妻中文高清| 99亚洲国产精品色一区二区三区| 少妇蹲下买菜露大唇0| 97色论| 97色色色综合网站| 亚洲天堂中文字幕无码男同| 精品一二三区久久AAA片| 亚洲国产成人精品久久久国产成人一区二区 | 免费作爱一级视频| 精品无码欧美三级| 精品人妻高清麻豆av| 91AV天堂| 国产剧情一区在线观看| 欧美日韩国产中文精品字幕自在自线| 日韩中文字幕国产| 国产亚洲深夜激情| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 97资源亚洲| 久久超碰天天| 中文字幕久久亚州无码| 亚洲色图大香| 欧美日韩丝袜| 少妇人妻好深太紧了vr91| 久久riav中文精品| 另类专区加勒比| 偷拍五区| 夜夜夜夜爽| 久久中文字幕女同性恋一区| 黑丝日韩av丝袜av| 久久伊人青青草| 久久熟妇五十路一区| 青青草五月天| 青青草啪啪网| 夜夜操91744565| 亚洲综合影视| 偷拍2020| aV中文麻| 国产精品视屏| 97爱爱| 男女激烈网站最新| av绯色| 天天色播亚洲综合网站| 亚洲1区| 九九热精品| 小草精彩毛片| 久插综合| 国产自啪精品视频网站黑丝| 久久黄黄黄| 啪啪啪精品| 自慰白浆在线观看| 天美麻豆精品视频99| 1区2区3区中文字幕日韩| 一本色道久久综合狠狠操| a男人的天堂久久一级A毛片| 综合伊人网12色| 一区二区三区国产在线播放 | 在线观看成人性爱免费小视频| 狠狠操综合| 99国产精品免费| 亚洲极品| 日韩电影在线观看网址| 女人喷水视频在线观看| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 97视频900| 五月婷亚洲精品天堂| 人妻乱仑一区二区三区| 337p大胆噜噜噜噜噜91Av| 综合激情97| 无码78| 日韩成人网址| 青青草日韩免费观看高清在线| 欧美精品三区| 五月婷婷六月激情| 亚洲综合九| 国产野战露脸在线播放| 91黑丝少妇|