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

正文內(nèi)容

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

2025-02-12 06:27 本頁面
 

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