單片機(jī)時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)報(bào)告書_第1頁
單片機(jī)時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)報(bào)告書_第2頁
單片機(jī)時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)報(bào)告書_第3頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄1課程設(shè)計(jì)的目的和意義 21.1設(shè)計(jì)目的 21.2設(shè)計(jì)意義 22系統(tǒng)方案設(shè)計(jì)及確定 33系統(tǒng)硬件設(shè)計(jì) 43.1AT89S51最小系統(tǒng)設(shè)計(jì) 43.1.1時(shí)鐘電路硬件設(shè)計(jì) 43.1.2復(fù)位電路硬件設(shè)計(jì) 53.2鍵盤電路硬件設(shè)計(jì) 53.3顯示電路硬件設(shè)計(jì) 63.4蜂鳴器電路硬件設(shè)計(jì) 64系統(tǒng)軟件設(shè)計(jì) 84.1系統(tǒng)主程序設(shè)計(jì) 84.2定時(shí)器設(shè)計(jì) 94.3秒表設(shè)計(jì) 104.4鬧鐘設(shè)計(jì) 104.5其他主要子程序設(shè)計(jì) 115系統(tǒng)調(diào)試 126總結(jié) 13參考文獻(xiàn) 14附錄 15附錄一程序清單 15附錄二系統(tǒng)硬件原理圖 301課程設(shè)計(jì)的目的和意義1.1設(shè)計(jì)目的靈活運(yùn)用單片機(jī)的基礎(chǔ)知識(shí),依據(jù)課程設(shè)計(jì)內(nèi)容,能夠完

2、成從硬件電路圖設(shè)計(jì),到PCB制版,再到軟件編程及系統(tǒng)調(diào)試實(shí)現(xiàn)系統(tǒng)功能,完成課程設(shè)計(jì),加深對(duì)單片機(jī)基礎(chǔ)知識(shí)的理解,并靈活運(yùn)用,將各門知識(shí)綜合應(yīng)用。能夠上網(wǎng)查詢器件資料,培養(yǎng)對(duì)新知識(shí)新技術(shù)的獨(dú)立的學(xué)習(xí)能力和應(yīng)用能力。獨(dú)立完成一個(gè)小的系統(tǒng)設(shè)計(jì),從硬件設(shè)計(jì)到軟件設(shè)計(jì),增強(qiáng)分析問題、解決問題的能力,為日后的畢業(yè)設(shè)計(jì)及科研工作奠定良好的基礎(chǔ)。1.2設(shè)計(jì)意義單片機(jī)課程設(shè)計(jì)過程中,我們通過查閱資料、硬件設(shè)計(jì)、程序設(shè)計(jì)、安裝調(diào)試等環(huán)節(jié),完成了一個(gè)涉及 89S51單片機(jī)多種資源應(yīng)用并具有綜合功能的小系統(tǒng)目標(biāo)板的設(shè)計(jì)與編程應(yīng)用。使我們不但能夠?qū)⒄n堂上學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合起來,而且能夠?qū)﹄娮与娐贰㈦娮釉骷?/p>

3、原理圖繪制等方面的知識(shí)進(jìn)一步加深認(rèn)識(shí),同時(shí)在軟件編程、排錯(cuò)調(diào)試、焊接技術(shù)、相關(guān)軟件及儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。使我們?cè)鲞M(jìn)對(duì)單片機(jī)的感性認(rèn)識(shí),加深對(duì)單片機(jī)理論方面的理解。使我們了解和掌握單片機(jī)應(yīng)用系統(tǒng)的軟硬件設(shè)計(jì)過程、方法及實(shí)現(xiàn),強(qiáng)化單片機(jī)應(yīng)用電路的設(shè)計(jì)與分析能力。提高我們?cè)趩纹瑱C(jī)應(yīng)用方面的實(shí)踐技能和科學(xué)作風(fēng);培育學(xué)生綜合運(yùn)用理論知識(shí)解決問題的能力,實(shí)現(xiàn)理論結(jié)合實(shí)際,學(xué)以致用的原則。2系統(tǒng)方案設(shè)計(jì)及確定本次課程設(shè)計(jì),要求用單片機(jī)及6位LED數(shù)碼管顯示時(shí)、分、秒,以24小 時(shí)計(jì)時(shí)方式運(yùn)行,能整點(diǎn)提醒(短蜂鳴,次數(shù)代表整點(diǎn)時(shí)間),使用按鍵開關(guān)可實(shí)現(xiàn)時(shí)、分調(diào)整,秒表(或鬧鐘)/時(shí)

4、鐘功能轉(zhuǎn)換,以及實(shí)現(xiàn)省電(關(guān)閉顯示)功能。1時(shí)鐘功能利用單片機(jī)片內(nèi)定時(shí)器(如TO)產(chǎn)生1s計(jì)時(shí),自行設(shè)定時(shí)鐘計(jì)數(shù)單元地址,包括秒單元、分單元、時(shí)單元,最大計(jì)數(shù)值為23時(shí)59分59秒。用6位LED數(shù)碼管顯示時(shí)、分、秒,以24小 時(shí)計(jì)時(shí)方式運(yùn)行;使用按鍵開關(guān)可實(shí)現(xiàn)時(shí)、分調(diào)整,可增加“熄滅符”用于時(shí)間調(diào)整時(shí)的閃爍功能;能整點(diǎn)提醒(短蜂鳴,次數(shù)代表整點(diǎn)時(shí)間);可通過按鍵使系統(tǒng)進(jìn)入省電狀態(tài)(數(shù)碼管不亮,時(shí)鐘不停)。2.秒表功能能通過按鍵實(shí)現(xiàn)秒表/時(shí)鐘功能之間的轉(zhuǎn)換;利用單片機(jī)內(nèi)部定時(shí)器(如T1)實(shí)現(xiàn)秒表的計(jì)時(shí),自行設(shè)定秒表計(jì)數(shù)單元地址,包括10ms單元、秒單元、分單元,通過6位LED數(shù)碼管顯示,最大計(jì)數(shù)

5、值為 99分59.99秒??赏ㄟ^按鍵實(shí)現(xiàn)秒表的暫停、清零、啟動(dòng)。3鬧鐘功能能通過按鍵實(shí)現(xiàn)鬧鐘/時(shí)鐘功能之間的轉(zhuǎn)換;可通過按鍵設(shè)定鬧鐘時(shí)間,在定時(shí)鬧鈴時(shí)精確到分,可通過6位LED數(shù)碼管顯示鬧鐘設(shè) 定時(shí)間??赏ㄟ^按鍵實(shí)現(xiàn)鬧鈴有效、無效,以及在設(shè)定鬧鐘后取消鬧時(shí)功能。在鬧鈴時(shí),可通過按鍵開關(guān)使蜂鳴停止。4系統(tǒng)設(shè)計(jì)方案框圖如下:圖2-1系統(tǒng)設(shè)計(jì)方案框圖3系統(tǒng)硬件設(shè)計(jì)3.1AT89S51最小系統(tǒng)設(shè)計(jì)單片機(jī)最小系統(tǒng)單片機(jī),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作 的系統(tǒng)對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:?jiǎn)纹瑱C(jī)、晶振電路、復(fù)位電路 下面給出一個(gè)51單片機(jī)的最小系統(tǒng)電路圖:C1汀日

6、T.XTAEZPUN用舊PnSAK PUjSAJK 陽丫廬忻FZJ3TXS桂NgWET附:H 卄ALEPZ.AIE口:FZJgfAUriinz purr®-::P3IWEXDP3.irr>®P1ZF3S1T1F1JSp/awrrcP1.TU1圖3-1 51單片機(jī)最小系統(tǒng)原理圖3.1.1時(shí)鐘電路硬件設(shè)計(jì)時(shí)鐘電路是計(jì)算機(jī)最核心的部分,它控制著計(jì)算機(jī)的工作。AT 89 S51單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,用于構(gòu)成振蕩器。反相放大器的輸入端為XTAL1,輸出端為XTAL2,分別是單片機(jī)的19腳和18腳。在XTAL1和XTAL2兩端跨接石英晶體及兩個(gè)電容就可以構(gòu)成穩(wěn)定 的自

7、激振蕩器。石英晶振起振后要能在 XTAL2線上輸出一個(gè)3V左右的正弦波,使片內(nèi)的OCS 電路按石英晶振相同頻率自激震蕩。通常,OCS的輸出時(shí)鐘頻率fosc為0.5MHZ16MHZ典型值為12MHZ電容器C1和C2通常取30pF左右,對(duì)震蕩頻率有微調(diào)作用。調(diào)節(jié)它們可以達(dá) 到微調(diào)震蕩周期fosc的目的。時(shí)鐘電路如下:圖3-2時(shí)鐘電路電路圖3.1.2復(fù)位電路硬件設(shè)計(jì)單片機(jī)的RST管腳為主機(jī)提供一個(gè)外部復(fù)位信號(hào)輸入端口。 復(fù)位信號(hào) 是咼電平有效,咼電平有效的持續(xù)時(shí)間應(yīng)為2個(gè)機(jī)器周期以上。單片 機(jī)的復(fù)位方式有上電自動(dòng)復(fù)位和手工復(fù)位兩種。圖 4-2所示是51系列單片機(jī)常用的上電復(fù)位電路,只要 Vcc上升時(shí)

8、間不超過1ms它們 都能很好地工作。復(fù)位以后,單片機(jī)內(nèi)各部件恢復(fù)到初始狀態(tài)。電阻電容器件的參考值:R1=200Q,R2=1KQ ,C3=22 F。RET按鍵可以 選擇專門的復(fù)位按鍵,也可以選擇輕觸開關(guān)。復(fù)位電路如下10UF圖3-3復(fù)位電路電路圖3.2鍵盤電路硬件設(shè)計(jì)單片機(jī)中常見的鍵盤有獨(dú)立式鍵盤和矩陣式鍵盤,獨(dú)立式鍵盤適 用于實(shí)現(xiàn)功能較少的場(chǎng)合、矩陣式鍵盤適用于功能復(fù)雜的場(chǎng)合。 本次 課程設(shè)計(jì),采用獨(dú)立式鍵盤即可。鍵盤電路如下:K1圖3-4鍵盤電路電路圖上拉電阻保證按鍵釋放時(shí),輸入檢測(cè)線上有穩(wěn)定的高電平。當(dāng)某 一按鍵按下時(shí),對(duì)應(yīng)的檢測(cè)線就變成了低電平,與其他按鍵相連的檢 測(cè)線仍為高電平,只需讀

9、入I/O輸入線的狀態(tài),判別哪一條I/O輸入 線為低電平,很容易識(shí)別哪個(gè)鍵被按下。鍵的閉合與否,輸出電壓上就是呈現(xiàn)高電平或低電平。高電平, 表示鍵斷開,低電平則表示鍵閉合,通過對(duì)電平的高低狀態(tài)的檢測(cè), 可確認(rèn)按鍵按下以及按鍵釋放與否。為了確保對(duì)一次按鍵動(dòng)作只確認(rèn) 一次按鍵有效,必須消除抖動(dòng)的影響,去抖有硬件去抖和軟件去抖, 本次設(shè)計(jì)采用軟件去抖。3.3顯示電路硬件設(shè)計(jì)本次課程設(shè)計(jì),采用LED數(shù)碼管作為顯示裝置。LED數(shù)碼管有共陰極、共陽極兩種結(jié)構(gòu),本次采用共陽極數(shù)碼管。 共陽極LED數(shù)碼管的發(fā)光二極管的陽極連接在一起, 公共陽極接正電 壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平時(shí),發(fā)光二極管被點(diǎn)亮,相應(yīng)

10、 的段被顯示。8段共陽極LED段碼如下:表3-1 8段共陽極LED段碼表顯示 字符012345678段碼COH :F9H:A4HB0H99H92H :82HF8H80H顯示 字符9ABCDEF全滅全亮段碼90H88H83HC6HA1H86H8EHFFH00HLED數(shù)碼管有靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。靜態(tài)顯示方式, 數(shù)碼管亮度高、軟件編程簡(jiǎn)單,但是需要占用大量的 I/O 口,一般在 多位顯示時(shí)不采用此種方法。動(dòng)態(tài)顯示方式,數(shù)碼管亮度稍低、軟件 編程復(fù)雜,但是占用的I/O 口少,在顯示多位數(shù)字的時(shí)候適合采用此 種方法。考慮到本次課程設(shè)計(jì)需要顯示六位數(shù)字,故采用動(dòng)態(tài)顯示方式。LED數(shù)碼管段選、位

11、選驅(qū)動(dòng)電路均采用 DM74LS24作為驅(qū)動(dòng)芯片。3.4蜂鳴器電路硬件設(shè)計(jì)蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣 泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè) 備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器的工作原理是,接通電源后,振蕩器產(chǎn)生的音頻信號(hào)電流通過電磁線圈,使電磁線圈產(chǎn)生磁場(chǎng)。振動(dòng)膜片在電磁線圈和磁鐵的 相互作用下,周期性地振動(dòng)發(fā)聲。本次課程設(shè)計(jì)中,由于單片機(jī)的 I/O 口驅(qū)動(dòng)能力不夠讓蜂鳴器發(fā)出聲音,所以我們通過三極管放大驅(qū) 動(dòng)電流,從而可以讓蜂鳴器發(fā)出聲音。蜂鳴器電路如下:圖3-5蜂鳴器電路電路圖4系統(tǒng)軟件設(shè)計(jì)4.1系統(tǒng)主程序設(shè)計(jì)程序中,采用按

12、鍵1作為主功能切換鍵,按鍵 2、按鍵3、按鍵4作為子功能控制鍵。在主程序中,開始即進(jìn)入定時(shí)器子程序,顯示當(dāng)前時(shí)間,并同時(shí)對(duì)按鍵1進(jìn)行掃描。如果按鍵1第一次被按下,則進(jìn)入調(diào)整時(shí)間子程序,并同時(shí)對(duì)按鍵2、按鍵3、按鍵4進(jìn)行掃描,此時(shí)按鍵2、按鍵3、按鍵4分別作為調(diào)整時(shí)、分、秒按鈕使用;如果按鍵1第二次被按下,則進(jìn)入秒表子程序,并同時(shí)對(duì)按鍵2、按鍵3、按鍵4進(jìn)行掃描,按鍵2、按鍵3、按鍵4分作為秒表啟動(dòng)、 暫停、停止并清理按鈕使用;如果按鍵 1第三次被按下,則進(jìn)入鬧 鐘子程序,并同時(shí)對(duì)按鍵 2、按鍵3、按鍵4進(jìn)行掃描,按鍵2、按鍵3、按鍵4分作為鬧 鐘的啟動(dòng)/關(guān)閉、調(diào)整時(shí)、調(diào)整分按鈕使用;如果按鍵

13、1第四次被按下,則進(jìn)入節(jié)能子程序, 此時(shí)將不對(duì)按鍵2、按鍵3、按鍵4分進(jìn)行掃描;如果按鍵 1第五次被按下,則重新回到定 時(shí)器子程序,如此循環(huán)。主程序流程圖4.2定時(shí)器設(shè)計(jì)在定時(shí)器子程序當(dāng)中,采用定時(shí)器TO產(chǎn)生定時(shí)中斷。定時(shí)器 TO工作于方式2,初值為TH0=0x9C TL0=0x9C,時(shí)鐘電路采用12MHZ晶振,所以每0.1ms產(chǎn)生一次中斷,再在中斷中對(duì)時(shí)間進(jìn)位進(jìn)行判斷處理,使之產(chǎn)生較為精準(zhǔn)的定時(shí)。4.3秒表設(shè)計(jì)在秒表子程序當(dāng)中,采用定時(shí)器T1產(chǎn)生定時(shí)中斷。定時(shí)器 T1同意工作于方式2,初值為TH0=0x9C TL0=0x9C,時(shí)鐘電路采用 12MHZ晶振,所以每 0.1ms產(chǎn)生一次中斷,再在

14、中 斷中對(duì)時(shí)間進(jìn)位進(jìn)行判斷處理,使之產(chǎn)生較為精準(zhǔn)的定時(shí)。4.4鬧鐘設(shè)計(jì)在鬧鐘子程序里,按鍵 2被按下奇數(shù)次時(shí),鬧鐘打開并在第一位數(shù)碼管上顯示標(biāo)志位; 按鍵2被按下偶數(shù)次時(shí),鬧鐘關(guān)閉并熄滅第一位數(shù)碼管上的標(biāo)志位。按下按鍵3,則定時(shí)時(shí)間的小時(shí)位加一;按下按鍵 4,則定時(shí)時(shí)間的分鐘位加一。4.5其他主要子程序設(shè)計(jì)在時(shí)鐘設(shè)置子程序中,按鍵 2被按下,則當(dāng)前時(shí)間的小時(shí)位加一;按鍵3被按下,則當(dāng)前時(shí)間的分鐘位加一;按鍵 4被按下,則當(dāng)前時(shí)間的秒位被清零。時(shí)鐘設(shè)置子程序當(dāng)進(jìn)入節(jié)能子程序時(shí),數(shù)碼管將全部被熄滅,此時(shí)按鍵 也不采取任何操作。2、按鍵3、按鍵4即使被按下節(jié)能子程序其他說明:當(dāng)時(shí)間的小時(shí)位進(jìn)一時(shí),蜂

15、鳴器將響起,響的“嘀”次數(shù)等于當(dāng)前時(shí)間小時(shí)位的值。當(dāng)當(dāng)前時(shí)間等于鬧鐘定時(shí)時(shí)間時(shí),蜂鳴器將不斷響起“嘀”聲,按下按鍵1后,“嘀”聲停止。5系統(tǒng)調(diào)試本次課程設(shè)計(jì)采用偉福仿真器進(jìn)行程序的調(diào)試,下面介紹偉福仿 真器的調(diào)試及使用。進(jìn)入WAV軟件后,第一步要進(jìn)行仿真器設(shè)置,在仿真器選項(xiàng)卡中, 仿真器為選擇“ E6000/S”,仿真頭選擇“ POD-H8X5” ,CPU選擇“ 89C51RX;在目標(biāo)文件選項(xiàng)卡中,將所有選項(xiàng)前均打鉤,;在通訊 設(shè)置選項(xiàng)卡中,將“使用偉福軟件模擬器”的“勾掉,然后選擇“ COM1 口,點(diǎn)擊“測(cè)試串行口”,測(cè)試成功后,就完成了所有的仿 真器設(shè)置。第二步,開始創(chuàng)建項(xiàng)目工程,在 C盤

16、根目錄下創(chuàng)建“ Project ”文件 夾,雙擊打開,再創(chuàng)建“ program . c”文件。注意,這里“ Project ” 文件夾為工程項(xiàng)目所存放的文件夾, 文件夾名必須是英文,漢字不能 用?!?program . c”文件為程序源文件,若是用匯編語言,則相應(yīng) 的改為“ program . asm ”文件。這里文件夾名和原文件名可以是任 意英文字符。點(diǎn)擊菜單欄“文件(F) ”“新建項(xiàng)目”找到剛才創(chuàng)建的源文件(以C語言源文件為例),點(diǎn)擊“打開”,然后鍵入工程項(xiàng)目 文件名字(以project為例,項(xiàng)目文件名可以任意),并點(diǎn)擊“保存” 保存。雙擊左側(cè)源文件“program . c”,此時(shí)即可開始

17、編寫程序了。(WAVE600集成開發(fā)軟件是基于C語言內(nèi)核的,僅支持“ /* */”注釋方式,不支持“ ”注釋方式)。最后介紹程序的編譯及執(zhí)行,點(diǎn)擊菜單欄“項(xiàng)目”“編譯”,無語法錯(cuò)誤,編譯通過。點(diǎn)擊菜單欄上“執(zhí)行”“全速執(zhí)行”,進(jìn)行硬件仿真調(diào)試。按停止按鈕則退出調(diào)試狀態(tài)。本次課程設(shè)計(jì),我主要是參考了郭天祥老師的一些例子程序,從 而逐步掌握了有關(guān)單片機(jī)數(shù)碼管動(dòng)態(tài)顯示、按鍵的掃描及去抖、時(shí)鐘 定時(shí)賦值等一些內(nèi)容。然后根據(jù)老師的原理圖,參照例子程序,利用 C語言進(jìn)行編程。程序調(diào)試過程中難免出現(xiàn)各種各樣的問題,通過請(qǐng) 教老師、網(wǎng)絡(luò)查詢、同學(xué)之間相互幫助,都逐一得到了解決。6總結(jié)為期三周的課程設(shè)計(jì)就這樣結(jié)

18、束了,通過這次課程設(shè)計(jì),我們不 僅對(duì)單片機(jī)的學(xué)習(xí)有了更多的認(rèn)識(shí)和理解, 而且又填補(bǔ)了很多以前的 知識(shí)漏洞。本次課程設(shè)計(jì),收獲最多的當(dāng)然是單片機(jī)方面,但是同時(shí) 我們又一次學(xué)習(xí)了 C語言、Protel制圖等,熟悉掌握了 WAVE600的 使用。課程設(shè)計(jì)是培養(yǎng)我們綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決 實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)我們實(shí)際工作能力的具體 訓(xùn)練和考察過程.回顧起此次課程設(shè)計(jì),至今我仍感慨頗多。通過這 次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,唯有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來, 從理論中 得出結(jié)論,才能真正提高我們自己的實(shí)際動(dòng)手能力和獨(dú)立思

19、考的能 力。在設(shè)計(jì)的過程中,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的 過程中發(fā)現(xiàn)了自己的很多的不足,自己知識(shí)的很多漏洞,對(duì)以前所學(xué) 過的知識(shí)理解得不夠深刻,掌握得不夠牢固,看到了自己基礎(chǔ)知識(shí)還 是不夠扎實(shí),實(shí)踐經(jīng)驗(yàn)還是比較缺乏,理論聯(lián)系實(shí)際的能力還待急需 提高。通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。 在這個(gè)過程中,我真切的感到了,我又知道了很多,同時(shí)也掌握了很 多以后在工作和生活中能真正用到的很多東西。 但是我不會(huì)因此而驕 傲,相反以后我將會(huì)更加虛心,因?yàn)槲抑肋@只是個(gè)簡(jiǎn)單的開始,以 后還有很多的路要走。在此,再次感謝帶領(lǐng)我們課程設(shè)計(jì)的王老師、杜老師、張老師和 蔡老師,正是有了

20、老師們的細(xì)心教導(dǎo)、耐心指導(dǎo)、苦心監(jiān)督,我們才 能夠順利完成各項(xiàng)學(xué)習(xí)任務(wù)、收獲真知識(shí)、鍛煉真本領(lǐng) 。參考文獻(xiàn)【1】單片機(jī)原理與接口技術(shù)M.胡漢才.清華大學(xué)出版社【2】MCS-51系列單片機(jī)原理及應(yīng)用M.王瑾、杜波等.中國電 力出版社【3】新概念51單片機(jī)C語言教程M.郭天祥.電子工業(yè)出版社 【4】跟我學(xué)用單片機(jī)M.肖洪兵.北京航空航天大學(xué)出版社【5】單片機(jī)實(shí)驗(yàn)與實(shí)踐教程M.夏繼強(qiáng).北京航空航天大學(xué)出 版社,【6】Protel DXP電路設(shè)計(jì)技術(shù)M.孫玉軍.冶金工業(yè)出版社【7】單片機(jī)應(yīng)用設(shè)計(jì)200例.下(第一版)M.張洪潤(rùn).北京航 空航天大學(xué)出版社【8】C語言程序設(shè)計(jì)M.楊忠寶、董曉明.北京大學(xué)出

21、版社附錄附錄一程序清單/*頭文件*/#in clude<reg52.h>#defi ne uint un sig ned int#defi ne uchar un sig ned char/*定義按鍵*/sbit key1=P1A0;sbit key2=P1Al;sbit key3=P1A2;sbit key4=P1A3;/*定義蜂鳴器*/sbit bell=P1A7;/*定義數(shù)碼管位控*/sbit LED仁 P2A5;sbit LED2=P2A4;sbit LED3=P2A3;sbit LED4=P2A2;sbit LED5=P2A1;sbit LED6=P2A0;/*定義變量*

22、/uchar miao,fe n, shi,shm,sec, min,n shi, nfen;uchar d1,d2,d3,d4,d5,d6,m1,m2,m3,m4,m5,m6, n1,n2,n3,n4;uint num,nu ml, nu m2, nu m3,ge,ss;/*共陰極段選碼(0-9)*/uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*延時(shí)函數(shù)*/void delay( uint x)uint i,j;for(i=80;i>0;i-) for(j=x;j>0;j-);/*時(shí)鐘顯示

23、函數(shù)*/void display。d仁shi/10;/*高低位分離*/d2=shi%10;d3=fe n/10;d4=fe n%10;d5=miao/10;d6=miao%10;LED1=1;/* 時(shí)高位 */PO=tabled1;delay(1);LED1=0;LED2=1;/* 時(shí)低位 */P0=tabled2;delay(1);LED2=0;LED2=1;/*時(shí)低位小數(shù)點(diǎn)顯示*/P0=0x80;delay(1);LED2=0;LED3=1;/* 分高位 */P0=tabled3;delay(1);LED3=0;LED4=1;/* 分低位 */PO=tabled4;delay(1);LED

24、4=0;LED4=1;/*分低位小數(shù)點(diǎn)顯示*/P0=0x80;delay(1);LED4=0;LED5=1;/* 秒高位 */P0=tabled5;delay(1);LED5=0;LED6=1;/* 秒低位 */P0=tabled6;delay(1);LED6=0;/*時(shí)鐘調(diào)整函數(shù)*/void tiaozhe ng() if(key2=0)/* 時(shí) +*/ delay(10);if(key2=0)while(!key2); shi+; delay(20);if(shi=24) shi=0; if(key3=0)/* 分 +*/delay(10);if(key3=0)while(!key3);f

25、en+;delay(20);if(fen=60)fen=0; if(key4=0)/* 秒清零 */delay(10);if(key4=0)miao=0;/*時(shí)鐘調(diào)整數(shù)碼管閃爍顯示函數(shù)*/void display1()d仁 shi/10;d2=shi%10;d3=fe n/10;d4=fe n%10;d5=miao/10;d6=miao%10;if(ss=1)LED1=1;/* 時(shí)高位 */P0=tabled1;delay(1);LED1=0;LED2=1;/* 時(shí)低位 */P0=tabled2;delay(1);LED2=0;LED2=1;/*時(shí)低位小數(shù)點(diǎn)顯示*/P0=0x80;delay(

26、1);LED2=0;LED3=1;/* 分高位 */P0=tabled3;delay(1);LED3=0;LED4=1;/* 分低位 */P0=tabled4;delay(1);LED4=0;LED4=1;/*分低位小數(shù)點(diǎn)顯示*/P0=0x80;delay(1);LED4=0;LED5=1;/* 秒高位 */P0=tabled5;delay(1);LED5=0;LED6=1;/* 秒低位 */P0=tabled6;delay(1);LED6=0;/*整點(diǎn)報(bào)時(shí)功能函數(shù)*/void baoshi()if(fen=59)&(miao=59)/*整點(diǎn)報(bào)時(shí)功能 */uchar bs;bs=shi

27、;bs+;while(bs>0)/*報(bào)時(shí)次數(shù)等于小時(shí)數(shù)*/bs-;bell=0;delay(IOO);bell=1;delay(IOO);/*秒表功能控制函數(shù)*/void miaobiao()if(key2=0)/*秒表開始計(jì)時(shí)*/delay(10);if(key2=0)while(!key2);TR1=1;if(key3=0)/*秒表暫停 */delay(10);if(key3=0)while(!key3);TR1=0;if(key4=0)/*秒表清零 */delay(10);if(key4=O)while(!key4);TR1=0;shm=0;sec=0;mi n=O;/*秒表顯示函

28、數(shù)*/void display2()m1= mi n/10;m2=mi n%10;m3=sec/10;m4=sec%10;m5=shm/10;m6=shm%10;LED1=1;/* 分高位 */P0=tablem1;delay(1);LED1=0;LED2=1;/* 分低位 */P0=tablem2;delay(1);LED2=0;LED2=1;/*分低位小數(shù)點(diǎn)顯示*/P0=0x80;delay(1);LED2=0;P0=tablem3;delay(1);LED3=0;LED4=1;/* 秒低位 */P0=tablem4;delay(1);LED4=0;LED4=1;/*秒低位小數(shù)點(diǎn)顯示*/P

29、0=0x80;delay(1);LED4=0;LED5=1;/*10ms 高位 */P0=tablem5;delay(1);LED5=0;LED6=1;/*10ms 低位 */P0=tablem6;delay(1);LED6=0;/*鬧鐘設(shè)置功能函數(shù)*/void n aozh on g()if(key2=0)/*設(shè)置鬧鐘的開關(guān)*/delay(10);if(key2=0)while(!key2);nu m2+;if(nu m2=3)num2=1;/*鬧鐘打開*/if(key3=0)/*定點(diǎn)小時(shí) +*/delay(10);if(key3=0)while(!key3);n shi+;if(n shi

30、=24)n shi=0;if(key4=0)/*定點(diǎn)分鐘 +*/delay(10);if(key4=0)while(!key4);nfen+;if(nfen=60)nfen=0;/*鬧鐘顯示函數(shù)*/void display3()n仁n shi/10;n2=nshi%10;n3=nfen/10;n4=nfen %10;if(nu m2=1)/* 第一位全顯示表示鬧鐘打開*/LED1=1;PO=Oxff;delay(1);LED1=0;if(nu m2=2)/* 第一位全滅表示鬧鐘關(guān)閉*/LED1=1;PO=OxOO;delay(1);LED1=0;LED3=1;/*小時(shí)高位*/PO=table

31、n1;delay(1);LED3=0;LED4=1;/*小時(shí)低位*/P0=table n2;delay(1);LED4=0;LED4=1;/*小時(shí)低位小數(shù)點(diǎn)顯示*/P0=0x80;delay(1);LED4=0;LED5=1;/*分鐘高位*/P0=table n3;delay(1);LED5=0;LED6=1;/*分鐘低位*/PO=table n4;delay(1);LED6=0;/*到點(diǎn)提醒功能函數(shù)*/void tixi ng()if(num2=1)&(nshi=shi)&(nfen=fen)/*鬧鐘 */while(num2=1)/* 按鍵key1控制蜂鳴器停止,并關(guān)閉鬧鐘*/bell=0;delay(100);bell=1;delay(100);if(key1=0)delay(10);if(key1=0)while(!key1);nu m2=2;/*鍵盤掃描實(shí)現(xiàn)功能切換函數(shù)*/void key()if(key1=0)/* 對(duì)key1進(jìn)行計(jì)數(shù),從而判斷并切換功能*/delay(10);if(key1=0)while(!key1);ge+;if(ge=6)ge=1;if(ge=1)/* 時(shí)間功能函數(shù)*/display。;/* 時(shí)間顯示函數(shù)*/if(ge=2)/* 時(shí)鐘調(diào)整函數(shù)*/tiaozheng();/*調(diào)整時(shí)鐘 */disp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論