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

正文內(nèi)容

多功能電子時鐘設(shè)計(編輯修改稿)

2024-07-26 23:14 本頁面
 

【文章內(nèi)容簡介】 外,還對片內(nèi)的特殊功能寄存器有影響。單片機復位后不影響內(nèi)部RAM的狀態(tài)[17]。89C51單片機復位信號的輸入端是RST引腳,高電平有效。其有效時間持續(xù)24個時鐘周期(2個機器周期)以上。RST端的外部復位電路有兩種操作方式:上電自動復位和按鍵手動復位。上電自動復位是利用電容儲電來實現(xiàn)的,(a)所示。上電瞬間,RC電路充電,RST端出現(xiàn)正脈沖,隨著充電電流的減少,RST的電位逐漸下降。按鍵手動復位有電平方式和脈沖方式兩種。按鍵電平復位是相當于RST端通過電阻接高電平,(b)所示;按鍵脈沖復位,利用RC微分電路產(chǎn)生正脈沖,(c)所示[12]。出于應用方便,本設(shè)計采用按鍵電平復位電路。實際電路請參見附錄C,復位按鍵為K8。 單片機寄存器的復位狀態(tài)表寄存器復位狀態(tài)寄存器復位狀態(tài)PC0000HTCON00HACC00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HPP3FFHSCON00HIP000000BSBUF不定IE000000BPCON0B(NMOS)TMOD00H00000B(CHMOS) 上電復位和按鍵復位電路第四章 電子時鐘軟件設(shè)計C51單片機可以應用匯編語言和C語言進行編程。,匯編語言與機器指令一一對應所以用匯編語言編寫的程序在單片機里運行起來效率較高。C語言程序可讀性高,更便于理解。本設(shè)計使用C語言編程。 主程序設(shè)計第一次上電,系統(tǒng)先進行初始化, LED顯示初始時間“14:28:00”,并開始走時。初始日期為2008年5月12日,此刻若按K1鍵,LED顯示“080512”。單片機依次開始調(diào)用鍵盤掃描子程序、DS1302子程序、DS18B20子程序、鬧鈴子程序,經(jīng)過延時,返回程序開頭循環(huán)運行。 多功能電子鐘主程序流程圖 子程序設(shè)計 實時時鐘日歷子程序設(shè)計該程序主要實現(xiàn)對DS1302寫保護、充電,對年、月、日、時、分、秒等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關(guān)中斷指令,因為在串行通信時對時序要求比較高,而且在此是用I/O口軟件模擬串行時鐘脈沖,所以在通信過程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷。 實時時鐘日歷子程序流程圖DS1302每次上電時自動處于暫停狀態(tài),必須把秒寄存器的位7置位0,時鐘才開始計時。如果DS1302一直沒有掉電,則不存在此問題。在進行寫操作時,需要先解除寫保護寄存器的“禁止”狀態(tài)。當用多字節(jié)模式進行操作時,必須寫夠8字節(jié)。源程序見附錄一。 顯示子程序設(shè)計用74LS164驅(qū)動LED數(shù)碼管靜態(tài)顯示電路,編程也很容易。只要將需要顯示的數(shù)字編輯成對應的BCD碼,逐位送入74LS164的A、B串行輸入端,數(shù)碼管將正常顯示。關(guān)鍵之處是要實現(xiàn)根據(jù)鍵值顯示不同的數(shù)字。為了方便實現(xiàn)按鍵顯示,程序中調(diào)用的都是各個標志位,通過判斷標志位的“真”、“假”來決定顯示的內(nèi)容。源程序見附錄一。 鍵盤掃描子程序單片機對鍵盤掃描的方法有隨機掃描方式、定時掃描方式和中斷掃描方式。在隨機掃描方式中,CPU完成某特定任務后,即執(zhí)行鍵盤掃描程序,以確定鍵盤有無按鍵輸入,然后根據(jù)按鍵功能轉(zhuǎn)去執(zhí)行相應的操作。在執(zhí)行鍵盤按鍵規(guī)定的功能中不理睬鍵盤輸入。定時掃描方式與隨機掃描方式基本相同,只是利用CPU內(nèi)的定時中斷,每隔一定時間掃描有無按鍵被按下,鍵盤反應速度較快,在處理按鍵功能過程中,可以通過鍵盤命令進行干預,如取消、暫停等操作。前兩種掃描方式均會占用CPU大量時間。不管有沒有鍵入操作,CPU總要在一定的時間內(nèi)進行掃描,這對于單片機控制系統(tǒng)是很不利的。由于本設(shè)計中AT89C51單片機在系統(tǒng)中的主要任務是接受DS1302和DS18B20的數(shù)據(jù)并送出顯示,完成時鐘/日歷校對和日期/溫度顯示控制。89C51單片機完全有能力完成以上工作,所以采用隨機掃描鍵盤方式,系統(tǒng)也能夠正常運行。單片機掃描完鍵盤,得到鍵值,并根據(jù)鍵值轉(zhuǎn)入執(zhí)行對應任務,以實現(xiàn)按鍵功能。如果沒有按鍵按下,則程序掃描到Key=FFH,將鍵值Key清零,返回主程序。源程序見附錄一。 鬧鈴子程序設(shè)計鬧鈴子程序最主要的任務是不斷用時鐘分(min)與時(hour)同設(shè)定的鬧鈴分(clk_min)與鬧鈴時(clk_hour)比較,只要滿足min等于clk_min、hour等于clk_hour,響鈴啟動5分鐘,并根據(jù)外部按鍵執(zhí)行相應貪睡任務。源程序見附錄一。 顯示子程序流程圖 鬧鈴子程序流程圖圖和圖標要在同一頁!第五章 系統(tǒng)調(diào)試調(diào)試工作分硬件調(diào)試和軟件調(diào)試兩部分,調(diào)試方法介紹如下:首先,硬件調(diào)試主要是先搭建硬件平臺,然后利用萬用表等工具對電路檢查,最后應用程序進行功能調(diào)試。硬件調(diào)試比較費時,需要細心和耐心,也需要熟練掌握電路原理。然后,可以直接應用一些編輯或仿真軟件進行軟件調(diào)試,比如單片機C51編輯軟件Keil。該軟件提供了一個集成開發(fā)環(huán)境uVision,它包括C編輯器、宏編輯器、連接器、庫管理和一個功能強大的仿真調(diào)試器。通過編譯、運行,可以檢查程序錯誤。但應用此方法,仍需要十分了解所使用元器件的工作方式和管腳連接方式。在軟件調(diào)試過程中要仔細耐心,即便是多寫或少些一兩個字符,都無法編譯成功。而有時往往在Keil中編譯、運行無錯,但燒錄到單片機中運行起來就會出錯,很可能是編程時管腳或時序編輯得不對。還有一種方式,即應用仿真軟件搭建電路的軟件平臺,再導入程序進行仿真調(diào)試。如果電路出錯,可以在計算機上方便的修改電路,程序出錯可以重新編輯程序,這種方法節(jié)時、省力,經(jīng)濟、方便。筆者應用的仿真軟件為Proteus??傊{(diào)試過程是一個軟硬件相結(jié)合調(diào)試的過程,硬件電路是基礎(chǔ),軟件是檢測硬件電路和實現(xiàn)其功能的關(guān)鍵[13]。在調(diào)試過程中,首先必須明確調(diào)試順序。例如:本設(shè)計是在單片機系統(tǒng)基礎(chǔ)上建立起來的,所以必須先確定單片機基礎(chǔ)電路能否正常工作。為了正確顯示時間,接下來還要確定顯示電路能否正常工作。硬件調(diào)試的過程,也是軟件調(diào)試的過程。然后,要準備好調(diào)試的工具。硬件調(diào)試需要萬用表、示波器等,軟件調(diào)試一般需要諸如Keil等仿真編輯器。筆者根據(jù)自己實際制作該多功能電子時鐘的經(jīng)驗,將調(diào)試過程介紹如下: 硬件調(diào)試 單片機基礎(chǔ)電路調(diào)試單片機基礎(chǔ)電路包括電源、單片機、外部時鐘震蕩電路、復位電路和外部接口電路。調(diào)試過程需要注意以下幾點:1. 檢查電源是否完好。2. 單片機電源要連接正確,并且保證AT89C51的31號引腳接高電平。AT89C51的31號引腳是外部程序存儲器選擇信號端,當該引腳為高電平時,單片機會一直從片內(nèi)程序存儲器內(nèi)取指令。3. 如果使用P0口做I/O口,要接上拉電阻。4. 使用萬用表排查電路中是否存在斷路或者短路情況。筆者在制作外部接口電路時使用的是排針,焊接時容易出現(xiàn)管腳之間短路,所以在上電以前必須先排查電路。5. 編輯一個使一組發(fā)光二極管循環(huán)點亮的程序并燒錄到單片機內(nèi),上電運行,檢查單片機是否正常工作,復位電路是否正確。筆者編輯了使一組P1口點亮8個發(fā)光二極管循環(huán)點亮的程序,程序代碼如下:include void delay(void) //延時子程序{ Unsigned char i, j,k。 //延時時間根據(jù)變量i,j,k不同而改變 for(i=50。i0。i)for(j=50。j0。j)for(k=k0。i)。}void main(){ unsigned int n。 unsigned char code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}。 while(1) { P1=0xFFH。 //初始化P1口 for(n=0。n8。n++) {P1=ledp[n]。 delay()。 }}} 顯示電路調(diào)試本設(shè)計的顯示電路使用了共陰LED和74LS164。在連接顯示電路之前要明確共陰型8段LED的10個管腳與各段發(fā)光二極管的對應關(guān)系,熟悉74LS164管腳位置,然后才能開始進行連接[19]。在連接過程中,需要注意以下幾點:1. LED數(shù)碼管各管腳與74LS164各管腳的對應關(guān)系要十分清楚,所有LED數(shù)碼管與74LS164的連接方式要統(tǒng)一。2. 因為是移位顯示,所以需要注意前一位74LS164的QH腳要與下一位74LS164的A、B腳連接。3. 明確單片機管腳功能。、B腳。4. 74LS164的CLR腳接高電平。5. 編寫一段顯示程序,燒錄進單片機,、。檢查無誤后上電,檢查顯示電路是否正確。以下是筆者編寫的一段顯示程序:上電后,7位數(shù)碼管分別顯示0~6。include define uint unsigned intdefine uchar unsigned charvoid dis()。 void sendbyte()。sbit DAT=P1^0。sbit CLK=P1^1。uchar disp_buffer[7]。unsigned char tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f }。 void delay_50ms(unsigned int t) //延時子程序 { unsigned int j。 for(。t0。t) for(j=6245。j0。j) {。} } void dis() //顯示子程序,0~6 { unsigned char gsb,led,led1,jj。 disp_buffer[0]=tab[0]。 disp_buffer[1]=tab[1]。 disp_buffer[2]=tab[2]。 disp_buffer[3]=tab[3]。 disp_buffer[4]=tab[4]。 disp_buffer[5]=tab[5]。 disp_buffer[6]=tab[6]。for(gsb=0。gsb7。gsb++) { led=disp_buffer[gsb]。 for(jj=0。jj8。jj++) { led1=ledamp。0x1。 if (led1==0x1) DAT=1。 else DAT=0。 CLK=0。CLK=1。 led=led1。 }}}void main() //主程序{ while(1) { dis()。 delay_50ms(10)。 }} DS1302電路調(diào)試該電路包含DS1302芯片、主電源、備用電源、晶振等部分。在與單片機連接的過程中需要注意以下幾點:1. 清楚DS1302與單片機連接的管腳。本設(shè)計定義為:,I/。2. 注意電源正負極連接。3. 。該晶振體型比較小,在焊接時要小心,注意不要將晶振引腳弄斷。同時也要盡量使晶振離DS1302的XX2引腳近距離焊接。4. 編寫DS1302的時鐘/日歷程序,只要求能夠正確顯示時間。燒錄進單片機,檢查電路電源正負極連接是否正確。檢查無誤后可以上電檢查。筆者編寫了一段時鐘/日歷顯示程序,設(shè)置初始時間為14:28:00,初始日期為2008年5月12日。上電后LED數(shù)碼管顯示“142800”,之后開始走時。觀察32分鐘之后,數(shù)碼管顯示“150000”,證明DS1302電路正確。源程序見附錄A 按鍵電路調(diào)試按鍵電路比較簡單,故調(diào)試起來也很容易。如果確保按鍵焊接正確,只需在DS1302的調(diào)試程序上加上一段日歷顯示子程序,并在主程序中寫入:If(P_7==0){dis_calendar。}日歷顯示子程序原理與時鐘顯示子程序原理相同,源程序見附錄A該程序的功能是:當按下K7時,第1~6位LED數(shù)碼管馬上由時間顯示日期。當K7彈出后,數(shù)碼管1~6位有顯示日期轉(zhuǎn)為顯示實時時間[20]。 軟件調(diào)試在硬件調(diào)試完畢的基礎(chǔ)上,需要進一步完善程序,也就是進入軟件調(diào)試階段。在本設(shè)計中,軟件調(diào)試主要分三大部分:實時時鐘日歷子程序調(diào)試、環(huán)境溫度采集子程序調(diào)試、按鍵子程序調(diào)試。將這三部分調(diào)試成功,那么整個設(shè)計的軟件部分也就基本完成了。在硬件調(diào)試部分,已經(jīng)將實時時鐘日歷子程序調(diào)試完畢了,只需在主程序中調(diào)用按鍵子程序即可,源程序見附錄A,這里不再贅述。 鍵盤子程序調(diào)試依據(jù)設(shè)計要求,鍵盤子程序需要完成對時間/日歷的校對、日期/溫度的顯示和鬧鈴的開關(guān)。為了便于顯示子程序和鬧鈴子程序的調(diào)用,除了KK2鍵以外,其余按鍵都定義功能標志位。例如:If(K7==0){alarm_flag= true。}在調(diào)用鬧鈴子程序時,鬧鈴標志位為“1”,則開啟鬧鈴,否則關(guān)閉鬧鈴。源程序見附錄A。窗體底端結(jié) 論過去人們應用時鐘僅僅是為了明確當前時間。隨著生產(chǎn)力的發(fā)展,社會的進步,生產(chǎn)生活對時鐘的需求越來越大,對時鐘的體型、功能的要求也各有不同。所以多功能電子時鐘在今后的應用也會越來越廣泛?;趩纹瑱C實現(xiàn)電子時鐘,僅僅是眾多方法之一。并且市場上的實時時鐘日歷芯片品類繁多,IC化的傳感器各種各樣,顯示方式也愈趨于人性化。所以多功能電子時鐘有多種實現(xiàn)
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1