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

正文內(nèi)容

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

2025-06-22 13:24本頁面
  

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