




已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于PIC16F877的智能電子鐘設(shè)計1 引言隨著電子技術(shù)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,生產(chǎn)工藝的飛速發(fā)展,人們生活水平的不斷提高,家用電器逐漸普及,而隨著人們對周圍環(huán)境便利程度的要求,市場對于智能時鐘控制系統(tǒng)的需求也越來越大。智能鐘應(yīng)實(shí)現(xiàn)的主要功能為:能實(shí)現(xiàn)二十四小時制的時分秒顯示,具有快速手動校時電路,具有整點(diǎn)報時功能,具有鬧鐘表功能(可設(shè)置時分),具有倒計時功能。2 設(shè)計原理及方案 2.1 設(shè)計原理單片機(jī)是一門技術(shù)性、應(yīng)用性很強(qiáng)的學(xué)科,實(shí)踐教學(xué)是它的一個極為重要的環(huán)節(jié)。不論是硬件擴(kuò)展、接口應(yīng)用還是編程方法、程序調(diào)試,都離不開實(shí)踐。本次設(shè)計的目的是通過完成一個涉及單片機(jī)都種資源應(yīng)用并具有綜合功能的小系統(tǒng)目標(biāo)板的設(shè)計與編程應(yīng)用,能夠?qū)﹄娮与娐?、電子元器件、印制電路板等方面的知識進(jìn)一步加深認(rèn)識,同時在軟件 編程、排版調(diào)試、焊接技術(shù)、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高,為今后能夠獨(dú)立進(jìn)行某些單片機(jī)應(yīng)用系統(tǒng)的開發(fā)設(shè)計工作打下一定的基礎(chǔ)。 該電子時鐘不但具有顯示時、分、秒的作用,而且用按鍵還可以實(shí)現(xiàn)時間的調(diào)整和鬧鈴的設(shè)定。本次綜合實(shí)踐完成了在單片機(jī)數(shù)據(jù)采集與定時系統(tǒng)的硬件電路設(shè)計后的基礎(chǔ)上,焊接制作電路板,完成該系統(tǒng)的軟件設(shè)計與調(diào)試。待仿真成功后,再將程序燒寫入單片機(jī)中。 2.2 設(shè)計方案系統(tǒng)結(jié)構(gòu)整個電子時鐘系統(tǒng)電路可分為五大部分:中央處理單元(CPU)、電源電路部分、顯示部分、鍵盤輸入部分。系統(tǒng)由PIC16F877、LED 數(shù)碼管、按鍵、發(fā)光二極管等部分構(gòu)成,能實(shí)現(xiàn)時間的調(diào)整、定時時間的設(shè)定,輸出等功能。系統(tǒng)的功能選擇由SB0、SB1、SB2、SB3、SB4 完成。其中SB0 為時間校對,定時器調(diào)整功能鍵,按SB 0 進(jìn)入調(diào)整狀態(tài)。SB1 為功能切換鍵。第一輪按動 SB1 依次進(jìn)入一路、二路、三路定時時間設(shè)置提示程序,按SB3 進(jìn)入各路定時調(diào)整狀態(tài)。定時時間到,二極管發(fā)亮。到了關(guān)斷時間后滅掉。如果不進(jìn)入繼續(xù)按SB1 鍵,依次進(jìn)入時間年位校對、月位校對、日位校對、時位校對、分位校對、秒位校對狀態(tài)。不管是進(jìn)入那種狀態(tài),按動SB2 皆可以使被調(diào)整位進(jìn)行不進(jìn)位增量加1 變化。各預(yù)置量設(shè)置完成后,系統(tǒng)將所有的設(shè)置存入RAM 中,按SB1 退出調(diào)整狀態(tài)。上電后,系統(tǒng)自動進(jìn)入計時狀態(tài),起始于00 時 00 分。SB4 為年月日顯示轉(zhuǎn)換鍵,可使原來顯示時分秒轉(zhuǎn)換顯示年月日。3 硬件設(shè)計3.1 原理圖設(shè)計智能鐘原理圖如圖3.1所示圖3.1 智能鐘原理圖3.2 元器件選擇3.2.1 中央處理單元 CPU選用PIC16F877對整個系統(tǒng)進(jìn)行控制:1)它將定時數(shù)據(jù)輸出到LED,實(shí)現(xiàn)時間的顯示; 2)根據(jù)鍵盤輸入調(diào)用相應(yīng)鍵處理子程序,實(shí)現(xiàn)時間的調(diào)整和鬧鈴的設(shè)定; 3.2.2 電源電路部分在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成部分,它是電子設(shè)備唯一能量來源,它的設(shè)計思路是根據(jù)我們以前學(xué)過的模電電子技術(shù),要想得到我們所要的+6V輸出電壓,就需將交流220V的電壓經(jīng)過變壓器、整流電路、濾波電路和穩(wěn)壓電路四個部分。 3.2.3 顯示部分 顯示部分是整個電子時鐘最為重要的部分,共需要位LED顯示器。采用動態(tài)顯示方式,所謂動態(tài)顯示方式是時 間(或溫度)數(shù)字在LED上一個一個逐個顯示,它是通過位選端控制在哪個LED上顯示數(shù)字,由于這些LED數(shù)字顯示之間的時間非常的短,使的人眼看來它們是一起顯示時間數(shù)字的,并且動態(tài)顯示方式所用的接口少,節(jié)省了CPU的管腳。由于端口的問題以及動態(tài)顯示方式的優(yōu)越性,在此設(shè)計的連接方式上采用共陰極接法。顯示器LED有段選和位選兩個端口,首先說段選端,它由LED八個端口構(gòu)成,通過對這八個端口輸入的不同的二進(jìn)制數(shù)據(jù)使得它的時間顯示也不同,從而可以得到我們所要的時間顯示3.2.4 位選電阻與段選電阻位選電阻=(VCC-0.7-0.3)/IB=(5-0.7-0.3)/(48/80) =6.66千歐,取6.8千歐。段選電阻=(VCC-VCEO-VD-0.3)/IB=(5-0.3-2-0.3)/6=400歐,取390歐。其中,單片機(jī)I/O口為CMOS電路,均通過一個FET(場效應(yīng)管)接地,因此在計算時均應(yīng)減去0.3V。3.2.5 蜂鳴器電阻蜂鳴器選用ZC17040,額定電壓3V,額定電流小于1毫安。限流電阻R=(5V-3V-0.3V)/1mA=1.7(千歐)取電阻為2千歐。 3.3 PCB圖設(shè)計智能鐘PCB圖如圖3.2所示圖3.2 智能鐘PCB圖4 軟件設(shè)計4.1 流程圖4.1.1 主程序流程圖如圖4.1.14.1.2 時鐘計時子程序流程圖如圖4.1.2 圖4.1.1 智能鐘主程序流程圖 圖4.1.2 時鐘計時子程序流程圖4.1.3 鍵盤掃描子程序流程圖4.1.4 R0中斷服務(wù)子程序流圖圖4.1.3 鍵盤掃描流程圖 圖4.1.4 中斷服務(wù)子程序流程圖4.2 源程序見附錄總 結(jié) 嵌入式測控系統(tǒng)設(shè)計及實(shí)踐是一門實(shí)踐性比較強(qiáng)的課程,也是我在大學(xué)期間學(xué)得最認(rèn)真的一門課程。通過這門課,使我受益匪淺,主要表現(xiàn)在以下幾個方面: (1) 通過這對這門課的學(xué)習(xí),我基本掌握了單片機(jī)原理,學(xué)會了用Protel 99 SE畫原理圖并生成相應(yīng)的PCB,學(xué)會了嵌入式系統(tǒng)的開發(fā)流程,并能夠利用51或PIC系列單片機(jī)去設(shè)計一個小型的嵌入式系統(tǒng)。而且我也充分認(rèn)識到了單片機(jī)的重要性,對單片機(jī)開發(fā)產(chǎn)生了濃厚的興趣。 (2) 我們這一組是用PIC16F877去做,但做的過程中我們發(fā)現(xiàn)了很多問題,比如電子元器件的選擇與購買,以及電路的焊接。由此我認(rèn)為,在單片機(jī)開發(fā)中,經(jīng)驗(yàn)往往是很重要的,而多去做實(shí)踐有利于經(jīng)驗(yàn)的積累,這應(yīng)該是我們這門課程與設(shè)計的意義所在。 (3)上完這門課后,我對單片機(jī)的總體感覺是:單片機(jī)比較適合做產(chǎn)品研發(fā)或系統(tǒng)設(shè)計,而我們以前學(xué)的PLC則比較適合于工程控制,它比用單片機(jī)控制要簡單一些。相比PLC,用單片機(jī)做系統(tǒng)設(shè)計要難很多,而且網(wǎng)上的相關(guān)資料顯示,PLC比較適合于環(huán)境比較惡劣的工業(yè)現(xiàn)場。因此,學(xué)會用PLC做控制也是很重要的。但我發(fā)現(xiàn),PLC與單片機(jī)也有某些類似的地方,而且,學(xué)完單片機(jī)后,我發(fā)現(xiàn)PLC變得容易了。由此我發(fā)現(xiàn),其實(shí)任何學(xué)科都是相通的。 (4)我們以前學(xué)的是51系列單片機(jī),而這次我們用PIC系列。通過對比我們發(fā)現(xiàn),51與PIC的在原理與編程方面有著類似的地方,盡管它的的指令系統(tǒng)不同,但它們基本思想是相同的,因此我們沒有花很長時間就從51過渡到了PIC。由此我發(fā)現(xiàn),其實(shí)51也好,PIC也好,只要學(xué)會并精通其中的一種,對其它類型的8位單片機(jī)也能觸類旁通,以不變應(yīng)萬變了。8位單片機(jī)我學(xué)會了51和PIC,我下一步的計劃是學(xué)習(xí)32位的ARM,因?yàn)槲艺J(rèn)為,32位單片機(jī)相比8位單片機(jī)有著更強(qiáng)大的功能和更好的發(fā)展前景。致 謝在做學(xué)習(xí)嵌入式系統(tǒng)設(shè)計的這段時間里,我們曾經(jīng)遇到過很多的難題,也產(chǎn)生了很多的疑問。但在老師和同學(xué)們的幫助以及自己的不斷努力下,終于成功地完成了這門課的學(xué)習(xí)。在這里,我們要首先感謝*老師,他給了我們很大的支持、鼓勵和幫助。在我們遇到問題的時候,他們總是很及時地給我們指點(diǎn)迷津,提出建議,使我們不致于在盲區(qū)內(nèi)停留太久。在學(xué)習(xí)過程中,老師以其嚴(yán)謹(jǐn)求實(shí)的治學(xué)態(tài)度,高度的敬業(yè)精神,孜孜以求的工作作風(fēng)和大膽創(chuàng)新的進(jìn)取精神對我們影響很大。他們淵博的知識,開闊的視野和敏銳的思維讓我們敬佩不已。當(dāng)然,在此期間我同組的同學(xué)們也是紛紛幫我們出謀劃策,提出很真誠的建議,使我們受益匪淺,請我們表達(dá)對你們深深地謝意。參 考 文 獻(xiàn)1 趙佩華.單片機(jī)接口技術(shù)及應(yīng)用.北京:機(jī)械工業(yè)出版社,2003.12 謝宜仁,謝偉,謝東辰.單片機(jī)使用技術(shù)問答.北京:人民郵電出版社,2003.23 薛宗祥,鹿樹理,朱惠英. 8位單片機(jī)原理與應(yīng)用. 北京:北京航空航天大學(xué)出版社,1999.94 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計. 北京:北京航空航天大學(xué)出版社, 2002.75 李榮正.PIC單片機(jī)原理與應(yīng)用(第2版). 北京:北京航空航天大學(xué)出版社,2005.1附錄源程序:/shizhong.h,頭文件。/*功能:利用PIC16F877做的電子時鐘程序*/shizhong.h文件,主要實(shí)現(xiàn)預(yù)編譯、函數(shù)的申明以及全局變量的定義。#define uchar unsigned char/在程序中用uchar代替無符號字符型數(shù)據(jù)#define uint unsigned int/在程序中用uint代替無符號整型數(shù)據(jù)#define DELAY_VALUE 1/定義數(shù)碼管顯示延時值#define KEY_DELAY_VALUE 3/定義按鍵去抖動延時值#define speaker RD6/蜂鳴器#define LED RD7/LED#define sw1 RB1/按鍵1#define sw2 RB2/按鍵2#define sw3 RB4/按鍵3#define sw4 RB5/按鍵4#define smg1RD0/數(shù)碼管1的位選#define smg2RD1/數(shù)碼管2的位選#define smg3RD2/數(shù)碼管3的位選#define smg4RD3/數(shù)碼管4的位選#define smg5RD4/數(shù)碼管5的位選#define smg6RD5/數(shù)碼管6的位選void interrupt tmr0(void);/申明定時器中斷函數(shù)void PORT_INIT(void);/申明端口初始化函數(shù)void TMR0_INIT(void);/申明定時器初始化函數(shù)void Time_Tran(void);/申明時間數(shù)值個時位分離函數(shù)void Time_Dis(void);/申明時間顯示函數(shù)void Display(uchar i,uchar num);/申明數(shù)碼管顯示函數(shù)void Delay(uint k);/申明延時函數(shù)void Time_init(void);/申明時間初始化函數(shù)void Speaking(uint speak_value,uint stop_value);/申明蜂鳴器函數(shù)uchar Keyscan(void);/申明按鍵函數(shù)void Sw1_Press(void);/申明按鍵1計數(shù)函數(shù)void Set_Clock(void);/申明時間設(shè)置函數(shù)uchar Sw4_Press(void);/申明按鍵4計數(shù)函數(shù)void Set_Alarm(void);/申明鬧鐘設(shè)置函數(shù)void Alarm(void);/申明鬧鐘函數(shù)void Alarm_Speaking(void);/申明鬧鐘報警函數(shù)void Speaking_Delay(uint k);/申明蜂鳴器函數(shù)void StopWatch(void);/申明秒表函數(shù)void SW_Time(void);/申明秒表計時函數(shù)void Sw2_Press(void);/申明按鍵2計數(shù)函數(shù)void Daojishi(void);/申明倒計時函數(shù)void Djs_Time(void);/申明倒計時計時函數(shù)/聲明程序中用到的相關(guān)全局變量extern int year;extern signed char month,day,hour,minu,sec,week;extern uchar count; extern uchar miao_ge,miao_shi,fei_ge,fei_shi,shi_ge,shi_shi;extern uchar day_ge,day_shi,month_ge,month_shi,year_ge,year_shi,year_bai,year_qian;extern uchar keyword,sw1_press_num,sw4_press_num;extern uchar hour_alarm,minu_alarm;extern uchar alarm_hour_shi,alarm_hour_ge,alarm_minu_shi,alarm_minu_ge;extern uchar alarm_stop;extern uchar sw_minu,sw_sec,sw_count;extern uchar sw_minu_shi,sw_minu_ge,sw_sec_shi,sw_sec_ge,sw_count_shi,sw_count_ge;extern uchar sw2_press_num;extern uchar watch_stop;extern signed char djs_hour,djs_minu,djs_sec,djs_count;extern uchar djs_hour_shi,djs_hour_ge,djs_minu_shi,djs_minu_ge,djs_sec_shi,djs_sec_ge;extern uchar djs_start;/clock.c文件,時鐘計時程序。#include #include #include shizhong.h/TMR0中斷程序void interrupt tmr0(void) if(T0IE&T0IF) TMR0=100; T0IF=0; /清除中斷標(biāo)志位 count+; /中斷產(chǎn)生秒信號 if(watch_stop=1) sw_count+; if(djs_start=1) djs_count+; if(count=150) count=0;sec+;if(sec=60) sec=0; minu+; if(minu=60) minu=0; hour+;/Speaking(100,0); if(hour=24) hour=0; day+; if(week=31) day=1; month+; if(month=13) month=1; year+; /時間轉(zhuǎn)換函數(shù),將時間的個位與十位分離出來以便顯示void Time_Tran(void) miao_ge=sec%10; miao_shi=sec/10; fei_ge=minu%10; fei_shi=minu/10; shi_ge=hour%10; shi_shi=hour/10; day_ge=day%10; day_shi=day/10; month_ge=month%10; month_shi=month/10; year_qian=year/1000; year_bai=(year/100)%10; year_shi=(year%100)/10; year_ge=year%10; alarm_hour_shi=hour_alarm/10; alarm_hour_ge=hour_alarm%10; alarm_minu_shi=minu_alarm/10; alarm_minu_ge=minu_alarm%10; sw_minu_shi=sw_minu/10; sw_minu_ge=sw_minu%10; sw_sec_shi=sw_sec/10; sw_sec_ge=sw_sec%10; sw_count_shi=sw_count/10; sw_count_ge=sw_count%10; djs_hour_shi=djs_hour/10; djs_hour_ge=djs_hour%10; djs_minu_shi=djs_minu/10; djs_minu_ge=djs_minu%10; djs_sec_shi=djs_sec/10; djs_sec_ge=djs_sec%10;/時間顯示子程序,按位顯示時間void Time_Dis(void)switch(sw1_press_num) case 0:case 1:case 2:case 3:Display(1,shi_shi);Display(2,shi_ge);Display(3,fei_shi);Display(4,fei_ge);Display(5,miao_shi);Display(6,miao_ge);break;case 4:case 5:case 6:Display(1,year_shi);Display(2,year_ge);Display(3,month_shi);Display(4,month_ge);Display(5,day_shi);Display(6,day_ge);break;case 7:Display(6,week);break;case 8:Display(3,alarm_hour_shi);Display(4,alarm_hour_ge);Display(5,alarm_minu_shi);Display(6,alarm_minu_ge);break;case 9:Display(1,sw_minu_shi);Display(2,sw_minu_ge);Display(3,sw_sec_shi);Display(4,sw_sec_ge);Display(5,sw_count_shi);Display(6,sw_count_ge);break;case 10:case 11:case 12:case 13:Display(1,djs_hour_shi);Display(2,djs_hour_ge);Display(3,djs_minu_shi);Display(4,djs_minu_ge);Display(5,djs_sec_shi);Display(6,djs_sec_ge);break;default:break;/main.c文件,主程序。#include /標(biāo)準(zhǔn)輸入輸出庫#include /PIC單片機(jī)自帶的庫#include shizhong.h/自己定義的頭文件/定義程序中用到的相關(guān)全局變量int year;signed char month,day,hour,minu,sec,week;uchar count; uchar miao_ge,miao_shi,fei_ge,fei_shi,shi_ge,shi_shi;uchar day_ge,day_shi,month_ge,month_shi,year_ge,year_shi,year_bai,year_qian;uchar keyword,sw1_press_num,sw4_press_num;uchar hour_alarm,minu_alarm;uchar alarm_hour_shi,alarm_hour_ge,alarm_minu_shi,alarm_minu_ge;uchar alarm_stop;uchar sw_minu,sw_sec,sw_count;uchar sw_minu_shi,sw_minu_ge,sw_sec_shi,sw_sec_ge,sw_count_shi,sw_count_ge;uchar sw2_press_num;uchar watch_stop;signed char djs_hour,djs_minu,djs_sec,djs_count;uchar djs_hour_shi,djs_hour_ge,djs_minu_shi,djs_minu_ge,djs_sec_shi,djs_sec_ge;uchar djs_start;/主程序void main(void)TMR0=100; /開啟TMR0中斷并賦初值 TMR0_INIT(); /定時器0初始化Time_init(); /時間初始化PORT_INIT(); /端口初始化 while(1) Time_Tran(); /調(diào)用個十位分離函數(shù)Time_Dis(); /調(diào)用時間顯示函數(shù)keyword=Keyscan();/調(diào)用鍵盤掃描函數(shù)Sw1_Press(); /調(diào)用按鍵1計數(shù)函數(shù)Set_Clock(); /調(diào)用時間設(shè)計函數(shù)Sw4_Press(); /調(diào)用按鍵4計數(shù)函數(shù)Alarm(); /調(diào)用鬧鐘函數(shù)Alarm_Speaking(); /調(diào)用鬧鐘報警函數(shù)StopWatch(); /調(diào)用秒表函數(shù)Daojishi(); /調(diào)用倒計時函數(shù)/Set_Clock.c,時鐘設(shè)置程序。#include #include #include shizhong.h/時間設(shè)置函數(shù)void Set_Clock(void)switch(sw1_press_num) case 0:break; case 1:if(keyword=2) hour+; if(hour=24) hour=0;if(keyword=3) hour-;if(hour=-1) hour=23;break; case 2:if(keyword=2) minu+; if(minu=60) minu=0;if(keyword=3) minu-;if(minu=-1) minu=59;break; case 3:if(keyword=2) sec+; if(sec=60) sec=0;if(keyword=3) sec-;if(sec=-1) sec=59;break; case 4:while(sw1_press_num=4) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();if(keyword=2) year+; if(keyword=3&year=0) year-; break; case 5:while(sw1_press_num=5) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();if(keyword=2) month+; if(month=13) month=1;if(keyword=3) month-;if(month=0) month=12; break; case 6:while(sw1_press_num=6) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();if(keyword=2) day+; if(day=31) day=1;if(keyword=3) day-;if(day=0) day=30; break; case 7:while(sw1_press_num=7) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();if(keyword=2) week+; if(week=8) week=1;if(keyword=3) week-;if(week=0) week=7; break; default:break;/Daojishi.c,倒計時程序。#include #include #include shizhong.h/倒計時設(shè)置函數(shù)void Daojishi(void)switch(sw1_press_num)case 10:while(sw1_press_num=10) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();if(keyword=2) djs_hour+;if(djs_hour=99) djs_hour=0; if(keyword=3) djs_hour-;if(djs_hour=-1) djs_hour=99; break;case 11:while(sw1_press_num=11) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();if(keyword=2) djs_minu+; if(djs_minu=60) djs_minu=0;if(keyword=3) djs_minu-;if(djs_minu=-1) djs_minu=59; break;case 12:while(sw1_press_num=12) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();if(keyword=2) djs_sec+; if(djs_sec=60) djs_sec=0;if(keyword=3) djs_sec-;if(djs_sec=-1) djs_sec=59; break;case 13:while(sw1_press_num=13) keyword=Keyscan();if(keyword=2) djs_start=1;else if(keyword=3) djs_start=0;else if(keyword=4) sw1_press_num=10;djs_start=0;Sw1_Press();Djs_Time();Time_Tran();Time_Dis();if(djs_hour=0)&(djs_minu=0)&(djs_sec=0)&(djs_start=1)Speaking(15,15); Speaking(15,40); break;default:break;/倒計時計時函數(shù)void Djs_Time(void)if(djs_count=100) djs_count=0;djs_sec-;if(djs_sec0) djs_sec=59; djs_minu-; if(djs_minu0) djs_minu=59; djs_hour-; if(djs_hour=0) djs_hour=0; /Alarm.c,鬧鐘程序。#include #include #include shizhong.h/鬧鐘設(shè)置函數(shù)void Set_Alarm(void)if(keyword=2) hour_alarm+;if(hour_alarm=24) hour_alarm=0;if(keyword=3) minu_alarm+;if( minu_alarm=60) minu_alarm=0;/鬧鐘函數(shù)void Alarm(void)while(sw1_press_num=8) keyword=Keyscan();Sw1_Press();Time_Tran();Time_Dis();Set_Alarm(); /鬧鐘響鈴函數(shù)void Alarm_Speaking(void)if(hour_alarm=hour)&(minu_alarm=minu) if(keyword=2) alarm_stop=0;if(keyword=3) minu_alarm+=5;alarm_stop=0;if(alarm_stop=1) Speaking(15,15); Speaking(15,40);Time_Tran();Time_Dis(); if(!(hour_alarm=hour)&(minu_alarm=minu)&(!(alarm_stop) alarm_stop=1;/蜂鳴子程序,蜂鳴時間參數(shù)為speak_value,暫停時間參數(shù)為stop_valuevoid Speaking(uint speak_value,uint stop_value)speaker=0;LED=0;Speaking_Delay(speak_value);speaker=1;LED=1;Speaking_Delay(stop_value);/延時子程序,蜂鳴報警延時專用void Speaking_Delay(uint k) uint i,j; for(i=k;i0;i-) for(j=110;j0;j-); keyword=Keyscan(); Sw1_Press(); Time_Tran(); Time_Dis(); /StopWatch.c,秒表程序。#include #include #include shizhong.h/秒表函數(shù)void StopWatch(void)while(sw1_press_num=9) keyword=Keyscan();Sw1_Press();Sw2_Press();if(sw2_press_num%2=1) watch_stop=1;else watch_stop=0;if(keyword=3) sw_minu=0;sw_sec=0;sw_count=0;SW_Time();Time_Tran();Time_Dis();/秒表計時函數(shù)void SW_Time(void)if(sw_count=100) sw_count=0;sw_sec+;if(sw_sec=60) sw_sec=0; sw_minu+; if(sw_minu=60) sw_minu=0;sw_sec=0; /display.c,顯示程序#include #include #include shizhong.hconst uchar duanma=0xAF,0x24,0x9D,0xB5,0x36,0xB3,0xBB,0x25, 0xBF,0xB7,0x3F,0xBA,0x8B,0xBC,0x9B,0x1B; /0-F/顯示子程序,在第i個數(shù)碼管上顯示序號為num的字符void Display(uchar i,uchar num) switch(i) case 1:smg1=1; smg2=0; smg3=0; smg4=0; smg5=0; smg6=0; PORTC=duanmanum; Delay(DELAY_VALUE); break; case 2:smg1=0; smg2=1; smg3=0; smg4=0; smg5=0; smg6=0; PORTC=duanmanum; Delay(DELAY_VALUE); break; case 3:smg1=0; smg2=0; smg3=1; smg4=0; smg5=0; smg6=0; PORTC=duanmanum; Delay(DELAY_VALUE); break; case 4:smg1=0; smg2=0; smg3=0; smg4=1; smg5=0; smg6=0; PORTC=duanmanum; Delay(DELAY_VALUE); break; case 5:smg1=0; smg2=0; smg3=0; smg4=0; smg5=1; smg6=0; PORTC=duanmanum; Delay(DELAY_VALUE); break; case 6:smg1=0; smg2=0; smg3=0; smg4=0; smg5=0; smg6=1; PORTC=du
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司工資結(jié)構(gòu)合同范例
- 公司銷售合同范例范例
- 信訪顧問合同范例
- 買賣網(wǎng)紅合同范例
- 冀教版八年級數(shù)學(xué)上冊教學(xué)工作計劃(及進(jìn)度表)
- 膝關(guān)節(jié)置換術(shù)術(shù)后護(hù)理常規(guī)
- 新生兒常見疾病相關(guān)知識
- 智慧樹知到《幼兒園教育活動設(shè)計(青島職業(yè)技術(shù)學(xué)院)》2025章節(jié)測試附答案
- 智慧樹知到《醫(yī)學(xué)遺傳學(xué)(寧波大學(xué))》2025章節(jié)測試附答案
- 水果行業(yè)工作流程
- 2025年陽泉師范高等??茖W(xué)校單招職業(yè)適應(yīng)性考試題庫一套
- 2024-2025學(xué)年高二數(shù)學(xué)湘教版選擇性必修第二冊教學(xué)課件 第2章-2.4空間向量在立體幾何中的應(yīng)用-2.4.4 向量與距離
- 人教版小學(xué)音樂四年級下冊教案(全冊)
- 2025年鄉(xiāng)村住宅互換協(xié)議
- 人身安全主題課件
- 2025-2030年中國鐵精粉市場發(fā)展?fàn)顩r及營銷戰(zhàn)略研究報告
- 2025年蕪湖職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 律師事務(wù)所監(jiān)管資金協(xié)議書(2篇)
- 2025年江蘇南通煒賦集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 《中國象棋基礎(chǔ)教程》課件
- 《小學(xué)生新能源科普》課件
評論
0/150
提交評論