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

正文內(nèi)容

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

2025-02-12 06:27 本頁(yè)面
 

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