色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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国产精品免费| 日韩免费福利在线观看| 97超碰大| www.激情| 午夜福利免费精品视频| 男女一进一出视频久久| 中文字幕无码不卡啪啪| 超碰碰97| 欧美日韩国第一区| 大香蕉520| 福利社区午夜一区二区| 国产精品久久| 亚洲图片 欧美电影| 97干com| 国产浮力影院第1页| a亚洲欧美色欲| 人人摸人人舔一区二区| 久久国模av| 天天插天天射| 亚洲欧综合另类无码一区| 人妻色偷色噜| 成人小说另类在线| 女欧美一区二三区| 国产9 9在线 | 亚洲| 男人天堂2030| 久久精品噜噜噜成人看免欧美大片| 日本天天人人狠狠在线日美女 | 天天夜躁日日躁狠狠2002| 色与欲影视天天看综合网| 久久99手机免费视频| 久久久一级| 亚洲国产日韩欧美熟妇在线| 国产成人自拍视频在线| 亚洲欧美国产成人综合不卡| 亚洲中文国际强奸字幕| 97欧美性爱| 久久亚州精品成人Av无| 国产黄色影片在线观看| 国产精品视频麻豆入口| 岛国激情视频在线观看| 日韩免费在线视频观看| 国产精品亚洲天堂网址| 久久国内| 色色激情五月天| 日韩人妻 中文字幕| 日逼逼免费看| 黑人在线91| 久久久草成人网站久久久草成人久久久草久久久 | 99日精品欧美国产| 少妇高潮对白在线观看| 国产欧美伊人| 宗合情欲网| 极品后入免费视频| 精品久久久不卡一区二区| 欧美成不卡网| 啊啊啊啊啊啊啊好爽不要| 亚洲中文字幕妇伦久久| 国产AV线| 国产精品国产精品国产| 91丰满| 久久久久九九九| 男女啪啪啪18禁网站| 欧差乱伦二三| 欧美精品xxxwww| 久久精品亚洲成a人天堂| 亚洲古典另类欧美在线| 97中文超碰| 色哟哟-国产专区| 97久久免费| 免费精品AB| 亚洲激情视频| 蜜乳AV.COM| 91精品伊人久久久大香线蕉91| 激情综合久久| 97人人爱人人做人人乐| 99热线麻豆 | 欧美久久伊人| 激情99| 强上我不卡卡| 国产精品乱码久久久久久久| 欧美狠狠干| 亚洲国产尤物yw在线观看| 亚洲欧美日韩夜夜| 日日夜夜骚| 97资源站日韩| 国产精品欧美日韩久久| oumeisetu综合| 色网1| 精品国产Av无码久久久亚洲| 欧美亚洲| 亚洲美女30b| 男人的天堂日韩| 精品黄色电影| 日本久久99| 日本99一区二区| 亚洲伊人青青草| 大JI巴好深好爽又大又粗视频| 中文字幕一区二区在线日韩精品| 日产国产精品中文久久婷婷| 超碰97综合在线| 极品尤物自安慰| 99热97| 东北女人高潮视频| A V少妇特黄三级| 日韩午夜国产| 20cm女自慰在线日韩欧美| 色牛牛AV| 国产精品久久久久久9999| 婷婷超| 九九在线精品| 999热日韩精品| 另类小说综合网| 久久久一区二区三区四曲免费听| 干b网| 在线无码网站| 亚洲人妻一区二区三区| 揉揉揉夜夜| 手机在线观看不卡无码av| 91美女在线视频| 看日韩黄片| 狠狠中文字幕| 色欲av国内精品久久久久久| 婷婷色婷婷| 天堂性色| 91亚洲影院综合| 粉嫩av在线| 色综合色色| 丰满欧美放荡少妇在线| 亚洲一卡2卡3卡4卡乱码网站| 日韩欧美中文字| 色97干| 激情小说五月天| 成人性交午夜免费片| 精品亚洲| 亚洲综合有玛| 成人无码电影在线观看网| 9热9热综合网| 一线黄色免费性爱片| 91五月天| 亚洲精品啪视频| 亚洲97资源| 国产成人无码久久精品| 综合色区偷拍| 四虎国产成人精品免费一女五男| 思思热免费视频观看| 人妻蜜桃臀| 亚洲成人av色网| 99热伊人| 欧美色图偷拍另类| 久久精品国产72国产精品福利| 狠狠操狠狠燥| 丁香五月成人| 91久久久亚洲| 成熟熟女国产精品一区二区| 狠狠干综合| 午夜爽爽爽| 97久精品| 日人妻视频91| 永久电影三级在线观看| 歐美性天天| 久久久久国产精品片区无码直播| 在线中文字幕视频| 日本一久是| 色婷婷久久| 亚洲开心网| 色综合色色| 曰韩中文人妻视频| 中文精品少妇天堂| 亚洲永久永久永久永久一级一级一级精品| 亚洲操人| 国产av强奸美女| 精品在线78| 大香蕉伊人亚洲| 岛国黄色大片网站| 高潮毛片无遮挡高清免费| 中文字幕精品专区搜索结果91| 大奶啊啊好爽| 精品视频一二三中文| 九九aV| 亚洲色图国产另类| 91爱综合| 天天肏美女| 精品视频久久久久九九九九9999| 91爆操视频| 久久大黄片| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 国产一| 丰满人妻一区二区三区免费,| 免费的很黄很污的全部视频| 日韩精品一区二区高清| 亚洲天堂2020| 91美女小视频| 人妻丝袜二区| 欧美肥臀在线| 91成人久久| 狠狠热这里都是精品| 婷婷丁香六月| 精品人体无圣光凹凸| 好属操| 超碰欧美COM| 区二区亚洲婷| av东京热男人的天堂| 少妇高潮99p| 精品人妻一区二区视频| 操逼视频国产无套| 成年无码动漫av片无尽在线| 探花视频免费观看国产专区| 99热在线观看| 极品销魂美女一区二区 | 肏逼福利网站| 亚洲欧美在线观看无码| 欧美大香蕉久| 欧美极品性爱天天射| 色在线视频导航| 最新亚洲黄色免费电影| 成人毛片免费| 91精品久久久久五月天精品| 亚洲一区二区三区欧美日韩| 999亚洲国产视频| 久久伊人亚洲AV无码网站| 亚洲最新Av| 国产无码成人无码| 无码人妻一区二区三区色欲aⅴ| 久久伊人最新网址视频| 人人做,人人操,人人摸| av天堂天堂av日韩| 日韩黄色片子| 久久美女国产| 久久99视频| 欧美|91色综合| 国产精品一区人妻精品阁在线| 国产av尤物| 91久久久久久久久久久| 黑人精品久久97| 欧美激情黑人| 欧美日韩小说| 91久久久亚洲| 另类 日韩 熟女| 五月天色五月| 中文字幕视频在线观看一区二区| 9999亚洲电影| 久久人妻熟女一区二区| 国产精品999aaa| 日韩黄片视频试看| 97人人模人人爽人人| av大香蕉| 欧美日韩一干二干| 一区二区三区一亚洲中文字幕、综合区灬| 无码人妻精品酒店| 乱伦av麻豆| 99视频只有精品| 亚洲中文人妻色| 亚洲资源网| 欧美综合第一页| 高清无码久操视频| www.zbzhongsen.com| 精品国产污一区二区三区| 97超碰中文| 伊人天天久久动态图| 91c色| 殴美,日韩国产伦精品| 日本不卡码黄色| 色综合1991| 日本中文熟女视频| 欧美一区二区亚洲天堂| 超碰人妻中文在线| 熟妇视频一区二区三区在线| 乱伦AVxx| 欧美页片| 国内毛片欧美香蕉精品| 五月天偷拍| 欧美亚洲综合999| 午夜小电影在线插入淫高潮| 日韩偷拍色图| 亚洲极品| 干干干天天| 天天干一区二区| 啊啊啊啊嗯嗯在线久久久| 91久久九九精品国产综合| 超碰人妻在线| 啊啊啊啊,啊啊好多水| 欧洲亚洲国产综合在线| 大稥蕉免费视频这里只有精品| 男人天堂久久精品不卡| 久草免费福利在线播放| 国产亚洲色婷婷99精品91| 97啪啪| 先锋精品av色鲁| 97人妻人人躁人人玩人人| 偷拍亚洲熟女视频播放| 怡春苑东京热| 精品日韩人妻视频| 色盈盈影院| 国产无码成人无码| 99热免费| 91精品微拍福利| 久插不卡| 免费亚洲黄色视频在线观看| 少妇内射www在线观看视频| 欧美99999| 97网址www| 我想要啊 啊 啊| 国产亚洲国产超碰| 另类图片五月天| 中文字幕在线高清男人的天堂| 97在线无精品| 无码在线亚洲| 亚洲熟女人妻中文字幕一区二区 | 九九玖玖精品| 日韩黄片影院| 一二区在线观看视频| 亚洲国产麻豆一区二区三区| 亚洲久草AV色图| 国产日韩欧美三级片| 国产日韩中文字幕欧美| 久久一级无码精品毛片6| 蜜臀无码一区二区| 自拍鲍鱼一区在线高清观看免费| 伊人性在线视频| 激情五月天丁香| 欧美日韩在线小说 | 中国熟女网站| 人人插人人搞人人操| 丝袜视频网国产90| 校园春色 男人天堂 | 狼人久草| 成全在线观看免费观看| 台湾佬中文娱乐网久久久久久久久久com | 亚洲午夜免费狠狠干| 日韩三级伊人| 久久久99999久网站| 免费看欧美美女黄色大片| 超碰97人人乐| 精品无码久久久| 蜜乳成人AV| 夜夜嗨免费视频| 九九碰九九爱97| 日韩精品字幕| 少好三P| 精品四五区| 老子午夜伦不卡影院| 嗯嗯啊啊日韩精品| 看看小穴| 久久美女福利是上海美女| 9久精品| 97超碰亚洲| 日本久久99| 欧美精品二区视频在线| 东北女人| 久久久久无码| 新版天堂中文资源8在线| 99精品人妻| 97超碰总站| 国产极品999| 无码高清专| 中文乱码字字幕在线第5页| 高清不卡 中文 人妻| 色爽爽文学| 懂色AV蜜臀无码精品APP| 蜜臀久久99精品久久久久久-DVD原版全| 欧美日韩99精品麻豆传媒| 爽极品影院| 极品白嫩美少妇在地板上位骑射淫水泛滥| 老司机午夜福利视频一区二区| 国产热RE99久久6国产精品首| 日本精品一级二级三级| V A在线| 欧美在线中M| 色老汉色| 无码91| 人妻熟女av国产网站| 亚洲激情综合另类男同| 亚洲精品久久久久毛片A片拉屎 | 人妻娇喘 激情视频| 亚州男人的天堂| 黄网在线播放| www色日本| 99精品欧美一区二区三区桃色| 国产精品com| 香蕉精品二区二区| 玖色av| 亚洲系列欧美| 色综合99999| 九九九九九九九九九五码| 密臀在线免费观看| 欧美亚洲丝袜美女电影| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 无码国产Av| 综合激情二| 麻豆国产97在线| 亚洲激情视频| 日韩视频中文字幕| 久久久久久久久久va| 亚州熟女乱伦| 人人摸.人人色| 成人av影院在线观看| 亚洲男人综合| 国产亚洲美日韩Aⅴ中文字幕无码成人| 蜜乳中文字幕a在线| 91综合熟女| 欧美色干| 久久大黄片| 无码久久亚洲高清,| 国产JDAV无码视频在线观看| 国产曰批免费观看久久久| 在线欧美69V免费观看视频| 中国zzijzzijzzwww精品| 国产一区二区三区免费视频在性观看 | 国产Av超碰| 国产性爱在线视频一区二区| 日本www操操操| www欧美性爱| 夜色五月天| 99999久久久久9国产精品| 天天天肏屄欧美| 伦理弟一页| 日韩毛片9| 97视频免费| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 天天做日日做天天欢。| 亚洲天堂,男人| 97激情97激情| 日韩无码服务区| 校园春色综合网| 亚洲欧美在线观看无码| 午夜影美女日鸡鸡天天视频国产| 另类小说五月天| 97中文天堂| 久久99精品国产| 91 综合网| 奇米四色网| 午夜精品视频777| 国产精品情侣啪啪| 青青草原伊人网| 亚洲国产美女久久久久| 三级片网站在线播放| 久久大香蕉手机高清| 天堂资源站| 91亚洲欧洲| 无码WWW免费视频网站| 天美传媒国产原创中文字幕亚洲欧美另类 | 香蕉免费一区二区三区不读| 视频在线中文字幕| 91九色丰满高潮| 奶水 人妻 哺乳 在线| 高清国产无码av| 99操碰| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 欧美韩日精品资源| 精品人妻免费观看| 色综合久久久久| 五十路熟女工口| 九九九免费视频| 全球成人中文在线| 色精品极品| 亚洲色性| 日韩性爱播放| 中文字幕精品专区搜索结果91| 日本成a人v网站在线观看| 狠狠色色| 久久大香蕉97| 日韩欧美经典在线观看| 狠操91,com| 操操吧亚洲乱伦视频| 九九热免费国产视频婷婷伊人| 久久久久久99999国产精品| 成人无码在线超碰网| 免费AV播放| 国产9熟妇视频网站| 日韩无码黄色片| 亚洲欧洲日产国产综合网| 人人操欧美风骚| 99这里只有精品| 人妻酒店出差被中出免费在线播放| 日本欧美中文字幕| 96精品在线| 大香蕉淫人| 丁香五月色| 水滴偷拍| 丝袜美腿诱惑亚洲欧美视频在线观看| 日韩一级二级三级| 亚洲人成网www| 97精品视频| 玖玖97综合| 国产激情视频一区区三区| 91爽啪| 97在线观看| 91亚洲黑人| 国产又黄又爽| 天天舔九色婷婷| 手机看片日韩人妻| 日韩中文字幕精品一二三事国产精品| 亚洲一区二区中文字幕| 久久久久久中文| 91啪啪视频| 大香蕉综合网| 天天综合网91入口| 久久久国产亚洲精品系列| 欧美日本视频一区| 蜜臀少妇一区二区| 涩综合导航| 老司机午夜福利视频一区二区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 熟女自慰久久久| 亚欧视频在线| 78m啪啪啪| 肉丝网站91| 国产高清26uuu| 青青草大香蕉视频| 97超碰热线| 中国女人内射6XXXXX| 夜夜嗨一区| 欧美少妇一区二区三区| 色欲蜜臀AV| 欧美乱欲| 欧美综合网1| 激情综合五| 国产精品原创巨作?v网站| 中文子幕一二三| 亚洲色图激情小说| 日B操| 91热热色| 四季AV一区二区凹凸精品小说| 黄色欧美性爱视频| 亚洲人妻中文在线视频| 99草精| 75大香蕉| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 综合色91| 龙兴卡官方查询| 日韩在线视频1234| 人、人、摸,人、人、草| 日韩性爱小视频| 亚洲性综合11| 熟女精品一区二区在线观看| 欧美日韩夜夜| 91欧美| 岛国大片在线观看网站入口| 91在线视频国产网站| 神马久久免费电影观看| 久久爽爽精品| 人妻插插人妻人| 色五月婷婷在线| 久久肏大逼| 男女激烈网站最新| 98人妻精品一区二区色欲| 欧美97av| 熟人人妻少妇精品久久| 熟女91网| 天天影视之亚洲综合网| 国产精品欧美激在线| 精品熟女一区=区三区| 欧美色婷婷| 欧美婷婷五月天| 十八禁成人网站在线观看| 日韩99精品视频综合区| 少妇一级无码精品| 插入逼91| 人人操 欧美| 青娱乐国产剧情av一区| 久久午夜色播影院免费高清| 97日亚洲欧美| 欧美性暴力猛交| 国产后入清纯| 欧美色图片欧美色图| 精品一国2| 黄色不卡视频| 婷婷久草| 67914在线兔费成人视频| 亚洲日本大香蕉1| 加勒比久久av| 巨乳特殊服务按摩| 91久久久久久久久18| 婷婷五月天激情四射| 日本506070| 亚洲无线观看久久| 久久精品国产精品一区| 日韩欧美大力操| 国产AV久久野战精品| 国产aⅴ无码片毛片一级网站| 自拍偷拍 高清无码| 亚欧无码在线| A久久| 午夜天天碰综合视频| Julia Annxxxxx| 国产成人精品无码久久| 国产精品视频在线播放 | 97人人操人人摸| 日韩欧美久久婷婷网站| 男人天堂日日夜夜| 国产情色在线| 熟妇人妻丰满久久久久久久无码| 97草草| 精品人妻15区| 日韩欧美亚欧在线视频| 国产亚洲精品美女久久久| 亚洲性爱成人| 国产69精品久久久久99尤物| 99热超碰在线| 狠肏骚人妻| 丰满丝袜少妇AV| 外国免费性情大片| 无码高清操逼网址| 久久久久久AⅤ无码免费肉站| 熟妇熟女视频一区二区三区| 超碰97玖玖爱| 日韩有码中文字幕女同性恋| 日韩性爱小视频| 日本一区视频在线观看| 最新日韩黄片| 91撸色网 玖玖网 欧美| ...日韩成人一区二区三区字幕| 96麻豆精品一区二区三区| 欧美成人性爱视频在线播放| 日本性爱网址| 精品人妻二区三区| 99超碰网| 国产精品亚洲一级av第二区| 午夜免费视频1000| 久久久久无码一妻区| 中文字幕后石码四区五区| 亚洲国产欧美另类自拍| 人人天天欧洲| 熟妇高潮二区三区| 熟妇xxxxx性春色| 亚洲成人在线播放| 91精品国产乱码| а√天堂资源官网在线资源| 日韩精品人妻一| 高树玛利亚无码流出| 日韩AV噜噜噜一区二区三区四区| 国产精品久久久久久照片| 天天做天天爱天天高潮| 久操影视| 一类无码操逼视频| 观看免费区二区三区二| 成人小电影网站tex| 欧美日韩在线国产在线| 欧美日韩精品国产91| 无码人妻精品酒店| 久久久国产三级黄色片| 色阁阁AV综合网| 99re免费视频精品全部| 精品熟女一区=区三区| 超碰99re| 精品亚洲国产成人AV制服丝袜 | 精品一久久久| 激情小说亚洲| 日韩高潮一区| 欧洲精品二区| 国产毛片精品一区二区色欲黄A片| 激情小说亚洲图片| 国产一区二区三区久久久精品| 伊人影院在线理论播放| 超碰97亚洲| 校园春色制服丝袜中文字亚洲| 欧美变态激情网| 国产精品一区二区校花| 青青伊人久久| 成人亚欧免费视频| 91熟女少妇| 久久鲁干| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 人妻一区二区三区视频 | 久久成年片色大黄全免费网站| 98色网| 97在线观看| 中文字幕丝袜美腿| 亚洲色宗合| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 3571色综合一区二区二区| 97亚洲中文| 91久精品| 色天使亚洲综合在线观看| 99re这里| 婷婷丁香熟妇综合网| 亚洲一区中文字幕| 天天干美少妇一区| 97免费视频在线观看| 久久精品亚洲东京热色播| 另类TS人妖一区二区三区| 亚洲欧洲色情高清| 在线中文字幕极品av| 久肏视频字幕| 97久久资源| 中文字幕99999| 久久免费精品96| 日本一级性爱| 97在线看| 96国产污污污丝袜| 色婷婷色99国产综合精品| 久久系列| 亚洲91色在线| 国产真实野战在线视频| v91av| 亚洲综合图色在线| 久久草大香蕉| 中文字幕一区二区三区字幕| 女同性恋中文字幕| 色嘟嘟人妻天堂网| 三级三级三级a级全黄三| 欧美亚洲丝袜人妻制服中文99| 日韩欧美成人大香蕉| 一区二区三区免费岛国片| 亚洲国产综合图区中文字幕| 亚洲欲| 久久久艹艹艹| 色爱三区| 激情 欧美 亚洲 小说| 日本熟妇精品九九| 欧美亚洲性爱一区二区| 欧美成va视频网站| 国产精品探花色| 夜夜欧美 | 探花一区在线| 黄色人人| 放黄片放3级黄片没穿衣服| 亚洲97网站| 人妻精品一区二区全免费| 欧美日韩性爱视屏免费看了| 欧洲亚洲国产综合在线| 久久激情婷婷| 熟妇一区,二区,三区。| 蜜臀av在线播放一区二区三区| 日韩欧美午夜视频在线| 亚洲中文字幕精品一区| 内射中国少妇高清视频免费视频 | 九九九影院| 欧洲无码一区二区| 色情五月综合婷婷| 97欧美性爱| 色天使亚洲综合在线观看| 水多多映视AV| 九九草| 97中文字幕九区| 蜜桃臀一区二区三区久久| 91精品国久久久久久无码| yirendaxiangjiashipin| 久久99久久99久久99人受| 日本肏逼视频在线观看| 大香蕉久| 欧美日韩操逼动图| 一线黄色免费性爱片| 欧美性爱日韩高清| 少妇被c 黄 免费观看| 超碰2017| aV中亚| 中文字幕在线观看网址| 色婷婷A V一二三四区麻豆综合| 久久综合超碰| 欧美青青视频| 午夜福利在线合集| 亚洲凸凹超碰成人| 中文字幕人乱码中文字的预防方法| 97色欧州| 欧美成人综合| 日韩不卡一二三四| 中出在线视频| 97资源站国产精品| 国产丝袜啪啪| 国产精品操| 男人的天堂2019| 久久精品店| 亚洲不卡三级手机播放| 久久超碰国产一区二区三区| 少妇高潮一区二区三区在线| 啊啊啊水好多| 久久久96| 色欲av一区二区三区蜜芽| 亚洲欧美综合区自拍另类| 精品高清av中文字幕| 午夜.DJ高清在线观看免费7 | 亚洲高潮少妇| 人妻出轨一区二区三区| 丝袜无码a片| 日本加勒比无码专区一二三| 91久热| 国产精品视频内谢女人| 国产精品白丝在线播放| 欧美经典一区二区三区| 国产一区二区啪啪视频| 中文字幕91综合| 成人在线视频一区| 破处bbq| 色欲久久99精品久久| 精品视频久久| av天堂精品久久| 午夜免费福利视频一区| 欧美色偷拍| 国产精品经典一卡久久久| 中国黑人三级片网站上区| 亚洲熟女一区二区| 日本操逼视频免费| 欧美另类综合久久| 精品久久人妻成人网| 青青爽| 久久久成人免费av电影| 老司机福利社视频在线观看| 欧美亚洲中文| 爱媛媛久久国产福利| 国产丝袜美女诱惑| 久湿久久| 中文字幕蜜乳av| 欧美三级中文字幕hd| 日本淫色网| 少妇蹲下买菜露大唇0| 欧美精品宗合| 国产三级电影免费观看| 久久久久久91香蕉国产| 97人人夜| 黄色区免费观看中文字幕| 九九综合| 久久色AV线| 精品高清av中文字幕| 欧美性爱五月天| 欧美 亚洲 91| 18禁在线视频| 日韩人妻少妇中文字幕| 日韩人妻精品| 日本高清视频xxxx| 亚洲男人天堂2019| 97 国产精品| 日本成人A片网站| 大香蕉在线视频15| 人人操人人操人妻人| 国产熟女完整版中字| 狠狠操狠狠插| 97色欧洲| 国产超碰| 激情小说亚洲视频| 欧美特大AA级黄片| 国产人伦精品一区二区三区 | 亚洲图片偷拍欧美| 亚洲精品国产熟女久久久久久| 中文字幕一区 二 区 三 四 五 区日 日 骚| 色777999综合| 中日韩熟女| 骚熟女吞| 日韩在线一区高清在线| 97超碰天天爱天天爱| 欧美激情久操网| 久久日韩毛| 超碰在线一区二区三区| 91操人| 91在线观看,天天综合| 欧美刺激色黄片免费看| 久久是精品| 日韩av影片在线观看| 校园春色家庭伦理欧美激情| 久久激情亚洲精品无码?V| 欧美激情超碰777| 欧美性爱精品七区| 日韩AV片| 成人羞羞视频国产| 日韩丝袜人妻AV| 69XX一中文字幕人妻91| 国产大片精久久久久久| CCYY草草影院地址入口| 97免费免费视频网| 国产东北女人在线视频| 好爽免费视频,| 蜜乳性色无码专日粉嫩骚逼AV| 校园春色亚洲无码| 久久欲| 超碰伊人在线| 人看人人摸人人操| 午夜经典| 97人人模人人爽人人| www.91视频网| 精品四五区| 被男人吃奶很爽的毛片| 日日摸日日碰| 日本欧美国内在线| 女生久久网| 天天欧美色| 人人操人人操人人人操| 国产91丝袜在线播放蜜月| 一区二区三区欧美激情| 精品国产乱子伦一区二区三区,精品一 | 国产乱伦视频污| 国产青青美女玩逼视频| 无码国产精品午夜不卡(| 91 丝袜在线播放| 射丝袜高跟鞋99| 国产曰批免费观看久久久| 9久9久9久9久视频网站| 女色视频社区| 欧美综合娱乐久久| 日韩在线观看AV| 校园春色亚洲欧洲| 大色综合网| 激情小说在线视频| yazhouzaixian| 日本大香蕉| 人妻天天夜夜爽一区二区| 亚洲精品第一| 91人精品妻入口| 东京热综合久久一区二区| 亚州男人的天堂| 伊人青青一区成人视频在线观看区| 黄片国产精品一区二区| 伊人四虎综合| 亚洲色图20p| 毛片电影一区二区三区| 国产高清视频无码在线| 久久精品一区二区三区蜜桃臀| 国产无马在线| 深夜视频| 91超碰在线观看| 欧美天堂亚洲电影院一区在线播放 | 日韩紧密久久| 黄色AV影视| 日本99久久| 亚洲色图欧美视频| 黄色AAAAAAAAAAA大片| 1769一区| 国产 日韩,欧美 自拍| 亚洲 在线| 欧美亚洲特P| 四虎av在线| 91操熟妇| 超碰97久| 性欧美91| 老女人综合| 天啪| AV中亚| 丰满人妻区一区二区三| 亚洲久久久久| 视频不卡中文字幕| 91美女视频| 国产后入| 国产美女在线精品免费看| 亚洲人妻在线精品| 国产精品美女视频诱惑| 91色图| 亚州综合| 操B视频日韩无码| av强奸乱轮| 国产精品自在线发布| 影音先锋中文字幕日本好一区二区| 秋霞无码av鲁丝片一区| 欧美日韩性爱无码| 男人的天堂一区三区| 欧美性爱精品一区二区| 在线另类| 99青草| 久久最新视频免费观看| 欧日韩在线观看| 超碰这里有精品| 久久精品国产97欧美精品亚洲| 亚洲丝袜二区在线| 日韩熟女精一区二区三区不卡| 欧美少妇人妻| 最新av中文字幕高清| 亚洲中文字幕久久人妻| 日韩精品在线观看网站| 色色99| 久久久熟妇熟女国产| 亚州Av天美传媒| 久久精品国产亚洲av水密被窝| 粉嫩av在线| 国产精品免费日韩| 99操碰| 密臀在线免费观看| 亚洲综合性网址| 一本大道青青| 中文?日韩?免费?精品| 逼操网站| 天天爽天天操| 美国久久一二三四| 人妻少妇无码| 亚洲97成人在线观看| 国产三区免费在线观看| 一区二区日韩欧美久久| 加勒比综合九九99视频在线播放| 丰满欧美放荡少妇在线| 男人天堂网站| 亚洲av无线观看| 九九视品黄色| 91九色丰满高潮| 中文字幕丰满人妻日本| 强奸乱伦大香蕉网| 亚洲天堂另类美腿| 久久久成人免费av电影| 国产一区二区三区高清视频| 免费强奸av| 亚洲综合113页| 91青青在线| 欧美伊人久久综合网| 久久人妻精品| 91无摭挡| 一本色道无码DVD中文字幕| 日韩不卡av一二三| 午夜性| 久久人妻熟女一区二区| 3P乱轮视频| 夜夜高潮夜夜爽高清视频一| 好湿好紧视频| 蜜乳AV一区| 亚洲射综合网| 国产久久久久久| 中文字幕av乱伦| 午夜后入| 国产精品一区二区手机看片| 国产精品电影| 欧美骚少妇| 超碰成人公开| 综合网亚| 人人么人人操| 丰满人妻一区二区三区四| 久久宗合97| 久久久久久国产手机AV| 日韩精品99久久久久久中文字幕 | 操九九九九九九| 中文字幕成人乱码熟女精品国50 | 成人网欧美风情| 久久春色| 蜜臀av一区二区三区免费观看| 精品丰满熟妇人妻一区| 99久久久er直播网址| 久久国产精品熟女人妻| а√天堂资源官网在线资源| 爽爽歪在线视频| 美女黄站| 欧美有码激情视频一区二区三区| 97视频一区| 操逼日韩无码| 天堂亚洲精品| 人人扣人人操| 欧美激情 一区| 中文字幕jul-617人妻熟女| 国产风韵犹存熟妇三区| 国产精品蜜乳AV| 尤物视频偷拍免费| 日韩国产成人自拍视频| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 无码国产Av| 91精品国产乱码| AV无码久久久精品| 熟妇无码视频三区| 欧亚在线视频| 淫淫综合网| 日本免费中文一区二区三区四区| 一起草视频在线| 97视频观看| 韩美日操逼| 亚洲一区二区 麻豆传媒| 色综合天天| 亚洲图片偷拍欧美| 大香蕉520| 97久久国产| 97色爱| 免费αⅴ在线观看| 久射吧| 国产999精品久久久久久| av三级电影在线播放| 嫩草伊人久久精品| 国产精品自在线发布| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 免费中文在线| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 国产亚洲 中文欧美久久| 成人小说另类在线| 亚洲啪啪啪啪视香蕉| 91狠狠综合久久久| 日本一级特级毛片视频| 试看福利| www久久久| 色视频蜜乳| 国产精品夜夜夜| 丝袜夫妻自拍| 亚洲高清国产理伦片| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 高清无码91| 麻豆区99999| 国产一级作爱毛片| 欧美亚洲中文| 九九九九免费视频| 日韩精品一二三四| 18禁免费视频| 91精品网站| 亚洲熟久久| 中文字幕啊啊啊在线观看视频| 妇女性内射冈站HDWWWCOM| 国产精品久久久久999| 天天综合网国产| 国产精品一级片在线看| 偷拍亚洲| 久久国产精品视频| 99综合自拍| www.夜夜操| 国产精品探花视频| 国产午夜精品理论片a大结局| 天操天操夜操夜月月年年操操 | 亚洲影院成人| 91天美免费| 日本孕妇孕交| 91在线视频免费中出| 久久99亚洲精品久久99果| 亚洲图片激情综合另类| 亚洲91色| 亚州欧美另类| 日本熟妇精品九九| 色女99一级片在线观看| 精品人妻伦一二三区久久| 国产欧美岛国精品一区| 国产精品白丝在线播放 | 夜夜爽爽爽| 色色色色网站| 日韩色欲久久一二三四区| 欧美色综合| 久久精品国产亚洲粉嫩| 超碰这里有精品| 亚洲一区二区 麻豆传媒| 伊人青青一区成人视频在线观看区| 国产精品老师| av无码精品久久久久| 中文日本免费高清| 免费家庭乱伦视频| 人妻丝袜日本| 天天天干977| www.久久超碰| 欧美色图小说综合| 97超碰精品成| 我中文字幕6区| 亚洲一二三| 亚洲诱惑| 久久这里| 制服中出中文人人精品| 嗯嗯啊啊视频一区二区三区| 日韩二级| 色爱综合网欧美| 亚洲国成人情色好看电影| 啊啊啊好湿国产一二| 人妻日日夜夜精品| 国产av白丝| 富二代亚洲精品99| 人妻夜夜爽天天爽麻豆三区网站| 亚洲精品 大香蕉| 天天综合亚在线| 嗯嗯嗯啊啊啊在线免费观看| 成年女人一区| 亚洲欧美九九| 中文字幕少妇色| 91电影色诱| 青青青艹在线视频| 色综合99999| 五月婷婷青青草娱乐伊人| 国产精品午夜精品| 噜噜噜噜天天狠狠| 欧成人精品一区二区三区| 91亚洲人| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 日1区2区3区2020| 日韩黄片视频试看| 国产精品乱码久久久| 久久这里只|