freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的多功能數(shù)碼相框設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2025-06-22 13:24本頁(yè)面
  

【正文】 實(shí)現(xiàn)。按鍵電路如圖 36 所示:圖 36 按鍵電路 LCD 液晶顯示電路TFT(Thin Film Transistor)薄膜場(chǎng)效應(yīng)晶體管,是值液晶顯示器上的每一個(gè)像素點(diǎn)都是由集成在其后的薄膜晶體管來(lái)驅(qū)動(dòng)。從而可以做到高速高亮高對(duì)比度顯示液晶屏上的信息,TFT 液晶顯示屏是現(xiàn)在常用顯示器中的一種,普遍應(yīng)用于手機(jī)、筆記本電腦、MPMP4 等電子產(chǎn)品。本系統(tǒng)采用的 TFT 彩屏為 英寸的 24 位真彩數(shù)字屏,由 ILI9325 控制器控制,分辨率為240X320,數(shù)據(jù)傳輸是采用 8 位數(shù)據(jù)方式,通過(guò) 8 根數(shù)據(jù)線(xiàn)與單片機(jī)連接進(jìn)行通信。顯示時(shí),一個(gè)像素用 16 位表示,即采用 565RGB 方式,紅色分量用 5 位表示,綠色分量用 6 位表示,藍(lán)色分量用 5 位表示。要想液晶顯示屏正常工作,還要通過(guò)片選 CS、寫(xiě)入 WR、數(shù)據(jù)命令選擇 RS、復(fù)位RST、RD 寫(xiě)五根線(xiàn)與單片機(jī)連接進(jìn)行控制。液晶彩屏顯示電路如圖 37 所示。系統(tǒng)整個(gè)電路圖設(shè)計(jì)見(jiàn)附錄 1。圖 37 LCD 液晶顯示電路4 數(shù)碼相框的軟件設(shè)計(jì) 軟件總體設(shè)計(jì)整個(gè)數(shù)碼相框的軟件系統(tǒng)可以分為三個(gè)功能模塊:系統(tǒng)主任務(wù)、系統(tǒng)菜單顯示任務(wù)、系統(tǒng)時(shí)間宜春學(xué)院物理科學(xué)與工程技術(shù)學(xué)院畢業(yè)設(shè)計(jì)7顯示任務(wù)。在主函數(shù)前,先創(chuàng)建三個(gè)以上三個(gè)任務(wù)。系統(tǒng)主任務(wù)主要完成的是系統(tǒng)各種設(shè)備的初始化操作以及不停的進(jìn)行按鍵的掃描,通過(guò)按鍵掃描來(lái)確定鼠標(biāo)移動(dòng)到液晶顯示屏的哪個(gè)位置,從而調(diào)用相關(guān)函數(shù),按下確定鍵后轉(zhuǎn)到按鍵處理程序執(zhí)行對(duì)應(yīng)的功能;系統(tǒng)菜單顯示任務(wù)主要完成的是菜單的選擇與 GUI 窗口的顯示以及各種應(yīng)用程序的選擇處理程序;系統(tǒng)時(shí)間顯示任務(wù)主要完成的是系統(tǒng)時(shí)間的顯示功能,通過(guò)調(diào)用相關(guān)函數(shù)實(shí)現(xiàn)時(shí)間的顯示。創(chuàng)建了以上三個(gè)任務(wù)以后,主函數(shù)在 while(1)死循環(huán)中調(diào)用三個(gè)任務(wù),不停的循環(huán)執(zhí)行,等待某個(gè)事件發(fā)生再轉(zhuǎn)到相應(yīng)程序處理。程序流程圖如圖 41 所示:NYNYNY圖 41 主程序流程圖 Protothreads 極輕量級(jí)系統(tǒng)介紹Protothreads 是一種在小 RAM 單片機(jī)上實(shí)現(xiàn)多線(xiàn)程的方法,使用 Protothreads 可以很方便的在單片機(jī)上實(shí)現(xiàn)多任務(wù)操作,使得每個(gè)任務(wù)都有自己?jiǎn)为?dú)的 while(1)循環(huán)。對(duì)于單片機(jī)這樣的小 RAM微處理器不能進(jìn)行移植操作系統(tǒng),而使用 Protothreads 可以輕松實(shí)現(xiàn),達(dá)到一樣的效果,大大簡(jiǎn)化了程序的設(shè)計(jì)。Protothreads 最大的特點(diǎn)是占用內(nèi)存非常小,每個(gè) Protothreads 只需占用 2 字節(jié)的RAM,而且代碼非常短,移植很方便,只需在工程中包含三個(gè)頭文件 、 即可。主函數(shù)中創(chuàng)建的三個(gè)任務(wù)就是利用 protothreads 創(chuàng)建的。以下幾個(gè)函數(shù)是 Protothreads 中比較重要的幾個(gè)函數(shù),分別對(duì)其進(jìn)行說(shuō)明 [11]:PT_INIT(pt):初始化任務(wù)變量,只需在初始化函數(shù)中執(zhí)行一次即可。PT_BEGIN(pt):?jiǎn)?dòng)任務(wù)處理,放在函數(shù)的開(kāi)始處。PT_END(pt):結(jié)束任務(wù),放在函數(shù)的最后。開(kāi)始初始化任務(wù) MAINTASK初始化任務(wù) MENUTASK初始化任務(wù) OSTIMETASKmaintaskt==100?運(yùn)行任務(wù) MainTask()運(yùn)行任務(wù) MenuTask()menutaskt==200?運(yùn)行任務(wù) OSTime()timetaskt==100?宜春學(xué)院物理科學(xué)與工程技術(shù)學(xué)院畢業(yè)設(shè)計(jì)8PT_WAIT_UNTIL(pt, condition):等待某個(gè)條件(條件可以為時(shí)鐘或其它變量,IO 等)成立,否則直接退出本函數(shù),下一次進(jìn)入本函數(shù)就直接跳到這個(gè)位置運(yùn)行,再次判斷運(yùn)行條件是否滿(mǎn)足,并執(zhí)行后續(xù)程序或繼續(xù)阻塞。 驅(qū)動(dòng)程序設(shè)計(jì) SPI 驅(qū)動(dòng)程序設(shè)計(jì)SPI 總線(xiàn)接口是 STC12C5A60S2 單片機(jī)提供的高速串行外設(shè)接口,SPI 接口是一種高速、全雙工、同步的串行通信總線(xiàn)。與 SPI 通信相關(guān)的特殊功能寄存器主要有三個(gè):控制寄存器 SPCTL、狀態(tài)寄存器 SPSTAT 以及數(shù)據(jù)寄存器 SPDAT。(1)控制寄存器 SPCTL:確定單片機(jī)作為主機(jī)還是從機(jī),使能 SPI,設(shè)定 SPI 發(fā)送和接收的位順序以及設(shè)定 SPI 傳輸數(shù)據(jù)的時(shí)鐘速率。(2)狀態(tài)寄存器 SPSTAT:用來(lái)判斷 SPI 數(shù)據(jù)有沒(méi)有傳輸完成以及檢測(cè)是否對(duì)數(shù)據(jù)寄存器SPDAT 進(jìn)行寫(xiě)操作。(3)數(shù)據(jù)寄存器 SPDAT:所要傳輸?shù)?8 位數(shù)據(jù),為 Bit7~Bit0。SPI 驅(qū)動(dòng)程序主要包括四個(gè)函數(shù):SPI 初始化函數(shù)主要對(duì)以上三個(gè)寄存器進(jìn)行初始化操作;SPI時(shí)鐘速率設(shè)置函數(shù)用來(lái)設(shè)置數(shù)據(jù)傳輸時(shí)的速率,為高速模式還是低速模式;SPI 發(fā)送數(shù)據(jù)函數(shù)用來(lái)發(fā)送指定數(shù)據(jù)到 SPI 總線(xiàn)上; SPI 接收數(shù)據(jù)函數(shù)則是用來(lái)接收來(lái)自 SPI 總線(xiàn)上的數(shù)據(jù)。 SD 卡驅(qū)動(dòng)程序設(shè)計(jì)SD 卡是在單片機(jī)的控制下進(jìn)行通信的,單片機(jī)發(fā)送特定指令給 SD 卡,并且接收來(lái)自 SD 卡的響應(yīng)并確定 SD 卡是否初始化完成,再進(jìn)行下一步的命令操作。在對(duì) SD 卡操作之前,應(yīng)該首先確保單片機(jī)已選擇 SD 卡,即將 SD 卡的片選線(xiàn) CS 置為低電平,再發(fā)送相關(guān)命令對(duì) SD 卡進(jìn)行讀寫(xiě)。單片機(jī)與 SD 卡之間通信的命令有幾十個(gè),但是常用的只有 19 個(gè),每個(gè)命令都會(huì)產(chǎn)生不同的響應(yīng)碼,用以判斷 SD 卡處于什么狀態(tài)。SD 卡驅(qū)動(dòng)程序設(shè)計(jì)主要有兩個(gè)函數(shù):SD 卡初始化函數(shù)和 SD卡讀扇區(qū)函數(shù)。(1)SD 卡初始化函數(shù):初始化函數(shù)主要完成 SD 卡的上電復(fù)位并將 SD 卡初始化為 SPI 模式。初始化程序流程圖如 42 所示:NYN開(kāi)始發(fā)送 74 個(gè)時(shí)鐘周期發(fā)送復(fù)位命令 CMD0進(jìn)入 SPI 低速模式應(yīng)答信號(hào)=01?發(fā)送激活命令 CMD1應(yīng)答信號(hào)=00?宜春學(xué)院物理科學(xué)與工程技術(shù)學(xué)院畢業(yè)設(shè)計(jì)9Y圖 42 SD 卡初始化流程圖當(dāng)單片機(jī)檢測(cè)到 SD 卡插入卡槽后,單片機(jī)會(huì)給 SD 卡發(fā)送至少 74 個(gè)時(shí)鐘周期,以便完成 SD卡的上電過(guò)程,然后再發(fā)送 SD 卡的復(fù)位命令 CMD0。如果此時(shí) SD 卡的片選信號(hào)為低電平,則 SD卡進(jìn)入 SPI 模式,否則 SD 卡一直處于 SD 模式。進(jìn)入 SPI 模式后,單片機(jī)發(fā)送 CMD1,如果接收到的響應(yīng)碼為 0,則說(shuō)明 SD 卡初始化已經(jīng)完成,此時(shí) SD 卡處于空閑狀態(tài),等待單片機(jī)給 SD 卡發(fā)送下一個(gè)命令,否則單片機(jī)不停地給 SD 卡發(fā)送 CMD1 命令,直到返回的響應(yīng)碼為 0。(2)SD 卡讀扇區(qū)函數(shù):SD 卡有讀單個(gè)扇區(qū)和多個(gè)扇區(qū)的命令,分別為 CMD17 和 CMD18,一般單個(gè)扇區(qū)的大小為 512 個(gè)字節(jié)。SD 卡讀扇區(qū)函數(shù)的流程圖如圖 43 所示NYNY圖 43 SD 卡讀扇區(qū)流程圖 ILI9325 驅(qū)動(dòng)程序設(shè)計(jì)在進(jìn)行 TFT 彩屏的顯示之前首先必須的進(jìn)行初始化操作,配置 TFT 彩屏的各種寄存器,ILI9325 控制的彩屏的寄存器有恨多個(gè),每個(gè)都要正確配置,才有可能驅(qū)動(dòng)彩屏顯示各種字符、漢字、圖片。下面就 ILI9325 中的幾個(gè)重要的寄存器進(jìn)行說(shuō)明 [12]:(1)R0 寄存器:這個(gè)寄存器的命令有兩個(gè)功能,對(duì)它寫(xiě)則最低位為振蕩周期,啟動(dòng)振蕩器。如果對(duì)它讀,則讀取到的是彩屏控制器的型號(hào),有了控制器的型號(hào)就能方便的進(jìn)行彩屏的初始化操開(kāi)始發(fā)送命令 CMD17響應(yīng)為 0xFE? 返回接收 512 字節(jié)數(shù)據(jù)接收 2 字節(jié) CRC 碼CRC 校正碼對(duì)嗎?結(jié)束結(jié)束宜春學(xué)院物理科學(xué)與工程技術(shù)學(xué)院畢業(yè)設(shè)計(jì)10作了。(2)R1 寄存器:這個(gè)命令是驅(qū)動(dòng)器輸出控制命令,控制輸出轉(zhuǎn)變方向是從 S1 到 S720 還是從S720 到 S1。(3)R3 寄存器:入口模式命令。對(duì)這個(gè)命令中的幾個(gè)重要位進(jìn)行設(shè)置,就可以設(shè)置屏幕的顯示方向,是從左開(kāi)始寫(xiě)入還是從右開(kāi)始寫(xiě)入,是從上開(kāi)始寫(xiě)入還是從下開(kāi)始寫(xiě)入。這個(gè)寄存器很重要,如果配置不正確,會(huì)導(dǎo)致字符、漢字、圖片顯示不出來(lái)或者是顯示出來(lái)的是倒置的,漢字可能是左右倒置或者是上下倒置,致使整個(gè)工程的顯示界面不正常。(4)水平和垂直位置的 RAM 地址寄存器(R50h, R51h,R52h, R53h):這 4 個(gè)寄存器主要用來(lái)設(shè)置水平、垂直的起止位置,給 4 個(gè)寄存器配置不同的值,設(shè)定的顯示窗口的大小就不同,如果要顯示的字符、漢字、圖片的大小超過(guò)設(shè)定的顯示窗口大小,就會(huì)導(dǎo)致顯示不正常。了解并熟悉了 ILI9325 的各個(gè)寄存器功能后,就可以進(jìn)行驅(qū)動(dòng)程序的設(shè)計(jì)了。 ILI9325 驅(qū)動(dòng)程序設(shè)計(jì)主要包括:初始化函數(shù)、寫(xiě)總線(xiàn)函數(shù)、寫(xiě)命令函數(shù)、寫(xiě)數(shù)據(jù)函數(shù)以及畫(huà)點(diǎn)、畫(huà)線(xiàn)、畫(huà)矩形函數(shù),通過(guò)這些程序的調(diào)用,就可以畫(huà)出各種漂亮的顯示窗口。當(dāng)然,還有兩個(gè)重要函數(shù),就是顯示字符、漢字函數(shù),這兩個(gè)函數(shù)是整個(gè)系統(tǒng)的語(yǔ)言系統(tǒng),下面介紹一些重要的函數(shù)。不管是顯示字符還是顯示漢字,都要建立相應(yīng)的點(diǎn)陣數(shù)據(jù)庫(kù),然后根據(jù)相應(yīng)的算法,到相應(yīng)的點(diǎn)陣庫(kù)里找到要顯示的字符,將其顯示到彩屏上。英文字符的大小一般為寬為 8 個(gè)像素,高為 16個(gè)像素,而漢字的大小為寬 16,高 16。所以一個(gè)字符有 16 個(gè)字節(jié)的點(diǎn)陣數(shù)據(jù),而一個(gè)漢字有 32字節(jié)的點(diǎn)陣數(shù)據(jù)。找到一個(gè)字符的點(diǎn)陣數(shù)據(jù)后,用一個(gè) for( )循環(huán)的嵌套,檢測(cè)每個(gè)字節(jié)的 8 個(gè)位是否為 1,若為 1,則在屏幕相應(yīng)位置的像素點(diǎn)亮,反之則不點(diǎn)亮,16 個(gè)字節(jié)檢測(cè)完畢后,就可以在屏幕上顯示出所需要顯示的字符,漢字的顯示也一樣。點(diǎn)陣數(shù)據(jù)可以用軟件 提取,使用很方便。(1)字符顯示函數(shù):LCD_sprintf_char(INT8U x, INT16U y,INT8U c, INT16U color,INT16U b_color,bit bcst),第一個(gè)和第二個(gè)參數(shù)分別為顯示字符的橫縱坐標(biāo),第三個(gè)參數(shù)為所要顯示的字符,第四個(gè)參數(shù)為字符的顏色,第五個(gè)參數(shù)為字符背景色,第六個(gè)參數(shù)為是否顯示背景色,為 1 則顯示背景色,反之則不顯示。(2)漢字顯示函數(shù):LCD_sprintf_HZ(INT8U x, INT16U y, INT8U c[2], INT16U fColor,INT16U bColor,bit bcst),各個(gè)參數(shù)的含義與字符顯示函數(shù)一樣,所不同的是漢字要查詢(xún)漢字的內(nèi)碼,內(nèi)碼查到了在執(zhí)行循環(huán)嵌套,就可以顯示出所需顯示的中文了。顯示漢字的流程圖與顯示字符的流程圖差不多,就不再畫(huà)了。(3)窗口設(shè)置函數(shù):void LCD_setwindow(INT8U x0,INT16U y0,INT8U x1,INT16U y1),設(shè)置以 x0,y0 為左上角坐標(biāo),以 x1,y1 為右下角坐標(biāo)的一個(gè)矩形框?yàn)轱@示窗口。(4)畫(huà)點(diǎn)函數(shù):void LCD_Point(INT8U x,INT16U y,INT16U color) ,在坐標(biāo)(x,y)處以顏色 color畫(huà)一個(gè)點(diǎn)。(5)清屏函數(shù):void LCD_clearscreen(INT16U b_color),以顏色 b_color 填充整個(gè)液晶顯示屏。(6)矩形填充函數(shù):void LCD_FilledRectangle(INT8U x,INT16U y,INT8U width,INT16U high,INT16U color),在坐標(biāo)(x,y)處畫(huà)一個(gè)寬為 width,高為 high 的矩形,并以顏色 color 填充。(7)數(shù)字顯示函數(shù):void LCD_WriteNumlen(INT8U x, INT16U y, INT16U num, INT8U length,INT16U color,INT16U b_color,bit bcst),在以(x,y) 為右上角坐標(biāo)處顯示一個(gè)數(shù)字 num,數(shù)據(jù)長(zhǎng)度為 length 位,顏色為 color,背景色為 b_color,bcst 為是否顯示背景色控制位,1 則顯示,反之則不顯示。(8)24 位 RGB 到 16 位 RGB 轉(zhuǎn)換函數(shù):INT16U LCD_RGB(INT8U R,INT8U G,INT8U B),該函數(shù)的功能是將 24 位的 RGB 值轉(zhuǎn)換成 16 位的 RGB 值并返回轉(zhuǎn)換的 16 位 RGB 值。宜春學(xué)院物理科學(xué)與工程技術(shù)學(xué)院畢業(yè)設(shè)計(jì)11 鼠標(biāo)按鍵驅(qū)動(dòng)程序設(shè)計(jì)鼠標(biāo)是由左邊的一個(gè)白色小矩形和右邊的一個(gè)黑色小矩形組成,然后按下上、下、左、右鍵后,鼠標(biāo)會(huì)向上、向下、向左、向右移動(dòng)一段距離。在第四章中講了按鍵是采用獨(dú)立按鍵的連接方式,檢測(cè)很方便,沒(méi)有按鍵按下時(shí),單片機(jī)相應(yīng) IO 口為高電平,當(dāng)檢測(cè)到按鍵按下時(shí),相應(yīng) IO 口會(huì)拉低。所以,通過(guò)檢測(cè)相應(yīng) IO 口的電平值,就可以確定哪個(gè)按鍵按下了,哪個(gè)按鍵沒(méi)有被按下。所以鼠標(biāo)的驅(qū)動(dòng)程序設(shè)計(jì)比較簡(jiǎn)單,不過(guò)多敘述。 FATFS 文件系統(tǒng)移植設(shè)計(jì)文件的打開(kāi)、刪除、寫(xiě)入都是通過(guò)文件系統(tǒng)來(lái)完成的。所以,要打開(kāi) SD 卡中的 BMP 圖像文件,就必須在單片機(jī)中移植一種 SD 卡所支持的文件系統(tǒng),從而通過(guò)文件系統(tǒng)的相關(guān)函數(shù)讀取 SD卡中的圖像文件。 FATFS 文件系統(tǒng)介紹FATFS 文件系統(tǒng)是專(zhuān)門(mén)為小型嵌入式系統(tǒng)設(shè)計(jì)的一個(gè)通用 FAT 文件系統(tǒng),它完全有 C 語(yǔ)言編寫(xiě),并且完全與 SD 卡 I/O 層分開(kāi),不依賴(lài)于特定的硬件系統(tǒng),所以非常利于移植,它可以嵌入到低成本的微控制器中,而不用做任何的修改 [13]。FATFS 有兩個(gè)版本,一個(gè)是適合于 RAM 資源充足的微控制器,接口函數(shù)多,文件系統(tǒng)功能也更多。還有一個(gè)版本是適合于 RAM 資源不充足的單片機(jī),叫 TinyFATFS。TinyFATFS 文件系統(tǒng)是在完全版 FATFS 文件系統(tǒng)的基礎(chǔ)上進(jìn)行剪切的,保留了用戶(hù)所使用的必須功能,而刪除了一些不必要的
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1