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

正文內(nèi)容

基于單片機的數(shù)字鐘設(shè)計(編輯修改稿)

2025-02-14 14:51 本頁面
 

【文章內(nèi)容簡介】 ,其硬件連接方式如下圖所示。圖34 數(shù)碼管的硬件連接示意圖數(shù)碼管使用條件:a、段及小數(shù)點上加限流電阻 b、使用電壓:段:根據(jù)發(fā)光顏色決定; 小數(shù)點:根據(jù)發(fā)光顏色決定c、使用電流:靜態(tài):總電流 80mA(每段 10mA);動態(tài):平均電流 45mA 峰值電流 100mA數(shù)碼管使用注意事項說明:(1)數(shù)碼管表面不要用手觸摸,不要用手去弄引角;(2)焊接溫度:260度;焊接時間:5S(3)表面有保護膜的產(chǎn)品,可以在使用前撕下來。 鍵盤控制電路該設(shè)計需要校對時間,所以用三個按鍵來實現(xiàn)。按hour來調(diào)節(jié)小時的時間,按 minute來調(diào)節(jié)分針的時間,按 sceond來調(diào)節(jié)秒的時間。下圖是按鍵硬件連接圖。圖35 按鍵控制電路的硬件連接圖當用手按下一個鍵時,如圖36所示,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個鍵時,也回會出現(xiàn)類似的情況。這就是抖動。抖動的持續(xù)時間隨鍵盤材料和操作員而異,不過通??偸遣淮笥?0ms。很容易想到,抖動問題不解決就會引起對閉合鍵的識別。用軟件方法可以很容易地解決抖動問題,這就是通過延遲10ms來等待抖動消失,這之后,在讀入鍵盤碼。鍵按下前沿抖動后沿抖動閉合穩(wěn)定圖36 按鍵抖動信號波形第三章 數(shù)字鐘的軟件設(shè)計系統(tǒng)的軟件設(shè)計也是工具系統(tǒng)功能的設(shè)計。單片機軟件的設(shè)計主要包括執(zhí)行軟件(完成各種實質(zhì)性功能)的設(shè)計和監(jiān)控軟件的設(shè)計。單片機的軟件設(shè)計通常要考慮以下幾個方面的問題:(1)根據(jù)軟件功能要求,將系統(tǒng)軟件劃分為若干個相對獨立的部分,設(shè)計出合理的總體結(jié)構(gòu),使軟件開發(fā)清晰、簡潔和流程合理;(2)培養(yǎng)良好的編程風(fēng)格,如考慮結(jié)構(gòu)化程序設(shè)計、實行模塊化、子程序化。既便于調(diào)試、鏈接,又便于移植和修改;(3)建立正確的數(shù)學(xué)模型,通過仿真提高系統(tǒng)的性能,并選取合適的參數(shù);(4)繪制程序流程圖;(5)合理分配系統(tǒng)資源;(6)為程序加入注釋,提高可讀性,實施軟件工程;(7)注意軟件的抗干擾設(shè)計,提高系統(tǒng)的可靠性。 系統(tǒng)軟件設(shè)計流程圖 這次的數(shù)字電子鐘設(shè)計用到很多子程序,它們的流程圖如下所示。開始啟動定時器按鍵檢測時間顯示 主程序是先開始,然后啟動定時器,定時器啟動后在進行按鍵檢測,檢測完后,就可以顯示時間。圖41 主程序流程圖按鍵處理是先檢測秒按鍵是否按下,秒按鍵如果按下,秒就加1;如果沒有按下,就檢測分按鍵是否按下,分按鍵如果按下,分就加1;如果沒有按下,就檢測時按鍵是否按下,時按鍵如果按下,時就加1;如果沒有按下,就把時間顯示出來。 NYNYNYhour加1顯示時間結(jié)束開始sceond按鍵按下?sceond加1minute按鍵按下?minute加1hour按鍵按下? 圖42 按鍵處理流程圖定時器中斷時是先檢測1秒是否到,1秒如果到,秒單元就加1;如果沒到,就檢測1分鐘是否到,1分鐘如果到,分單元就加1;如果沒到,就檢測1小時是否到,1小時如果到,時單元就加1,如果沒到,就顯示時間。N24小時到?分單元清零,時單元加1NNNYY時單元清零時間顯示中斷返回開始一秒時間到?60秒時間到?60分鐘到?秒單元加1秒單元清零,分單元加1YY圖43 定時器中斷流程圖時間顯示是先秒個位計算顯示,然后是秒十位計算顯示,再是分個位計算顯示,再然后是分十位顯示,再就是時個位計算顯示,最后是時十位顯示。時十位計算顯示結(jié)束開始秒個位計算顯示秒十位計算顯示分個位計算顯示分十位計算顯示時個位計算顯示 圖44 時間顯示流程圖 數(shù)字鐘的原理圖用PROTUES軟件,根據(jù)要求畫出數(shù)字電子鐘的原理圖如下所示。圖45 數(shù)字鐘的原理圖 在此有必要介紹一下數(shù)字電子鐘的工作原理。工作原理 : 數(shù)字電子鐘是一個將“ 時”,“分”,“秒”顯示于人的視覺器官的計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒,另外還有校時功能。因此,一個基本的數(shù)字鐘電路主要由顯示器“時”,“分”,“秒”和單片機,還有校時電路組成。8個數(shù)碼管的段選接到單片機的P0口,位選接到單片機的P2口。數(shù)碼管按照數(shù)碼管動態(tài)顯示的工作原理工作,將標準秒信號送入“秒單元”,“秒單元”采用60進制計數(shù)器,每累計60秒發(fā)出一個“分脈沖”信號,該信號將作為“分單元”的時鐘脈沖?!胺謫卧币膊捎?0進制計數(shù)器,每累計60分鐘,發(fā)出一個“時脈沖”信號,該信號將被送到“時單元”?!皶r單元”采用24進制計時器,可實現(xiàn)對一天24小時的累計。顯示電路將“時”、“分”、“秒”通過七段顯示器顯示出來。校時電路時用來對“時”、“分”、“秒”顯示數(shù)字進行校對調(diào)整,校時電路時用來對“時”、“分”、“秒”顯示數(shù)字進行校對調(diào)整,按一下second,秒單元就加1 ,按一下minute,分就加1,按一下hour,時就加1。 中斷子程序timer0 (void) interrupt 1 using 1{ u++。 TH0=(6553650000)/256。 TL0=(6553650000)%256。 }void delay(){ unsigned int time,p。 for(time=30。time0。time) for(p=0。p10。p++)。 }includechar mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。char sceond,minute,hour,i,k,l,j,x,y。int u。sbit P1_0=P1^0。sbit P1_1=P1^1。sbit P1_2=P1^2。void main(){ TMOD=0x01。 TH0=(6553650000)/256。 TL0=(6553650000)%256。 EA=1。 ET0=1。 TR0=1。 do { kongzhi()。 xianshi()。 } while(1)。}在這里,我們有必要介紹一下單片機的中斷系統(tǒng),以利于我們的學(xué)習(xí)。中斷技術(shù)在單片系統(tǒng)中有著十分重要的作用,它不僅可以提高單片機CPU的效率,也可以對突發(fā)事件處理。所謂中斷就是當CPU正在執(zhí)行程序A時,發(fā)生了另一個急需處理的事件B,這是CPU暫停當前執(zhí)行的程序A,立即轉(zhuǎn)去執(zhí)行處理事件B的程序,處理完事件B后,再返回到程序A繼續(xù)執(zhí)行,這個過程被叫做中斷。關(guān)于中斷的概念有下列幾個名詞:(1)程序A稱為主程序,(2)處理事件B的程序稱為中斷服務(wù)程序,(3)主程序中轉(zhuǎn)向中斷服務(wù)程序的地方稱為斷點,(4)引起中斷的原因即事件B稱為中斷源,(5)轉(zhuǎn)去執(zhí)行中斷服務(wù)程序稱為中斷響應(yīng)。關(guān)于中斷的概念可以打個如下的比喻。領(lǐng)導(dǎo)(CPU)在自己的房間辦公(執(zhí)行主程序),下屬(外設(shè))有問題打電話來請示(中斷源),領(lǐng)導(dǎo)停下正在進行的工作,通過電話給下屬做指示(執(zhí)行中斷服務(wù)程序),指示完后,領(lǐng)導(dǎo)掛斷電話,繼續(xù)做自己的工作(返回主程序繼續(xù)執(zhí)行)。中斷是一個過程,當中央處理器CPU在處理某件事情時,外部又發(fā)生了另一緊急事件,請求CPU暫停當前的工作而去迅速處理該緊急事件。處理結(jié)束后,再回到原來被中斷的地方,繼續(xù)原來的工作。引起中斷的原因或發(fā)出中斷請求的來源,稱為中斷源。單片機一般允許有多個中斷源,當幾個中斷源同時向CPU請求中斷時,就存在CPU優(yōu)先響應(yīng)哪一個中斷請求源的問題(優(yōu)先級問題),一般根據(jù)中斷源的輕重緩急排隊,優(yōu)先處理最緊急事件的中斷請求,于是便規(guī)定每一個中斷源都有一個中斷優(yōu)先級別,并且CPU總是響應(yīng)級別最高的中斷請求。當CPU正在處理一個中斷源請求的時候,又發(fā)生了另一個優(yōu)先級比它高的中斷源請求,如果CPU能夠暫時中止對原來中斷處理程序的執(zhí)行,轉(zhuǎn)而去處理優(yōu)先級更高的中斷源請求,待處理完以后,再繼續(xù)執(zhí)行原來的低級中斷處理程序,這樣的過程稱為中斷嵌套。 LED顯示子程序void xianshi(){ if(u==20) { u=0。 sceond++。 while(sceond==60) { sceond=0。 minute++。 if(minute==60) { minute=0。 hour++ 。 if(hour==24) { hour=0。 } } } } x=hour%10。 y=hour/10。 l=minute%10。 j=minute/10。 i=sceond%10。 k=sceond/10。 P2=0x7f。 P0=mod[i]。 delay()。 P2=0xbf。 P0=mod[k]。 delay()。 P2=0xdf。 P0=0x40。 delay()。 P2=0xef。 P0=mod[l]。 delay()。 P2=0xf7。 P0=mod[j]。 delay()。 P2=0xfb。 P0=0x40。 delay()。 P2=0xfd。 P0=mod[x]。 delay()。 P2=0xfe。 P0=mod[y]。 delay()。} 按鍵控制子程序void kongzhi() { if(P1_0==0) { TR0=0。 while(P1_0==0)。 while(1) { if(P1_1==0) { sceond++。 if(sceond==60) { sceond=0。 } } while(P1_1==0)。 if(P1_2==0) { sceond。 if(sceond0) { sceond=0。 } } while(P1_2==0)。 i=sceond%10。 k=sceond/10。 P2=0x7f。 P0=mod[i]。 delay()。 P2=0xbf。 P0=mod[k]。 delay()。 if(P1_0==0) { while(P1_0==0)。 while(1) { if(P1_1==0) { minute++。 while(minute==60) { minute=0。 } } while(P1_1==0)。 if(P1_2==0) { minute。 if(minute0) { minute=0。 } } while(P1_2==0)。 l=minute%10。 j=minute/10。 P2=0xef。 P0=mod[l]。 delay()。 P2=0xf7。 P0=mod[j]。 delay()。 if( P1_0==0) { while(P1_0==0)。 while(1) { if(P1_1==0) { hour++。 while(hour==24) { hour=0。 } } while(P1_1==0)。 if(P1_2==0) { hour。 if(hour0) {
點擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1