數(shù)字鐘設(shè)計(jì)方案ppt課件
《數(shù)字鐘設(shè)計(jì)方案ppt課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)字鐘設(shè)計(jì)方案ppt課件(46頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
任務(wù) 一 數(shù)字鐘,功能要求 整體方案調(diào)研 整體方案論證 硬件電路設(shè)計(jì) 程序設(shè)計(jì),功能要求,功能要求: (1)正常顯示系統(tǒng)時(shí)間。 (2)可調(diào)整系統(tǒng)時(shí)間。 (3)計(jì)時(shí)誤差:1天誤差±10s。 (4)由用電設(shè)備提供+6V電源。 (5)低價(jià)位。,二、 整體方案調(diào)研,不論是設(shè)計(jì)練習(xí)或是一個(gè)實(shí)際的工程項(xiàng)目,在明確其性能要求的基礎(chǔ)上,首先要做的應(yīng)該是調(diào)研相關(guān)情況,了解與該項(xiàng)目相關(guān)的成果,以便吸收前人的成功經(jīng)驗(yàn),開闊自己的思路。在網(wǎng)絡(luò)高度發(fā)達(dá)的今天,利用網(wǎng)絡(luò)查詢無疑是最便捷、最全面的方法。,三、 整體方案論證,根據(jù)設(shè)計(jì)題目的功能要求,采用自頂向下的拼湊法可以構(gòu)成如圖1所示的方框圖。 自頂向下法(Top to Down) 首先從系統(tǒng)級(jí)設(shè)計(jì)開始,根據(jù)系統(tǒng)級(jí)所描述的該系統(tǒng)應(yīng)具備的各項(xiàng)功能,將系統(tǒng)劃分為單一功能的子系統(tǒng),再根據(jù)子系統(tǒng)任務(wù)劃分各部件,完成部件設(shè)計(jì)后,最后才是元件級(jí)設(shè)計(jì)。 優(yōu)點(diǎn):避開具體細(xì)節(jié),有利于抓住主要矛盾。 適用于大型的、復(fù)雜的系統(tǒng)設(shè)計(jì),,整體方案論證,[方案一] 直接利用專用時(shí)鐘芯片計(jì)時(shí)。,,整體方案論證,該方案的優(yōu)點(diǎn)是各器件的功能清晰。缺點(diǎn)是所用芯片數(shù)多、PCB面積大、接線多、焊點(diǎn)多。因此可靠性略差,而且成本也較高,不符合低價(jià)位的要求。 低價(jià)位是所有電子系統(tǒng)設(shè)計(jì)在保證性能的前提下都必須認(rèn)真考慮的因素,有時(shí)它直接關(guān)于產(chǎn)品能否推廣應(yīng)用。,整體方案論證,[方案二] 圖9.1.2電路中的虛線內(nèi)部分完全可以由CPLD或FPGA來實(shí)現(xiàn)。這也是參考文獻(xiàn)中采用的一個(gè)方法。 這個(gè)方案的優(yōu)點(diǎn)是電路大為簡化,系統(tǒng)可靠性高。最大的問題是CPLD或FPGA的成本高,做為這種低端產(chǎn)品,其價(jià)格難以接受。,整體方案論證,[方案三] 以MCU為核心來構(gòu)架整個(gè)電路。時(shí)鐘產(chǎn)生,秒信號(hào)、分信號(hào)形成均可利用MCU片內(nèi)資源解決。分減法計(jì)時(shí)利用程序完成。LED的譯碼也可以由軟件完成。至于按鍵的設(shè)置,則可以更加靈活,并將鍵數(shù)減至最少。 這一方案的最大優(yōu)點(diǎn)是充分發(fā)揮了MCU軟件的功能,并使電路簡化到可以和CPLD或FPGA相媲美。,整體方案論證,電子系統(tǒng)設(shè)計(jì)的一個(gè)重要原則是:“安軟勿硬”。即能用軟件解決的同一問題,則不用硬件。這主要是因?yàn)檐浖膲勖皇芟拗疲臆浖木幹迫绻昝罒o暇的話,其可靠性也是硬件無法比擬的。何況又能降低硬件開消。這一方案符合這一原則。 MCU的品種繁多,適合這種低端應(yīng)用的芯片也不少,其價(jià)位已低到MSI的水平,所以應(yīng)該是最低價(jià)位的方案。 很明顯,方案三是合適的。,四、 硬件電路設(shè)計(jì),1.MCU的選擇 2.資源分配 3.程序流程圖 4 .容錯(cuò)設(shè)計(jì) 5.軟件的簡單抗干擾措施 6.計(jì)時(shí)精度 7.程序清單,硬件電路設(shè)計(jì),9.1.4 硬件電路設(shè)計(jì) 1.MCU的選擇 為降低價(jià)位和節(jié)省使用MCU的端口數(shù),LED宜采用共陰極動(dòng)態(tài)驅(qū)動(dòng)方式,它共需八根段位口線,兩根陰極驅(qū)動(dòng)口線,即LED需要十根MCU I/O口線。 按鍵可以減少到只要兩個(gè):功能切換和預(yù)置時(shí)間加一鍵。功能鍵完成二個(gè)任務(wù):移動(dòng)預(yù)置時(shí)間的個(gè)位和分位;啟動(dòng)計(jì)時(shí)。它需要二根I/O口線,而且最好接在外接中斷輸入端,以便按鍵可以用中斷或查詢兩種辦法處理。 驅(qū)動(dòng)執(zhí)行器件通斷負(fù)載需要一根口根。 即共需MCU13根口線。,硬件電路設(shè)計(jì),系統(tǒng)所需的時(shí)鐘信號(hào)可以由MCU的定時(shí)器/計(jì)數(shù)器完成。一般低端MCU均有二個(gè)定時(shí)器/計(jì)數(shù)器,可以滿足要求。 整個(gè)課題對(duì)指令執(zhí)行的速度沒有什么要求,不要求執(zhí)行速度快的MCU,一般低端MCU至少可以工作在12MHz的時(shí)鐘下,速度不成問題。,硬件電路設(shè)計(jì),LED數(shù)碼管采用應(yīng)用最廣的0.5英寸,高亮度紅色的共陰極器件。動(dòng)態(tài)驅(qū)動(dòng)時(shí)每個(gè)筆段平均IF0.5mA已可明亮顯示。 若VF=1.5V,每筆段的限流電阻為2kΩ,則LED點(diǎn)亮?xí)r每筆段IF≈1.75mA,動(dòng)態(tài)掃描時(shí)每個(gè)筆段的平均電流約為0.875mA,滿足亮度要求??紤]到MCU口線的IOH較小,限流電阻應(yīng)接為上拉形式。 八段筆劃直接由P1口驅(qū)動(dòng)。被點(diǎn)亮LED數(shù)碼管的最大電流為8×1.75=14mA,利用P3.0、P3.1的IOL是可以承受的。,硬件電路設(shè)計(jì),按鍵共設(shè)兩個(gè):功能切換鍵“S”,和加鍵“+”。分別接至INT0(P3.2)和INT1(P3.3)。 設(shè)計(jì)的功能為:上電后,定時(shí)器處于等待時(shí)間設(shè)置狀態(tài),隱含時(shí)間10分。按下“S”鍵,分個(gè)位LED閃爍。按“+”鍵,可設(shè)置分個(gè)位值。設(shè)好后,再按“S”鍵,分個(gè)位LED停止閃爍,分十位LED開始閃爍,再按一次“S”鍵,分十位LED停止閃爍,定時(shí)器啟動(dòng),設(shè)置的時(shí)間值存儲(chǔ),并開始倒計(jì)數(shù)。兩只10kΩ的上拉電阻,保證鍵按下低電平有效,相應(yīng)的硬件電路如圖9.1.3所示。,硬件電路設(shè)計(jì),數(shù)字定時(shí)器硬件電路,,硬件電路設(shè)計(jì),考慮到上電過程中不允許用電設(shè)備瞬間動(dòng)作,強(qiáng)電執(zhí)行部件應(yīng)為低電平驅(qū)動(dòng),它由P3.4完成。 強(qiáng)電執(zhí)行部件選用價(jià)格低的小型電磁繼電器,而不用性能雖好,但價(jià)格較高的SSR。根據(jù)負(fù)載以及+12V供電的情況可選用JQX-14F12V的電磁繼電器(特性見表2.6.1)。其電氣壽命達(dá)105次,應(yīng)能滿足用電設(shè)備的要求。相應(yīng)的驅(qū)動(dòng)電路如圖9.1.3所示。 AT89C2051采用簡單的RC復(fù)位電路。,硬件電路設(shè)計(jì),MCU時(shí)鐘頻率直接影響指令執(zhí)行速度與芯片的功耗。本課題對(duì)執(zhí)行速度并不要求快,而且希頻率低一點(diǎn)可降低功耗,故選為6MHz,由于機(jī)器周期為時(shí)鐘頻率的1/12,即2μs,為整數(shù)值,定時(shí)器中斷時(shí)間亦為2μs的整數(shù)倍,對(duì)計(jì)時(shí)精度有利,何況6MHz的石英晶振為長線器件,價(jià)格較低。,硬件電路設(shè)計(jì),+12V供電由7805降至+5V供系統(tǒng)使用。按LED所有筆段全亮,所需電流約12.5mA。 JQX-14F通電時(shí)線圈耗電約45mA,AT89C2051 5V供電時(shí)工作電流約12.5mA,電路總電流約70mA。 7805壓降為7V,管耗為0.49W。其熱阻℃/W,即使不加散熱片,其相對(duì)環(huán)境溫度的溫升約22℃。即使在+50℃環(huán)境溫度下,結(jié)溫才72℃。,五、 程序設(shè)計(jì),1.確定整體的程序結(jié)構(gòu) 硬件電路采用的動(dòng)態(tài)掃描方式,編程序時(shí)要不停地掃描它。由于只有兩位LED數(shù)碼管,若掃描頻率選為50Hz,則每個(gè)數(shù)碼管點(diǎn)亮的時(shí)間為10ms。,程序設(shè)計(jì),(1)最常用的程序結(jié)構(gòu) 圖9.1.4為設(shè)計(jì)人員最喜歡采用的主程序流程圖。主程序執(zhí)行它初值化以后,即進(jìn)入循環(huán)的顯示掃描程序。其它所有的功能模塊,如設(shè)置命令、設(shè)置時(shí)間的輸入、計(jì)時(shí)等統(tǒng)統(tǒng)以中斷的方式切入。如果初值化以后只是一個(gè)簡單的循環(huán)等待,這種方式從可靠性和程序編寫上都是很可取的。,程序設(shè)計(jì),但是本設(shè)計(jì)中的兩個(gè)按鍵,由于本身固有的抖動(dòng)特性(如歐姆龍公司B3F-4055按鍵開關(guān)的抖動(dòng)時(shí)間10ms),一般均采用軟件去抖,即查覺按鍵動(dòng)作后,先軟件延時(shí)20ms,躲過抖動(dòng)時(shí)間再接著處理按鍵相應(yīng)的功能。 在軟件延遲的時(shí)間里,顯示掃描被打斷,會(huì)導(dǎo)致顯示閃動(dòng)的不良現(xiàn)象。,程序設(shè)計(jì),(2)RTOS 多任務(wù)實(shí)時(shí)操作系統(tǒng)(RTOS,如μC/OS-Ⅱ)可以很好的解決這一并行請(qǐng)求的矛盾。然而這似乎“殺雞用牛刀”。況且89C2051的程序存儲(chǔ)器容量也有限。,程序設(shè)計(jì),(3)以系統(tǒng)時(shí)鐘為核心的程序結(jié)構(gòu) 我們統(tǒng)計(jì)一下本設(shè)計(jì)要使用的幾個(gè)時(shí)間量:10ms-每個(gè)數(shù)碼管顯示時(shí)間;20ms-按鍵去抖時(shí)間;0.5s-分個(gè)位LED小數(shù)點(diǎn)亮/滅時(shí)間;1s-計(jì)時(shí)的單位時(shí)間。,程序設(shè)計(jì),選擇其最短的時(shí)間10ms做系統(tǒng)時(shí)鐘基準(zhǔn)。即利用MCU的定時(shí)器每10ms中斷一次。然后確定每個(gè)時(shí)鐘需完成的任務(wù): ① 輪流點(diǎn)亮LED一次; ②判有無鍵按下,若有鍵按下激活一個(gè)標(biāo)志,并記錄鍵按下的時(shí)間; ③檢查鍵標(biāo)志,并檢查是否已到去抖時(shí)間(20ms,二個(gè)系統(tǒng)時(shí)鐘時(shí)間),若已到則判定哪個(gè)鍵按下并做相應(yīng)處理。因?yàn)槊總€(gè)時(shí)鐘均訪問LED一次,動(dòng)態(tài)驅(qū)動(dòng)得以保證。而進(jìn)行鍵功能處理,有10ms的時(shí)間足矣!,程序設(shè)計(jì),至于0.5s和1s時(shí)鐘事件處理可以由計(jì)另一時(shí)時(shí)鐘來完成,它承擔(dān)每0.5s設(shè)置位LED閃爍和1s計(jì)時(shí)信號(hào)產(chǎn)生的任務(wù),分為二個(gè)計(jì)時(shí)器可以使程序編寫起來更容易一些。,程序設(shè)計(jì),2.資源分配 (1)硬件資源分配 功能鍵KS,邊沿觸發(fā); 加鍵KAD,邊沿觸發(fā) P1.0~P1.7 LED段碼輸出,高電平有效 P3.0 LED數(shù)碼管分十位陰極,低電平有效,K1 P3.1 LED數(shù)碼管分十位陰極,低電平有效,K2 P3.4 繼電器驅(qū)動(dòng)輸出,低電平輸出有效,J T0 16位計(jì)時(shí)器,系統(tǒng)時(shí)鐘,10ms中斷一次 T1 16位計(jì)時(shí)器,計(jì)時(shí)時(shí)鐘,0.1ms中斷一次,程序設(shè)計(jì),(2)寄存器資源分配 (3)標(biāo)志位資源分配與功能 以上兩項(xiàng)請(qǐng)直接參閱程序清單,程序設(shè)計(jì),3.程序流程圖 圖9.1.5為主程序流程圖。,程序設(shè)計(jì),圖9.1.6為系統(tǒng)時(shí)鐘程序流程圖。其中在進(jìn)行分個(gè)位或分十位值加一時(shí),有可能分個(gè)位或分十位正處于消隱期,即此值為20,這樣會(huì)導(dǎo)致錯(cuò)誤的時(shí)間。故必須在加之前調(diào)時(shí)間值,加完以后再存入時(shí)間值。,程序設(shè)計(jì),圖9.1.7為顯示子程序流程圖。顯示分個(gè)位還是分十位由DSS標(biāo)志值決定,由于每顯示一次DSS取反,所以分個(gè)位和分十位得以輪流顯示。因?yàn)樵谠O(shè)置時(shí)間時(shí),設(shè)置的那一位LED 0.5s閃爍一次,故程序首先判定是否消隱或正常顯示,這要由閃爍標(biāo)志位FMF決定。,程序設(shè)計(jì),圖9.1.8為計(jì)時(shí)時(shí)鐘程序流程圖。在設(shè)置時(shí)間時(shí),用閃爍控制標(biāo)志FMF決定是否閃爍,通過SFF來決定在顯示時(shí)是消隱還是正常顯示。在計(jì)時(shí)時(shí),停止時(shí)間閃爍,用DP取反的辦法,使分個(gè)位小數(shù)點(diǎn)每秒閃動(dòng)一次。,程序設(shè)計(jì),圖9.1.9(a)和(b)分別是功能鍵和加鍵的中斷子程序X0和X1。這兩個(gè)中斷程序只執(zhí)行將有鍵按下的標(biāo)志位KEY置1的同一語句。程序短到無可再短,當(dāng)然不會(huì)因中斷影響顯示,更不會(huì)影響其它程序的參數(shù)。,程序設(shè)計(jì),4.容錯(cuò)設(shè)計(jì) 允許錯(cuò)誤存在,并能防止它對(duì)系統(tǒng)正常工作的破壞,稱為“容錯(cuò)”。 人為操作失誤是造成系統(tǒng)工作失敗的最重要的因素。世界上許多次嚴(yán)重的事故,如切爾諾貝利核洩漏,就是錯(cuò)誤操作造成的。,程序設(shè)計(jì),4.容錯(cuò)設(shè)計(jì) 一個(gè)沒有考慮容錯(cuò)的設(shè)計(jì),包括一個(gè)程序,不能算一個(gè)完美的設(shè)計(jì)。 上述數(shù)字定時(shí)器程序就至少?zèng)]有考慮二種人-機(jī)交互易產(chǎn)生的錯(cuò)誤: (1)上電后,顯示10分隱含時(shí)間。正常操作應(yīng)當(dāng)是:不設(shè)新時(shí)間;或者先按功能鍵,設(shè)分個(gè)位。再按功能鍵,設(shè)分十位。再按一次功能鍵正常倒計(jì)時(shí)。但是如果上電后直接按加鍵,則分個(gè)位將動(dòng)作,這將導(dǎo)致功能鍵動(dòng)作次數(shù)紊亂。 (2)倒計(jì)時(shí)開始后,如果按任何一鍵,也將出現(xiàn)非正常情況。,程序設(shè)計(jì),4.容錯(cuò)設(shè)計(jì) 對(duì)于第一種情況,可以在系統(tǒng)時(shí)鐘程序檢測到“+”鍵時(shí),先判別一下功能鍵次數(shù)是否為零,若是則不做加法而直接退出,見下面所列程序。 對(duì)于第二種情況,可以在開始計(jì)時(shí)后關(guān)閉外部中斷,而在計(jì)時(shí)結(jié)束后再重新允許外部中斷。,程序設(shè)計(jì),5.軟件的簡單抗干擾措施 (1)指令冗余 現(xiàn)以CK0程序中的含有冗余指令的幾個(gè)語句為例簡單說明一下它的抗干擾原理。語句如下:(具體程序見程序清單),程序設(shè)計(jì),(1)指令冗余 程序正常運(yùn)行時(shí),程序計(jì)數(shù)器(PC)指針在執(zhí)行JMP MPRO語句時(shí)指向095H,這條指令對(duì)應(yīng)的機(jī)器碼為80H,25H。前者是指令碼,后者為相對(duì)跳轉(zhuǎn)地址,即執(zhí)行此指令后程序指針應(yīng)跳轉(zhuǎn)到25H加下條指令的PC值,即跳至OBCH。后面的三條空操作冗余指令對(duì)程序運(yùn)行毫無影響。,程序設(shè)計(jì),(1)指令冗余 倘若程序計(jì)數(shù)器的值受到了外界干擾,指向25H(如虛線所示),如果不加冗余指令,則25H被當(dāng)做指令碼,將執(zhí)行ADD A, data addr,即執(zhí)行累加器ACC加一個(gè)數(shù)據(jù)地址為緊跟其后的20H。下一條指令,由于PC指向B2H,將執(zhí)行CPL bit addr,即對(duì)18H這個(gè)位地址了反??梢姵绦虮煌耆茐摹?程序設(shè)計(jì),(1)指令冗余 如果干擾后指針仍是指向25H,但下面有三條NOP指令,程序執(zhí)行的是ADD A,00H,累加器的值會(huì)改變。但PC下一個(gè)指向的二個(gè)NOP,再下一個(gè)指向的將是正常的JB KS, RCKO語言。至少減少了程序被破壞的程度,能接著恢復(fù)正常運(yùn)行。 冗余指令NOP通常加在2字節(jié)或3字節(jié)指令的后面。,程序設(shè)計(jì),5.軟件的簡單抗干擾措施 (2)軟件陷阱 程序的長度總是小于程序存儲(chǔ)器的容量,本課題中程序長度為170H(368 Byte),而89C2051內(nèi)部Flash memory的容量為2kB(800H),有大片的內(nèi)存的FFH剩余區(qū)。FFH為MCS-51內(nèi)核的指令代碼MOV A,R7。在剩余區(qū)里可以安排若干跳轉(zhuǎn)到初值化地址的指令,以便程序跳飛時(shí)能被這些陷阱所捕獲,還原到初值化或其它程序,請(qǐng)參看程序清單。,程序設(shè)計(jì),5.軟件的簡單抗干擾措施 (3)監(jiān)視定時(shí)器 監(jiān)視定時(shí)器(Watch Dog Timer-WDT)俗稱“看門狗”,是一種最常用的很有效的抗干擾方法。它的工作原理可以用圖9.1.10來說明。,,程序設(shè)計(jì),監(jiān)視定時(shí)器是一個(gè)時(shí)間計(jì)數(shù)器,復(fù)位以后,每隔一個(gè)固定的時(shí)間tWDT由Q端發(fā)生一個(gè)進(jìn)位脈沖,迫使MCU復(fù)位。MCU在程序正常運(yùn)行時(shí),啟動(dòng)WDT,并每隔tWDT的時(shí)間通過I/O口向WDT發(fā)送復(fù)位信號(hào),所以WDT永遠(yuǎn)沒有強(qiáng)迫MCU復(fù)位的可能。當(dāng)程序受到干擾,“跑飛”以后,程序不能正常的向WDT發(fā)送,于是在跑飛tWDT時(shí)間以后,MCU復(fù)位,程序又納入正常運(yùn)行。 WDT可以用外部器件自行設(shè)計(jì),也可以使用具有WDT功能的IC,如X5045?,F(xiàn)在已經(jīng)有不少M(fèi)CU內(nèi)部已帶有WDT,只需程序控制其運(yùn)行即可。 對(duì)低端產(chǎn)品的本設(shè)計(jì)而言還沒有必要使用WDT。,程序設(shè)計(jì),6.計(jì)時(shí)精度 既然課題提出了對(duì)時(shí)間精度的要求,設(shè)計(jì)時(shí)就必須予以考慮。 本設(shè)計(jì)是利用MCU的定時(shí)器軟件計(jì)時(shí)。計(jì)時(shí)誤差首先取決于MCU的時(shí)鐘。 (1)MCU時(shí)鐘引起的計(jì)時(shí)誤差 MCU的fosc=6MHz,是由石英晶體振蕩器產(chǎn)生的,其頻率穩(wěn)定度優(yōu)于10-6,有時(shí)可達(dá)10-11。按10-6計(jì)算,每秒變化6μs,100分的變化僅0.036s,故此變化可以忽略。,程序設(shè)計(jì),6.計(jì)時(shí)精度 (2)中斷響應(yīng)時(shí)間造成的誤差 計(jì)時(shí)定時(shí)器的初填值,是按下式計(jì)算出來的 式中為計(jì)時(shí)器的容量,這里是65536,TINT為中斷(計(jì)數(shù)溢出)的時(shí)間,TC為機(jī)器周期,這里TC=2μs。0.1s中斷的初填值為15536(3CB0H)。由TC為整數(shù),此初填值是無誤差的。,,程序設(shè)計(jì),6.計(jì)時(shí)精度 但是由于中斷請(qǐng)求到執(zhí)行中斷服務(wù)程序的第一條指令是需要幾個(gè)TC的時(shí)間,即中間響應(yīng)時(shí)間。何況執(zhí)行第一條執(zhí)令填入TL1還需要三個(gè)TC。若中斷響應(yīng)時(shí)間為3TC,0.1s內(nèi)的計(jì)時(shí)誤差為6T=12μs,100分計(jì)時(shí)誤差為-0.72s,完全滿足計(jì)時(shí)精度要求。 如果將初填值補(bǔ)償(加大)6個(gè)字,則可使精度大大提高。,程序設(shè)計(jì),7.程序清單 (略),- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
200 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)字 設(shè)計(jì)方案 ppt 課件
鏈接地址:http://zhongcaozhi.com.cn/p-845090.html