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

正文內容

[工程科技]基于51單片機和cpld試驗開發(fā)板的設計(編輯修改稿)

2025-02-12 06:27 本頁面
 

【文章內容簡介】 (c) 雙聯(lián)動繼電器接口電路 蜂鳴器電路如圖 (d)所示,通過跳線與 P10 相連,不用時可以斷開。Bell為有源蜂鳴器, 接通 5V 電就會發(fā)聲,單片機 P10 做開關控制,低電平開啟。圖 (d) 蜂鳴器接口電路 此外P1口可以實現AD/DA電路的轉換,接口電路如圖 (e)。其中,TLC1549為串行接口10位單通道A_D轉換器,TLC5615為串行接口10位單通道D_A轉換器,都只能實現單輸單出,而未使用ADC0809和DAC0832是為了縮小PCB的面積,能達到試驗效果是本設計的初衷。圖 (e) AD/DA接口電路 本設計有三個顯示模塊,分別是:LCD160LCD12864和 4位7段LED數碼管。點陣字符型液晶顯示器是專門用于顯示數字、字母、圖形符號及少量自定義符號的顯示器[3] 。 顯示接口電路3 軟件設計 由AVR單片機ATmega8實現USB轉串口的驅動設計和ISP(insystemprogramming)的使用 在給ATmega8燒寫固件及驅動文件時,要注意熔絲位的設置,如果設置不對,則單片機不 能正常工作。: 熔絲位設置 RTC 設計實例(DS1302+LCD1602+復雜按鍵輸入+多模式蜂鳴器發(fā)聲+多任務輪循架構) “實時時鐘”是很多任務執(zhí)行的關鍵參數,例如家居智能控制,室外信息發(fā)布,路燈控制等,因此熟 悉一種實時時鐘芯片以及精通編程控制將是一件非常有意義的事情。這里結合 Mini51 板硬件資源,開發(fā) 出一款實用的實時時鐘萬年歷,特別是程序設計采用了定時中斷多任務輪詢思想,對初學者程序設計具有 重要的參考價值。這里使用C語言編程,那么Keil應該是首選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境,強大的軟件仿真調試工具也會令編程事半功倍[5]。 任務解析及人性化設計要求 Mini51 板上可用硬件資源有實時時鐘芯片 DS1302 和備用電池,還有 LCD1602 顯示屏、按鍵和蜂鳴。 整合這些硬件資源,設計一個具有調時、鬧鐘功能,還要顯示美觀,易使用的電子萬年歷。 LCD 顯示要根據 LCD 每行 16 字符的特點設計,如上,可以顯示年、月、日、星期、時間,還有鬧鐘 設定功能。顯示效果設計如下:第一行顯示:【20080616 Week1】 第二行顯示:【14:52:35 AL07:00】 三鍵輸入:模式設定 set,加一 up,減一 down。 按鍵操作:長按 set 鍵進入時間設定模式,在進入設定模式以前,隨意短按任意鍵,不產生任何作用, 保證時間不被隨便修改;同一鍵短按鍵選擇設定對象;加減鍵長按直接退出設定模式。進入設定模式后, 長時間 10s 不按鍵,自動退出按鍵模式;以上所有的操作時鐘正常走鐘。聲音提示:所有按鍵操作伴隨聲音提示,長短按鍵有不同的提示聲,按鍵手感好。 鬧鐘設置:鬧鐘設置信息寫入 DS1302 芯片的暫存 RAM,保證主電源掉電數據不丟失;鬧鐘精確到分鐘;鬧鐘可禁用,并有顯示提示;鬧鐘鬧鈴時,任意按鍵結束鬧鈴。 多任務程序架構 為了程序移植性好,維護性好,易裁剪,我們有必要引入多任務編程思想,就是一個系統(tǒng)由多個任務 構成,各任務之間相對獨立。我在這里提出一種基于定時器中斷的多任務輪循程序架構,如圖 (a)所示。在 主程序中,根據任務延時量判斷任務是否就緒,各任務輪循占用 CPU,由任務延時量控制任務執(zhí)行頻度及 CPU 關照度,而任務延時量又由定時器中斷控制。 關于任務實時性的理解:從人機交互角度考慮,很多任務實時性要求是相對的,例如 LCD 顯示刷新, 就不需要很快的刷新頻度,即使被顯示的內容更新足夠快,LCD 顯示刷新也不需要很快,因為 LCD 顯示 是給人看的,如果每秒刷新 20 次,已經足夠了,這里結合數字鐘顯示任務,每秒 3 次就可以達到要求了; 又如按鍵掃描,掃描執(zhí)行頻度則不能太慢,太慢容易丟失有效鍵值,至少每秒應保持 50 次以上的執(zhí)行頻 度才行;同樣 DS1302 實時時鐘讀取頻度,每秒 3 次就可以了。不同任務,需要不同的執(zhí)行頻度(CPU 關照度),如果采用傳統(tǒng)大循環(huán)模式,各任務按一個頻度運行,顯然不適合本設計。這里還涉及到多種延時需要,例如按鍵去抖動、蜂鳴器發(fā)聲等,如果采用傳統(tǒng) 循環(huán)延時法,不僅極大浪費 CPU 資源,而且造成不同任務之間相互影響,很難找到一個平衡點,特別不利于程序維護,我們形象稱這種程序為面條程序。(a) 定時中斷的多任務輪循程序架構流程圖 基于定時器中斷的多任務輪循架構,各子任務必須設計成主動放棄 CPU 運行模式,子任務不能設計 成死循環(huán)流程,子任務的執(zhí)行依靠主程序任務調度來實現。正因為各任務不搶占 CPU,所以程序設計不用 考慮現場保護問題,簡化了程序設計。(b) 所示,定時器固定節(jié)拍中斷,該節(jié)拍需 滿足最快任務執(zhí)行頻度需要,例如 50Hz,對于按鍵掃描程序,每秒按 50 次頻度執(zhí)行即可,而 LCD1602 可以按每秒 3 次頻度執(zhí)行,實時時鐘數據讀取也只需按每秒 3 次頻度執(zhí)行一次。(b) Mini51 板實時時鐘流程圖 任務執(zhí)行頻度由任務延時量 task_delay[ID]控制,各任務延時量在定時中斷中減一,直到延時量為零, 相關相關任務就緒。務調度過程就是對任務延時量檢測過程,只有任務延時量為零時,CPU 從其它任務中 返回后立即執(zhí)行相應的任務,由于不同任務延時量不同,從而實現不同任務具有不同的執(zhí)行頻度而相互不受影響。這里還必須滿足一個條件,就是每個任務執(zhí)行一次的時間不能太長超過一次定時中斷時間,否則 任務之間執(zhí)行頻度會有影響,對于 50Hz 的中斷頻率,每個任務執(zhí)行時間最好不超過 20ms,既 CPU 光顧 一次任務時間要在 20ms 以內,這樣就可以保證任務之間相互完全不受影響。 定時中斷在這里就是心臟,依靠定時中斷完成任務延時量的修改,從而實現不同任務運行頻度控制。 定時器設置及初始化代碼如下:define TIME_PER_SEC 50 //定義定時中斷頻度,由執(zhí)行頻度要求最快的任務確定,太高會降低CPU 運行效率,太低任務頻度不好分配,一般 200Hz 以下,這里采用 50Hz。 define CLOCK 22118400 //定義時鐘晶振,單位 Hz,與硬件一致即可void OS_Init_Timer0(void) //定時器 0 初始化{uchar i。for(i=0。iMAX_TASK。i++) task_delay[i]=0。//任務延時量初始化TMOD = (TMOD amp。 0xf0) | 0x01。 //定時器 0 工作在模式 1,16Bit 定時器模式TH0 = 255CLOCK/TIME_PER_SEC/12/256。 TL0 = 255CLOCK/TIME_PER_SEC/12%256。 TR0 =1。 //開啟定時器ET0 =1。 //開啟定時器中斷} 這里通過宏定義,把易變參數在頭文件中定義,這樣使得程序容易修改,便于移植。void OS_Timer0(void) interrupt 1 using 2 //定時中斷服務{uchar i。TH0=255CLOCK/TIME_PE
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1