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

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算機(jī)與信息學(xué)院題目:定時(shí)鬧鐘專業(yè):通信工程姓名:學(xué)號(hào):0862310307指導(dǎo)老師:完成時(shí)間:2010-12-08學(xué)校名稱:河海大學(xué)(常州校區(qū))摘 要本課程設(shè)計(jì)是定時(shí)鬧鐘的設(shè)計(jì),以at89c51單片機(jī)為核心,配備液晶顯示模塊、時(shí)鐘芯片等功能模塊。利用動(dòng)態(tài)數(shù)碼管作為顯示器,k25-k27作為輸入按鍵,蜂鳴器作為聲音輸出。課設(shè)的核心主要是硬件設(shè)計(jì)和軟件編程兩大方面。硬件電路設(shè)計(jì)主要包括中央處理單元電路、時(shí)鐘電路、人機(jī)接口電路、信號(hào)處理電路、執(zhí)行電路等。軟件編程用c語(yǔ)言來(lái)實(shí)現(xiàn),主要包括主程序、顯示字函數(shù)、鍵盤掃描程序、鬧鈴字程序、串口發(fā)送等軟件模塊?;緦?shí)現(xiàn)以下功能:正確顯示時(shí)分

2、;可以利用按鈕調(diào)整時(shí)間和設(shè)定鬧鐘時(shí)間;當(dāng)時(shí)間到達(dá)設(shè)定的時(shí)間時(shí),蜂鳴器發(fā)出滴、滴、滴的報(bào)警聲;通過串口在pc機(jī)上設(shè)定時(shí)間和鬧鐘。關(guān)鍵詞:?jiǎn)纹瑱C(jī) 定時(shí) 顯示目 錄1、概述.31.1 課程設(shè)計(jì)的目的和意義.31.2 課程設(shè)計(jì)的要求.32、系統(tǒng)設(shè)計(jì).42.1硬件設(shè)計(jì).42.2軟件設(shè)計(jì).63、實(shí)驗(yàn)結(jié)果與討論.74、結(jié)論.74.1課程設(shè)計(jì)的特點(diǎn)及貢獻(xiàn).74.2自我體會(huì).85、參考文獻(xiàn).96、附錄.9.硬件電路說(shuō)明.9.軟件程序清單及說(shuō)明.11.實(shí)物照片.20 1、概述1.1 課程設(shè)計(jì)的目的和意義 課程設(shè)計(jì)是在學(xué)完單片機(jī)原理及接口技術(shù)課程之后綜合利用所學(xué)單片機(jī)知識(shí)完成一個(gè)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)并在實(shí)驗(yàn)室實(shí)現(xiàn),從

3、而加深對(duì)單片機(jī) 軟硬知識(shí)的理解,獲得初步的應(yīng)用經(jīng)驗(yàn),為走出校門從事單片機(jī)應(yīng)用的相關(guān)工作打下基礎(chǔ)。1.2課程設(shè)計(jì)的要求 (1)、正確顯示時(shí)分;(2)、可以利用按鈕調(diào)整時(shí)間和設(shè)定鬧鐘時(shí)間;(3)、當(dāng)時(shí)間到達(dá)設(shè)定的時(shí)間時(shí),蜂鳴器發(fā)出滴、滴、滴的報(bào)警聲;(4)、通過串口在pc機(jī)上設(shè)定時(shí)間和鬧鐘。2、系統(tǒng)設(shè)計(jì)2.1硬件設(shè)計(jì)該定時(shí)鬧鐘是以單片機(jī)at89c51為核心來(lái)完成的,在硬件電路中采用p2口作為led數(shù)碼管的驅(qū)動(dòng)接口,這是由于p2口的驅(qū)動(dòng)能力強(qiáng),故只需外接上拉電阻便可以把led數(shù)碼管點(diǎn)亮。在led顯示時(shí),為了簡(jiǎn)化電路,降低成本,led數(shù)碼管的位選線分別由相應(yīng)的p2. 5p2. 7控制,而將其相應(yīng)的段選

4、線并聯(lián)在一起,由一個(gè)8位的i/o口控制,即p2口。在電路中還設(shè)有三個(gè)按鍵k1、k2和k3用來(lái)進(jìn)行定時(shí)、選時(shí)和調(diào)時(shí)的選擇,他們分別與單片機(jī)的p2.5、p2.6、p2.7口相連接。揚(yáng)聲器rd,定時(shí)時(shí)間到時(shí)會(huì)發(fā)出滴、滴、滴的聲音。xtal1口和xtal2口與12mhz晶振相連,并設(shè)有上電+按鈕復(fù)位電路。 時(shí)鐘電路設(shè)計(jì):mcs-51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,此放大器的輸入和輸出分別是引腳xtal1、xtal2,在xtal1和xtal2上外接時(shí)鐘源即可構(gòu)成時(shí)鐘電路。單片機(jī)的生產(chǎn)工藝不同,時(shí)鐘的產(chǎn)生方式也不同,有內(nèi)部和外部?jī)煞N時(shí)鐘產(chǎn)生方式,本次設(shè)計(jì)采用內(nèi)部方式的外部時(shí)鐘源接法。(a)單片

5、機(jī)外部振蕩方式接法 (b)單片機(jī)外部振蕩方式接法復(fù)位的方式及電路設(shè)計(jì):mcs-51單片機(jī)通常采用上電自動(dòng)復(fù)位、按鈕電平復(fù)位、外部脈沖復(fù)位、上電+按鈕電平復(fù)位、程序運(yùn)行監(jiān)視復(fù)位等方式。在實(shí)際的生產(chǎn)制造中多需復(fù)位,以保證在出現(xiàn)死機(jī)時(shí)可以恢復(fù)程序正常運(yùn)行,此次設(shè)計(jì)采用上電+按鈕電平復(fù)位,此種復(fù)位方式的好處是可以隨時(shí)使電路復(fù)位。單片機(jī)加上適當(dāng)?shù)耐鈬骷蛻?yīng)用程序,構(gòu)成的應(yīng)用系統(tǒng)稱為最小系統(tǒng)。將c51單片機(jī)接上時(shí)鐘電路和復(fù)位電路以及擴(kuò)展的簡(jiǎn)單i/o口即可構(gòu)成單片機(jī)的最小應(yīng)用系統(tǒng),它是單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)基礎(chǔ)。2.2軟件設(shè)計(jì)合理的軟件結(jié)構(gòu)是設(shè)計(jì)出一個(gè)性能優(yōu)良的單片機(jī)應(yīng)用系統(tǒng)的基礎(chǔ),根據(jù)系統(tǒng)的定義,可以把整

6、個(gè)工作分解為若干個(gè)相對(duì)獨(dú)立的操作,采用模塊化的設(shè)計(jì)方法,它具有便于設(shè)計(jì)和調(diào)試、容易完成、可供多個(gè)程序共享等優(yōu)點(diǎn)。該設(shè)計(jì)可以把整個(gè)源程序大致劃分為:主程序main()、延時(shí)函數(shù)delay()、初始化函數(shù)init()、顯示時(shí)間函數(shù)display()、顯示定時(shí)函數(shù)display_1()、鍵盤掃描程序key_scan()、加1子函數(shù)jia()、減1子函數(shù)jian()、鬧鈴子程序clock()、定時(shí)器0中斷服務(wù)程序time0()、串口發(fā)送sint()等。具體源程序詳見附錄。3、實(shí)驗(yàn)結(jié)果與討論一開始我們把最初的程序燒寫入實(shí)驗(yàn)箱后,通過按鍵調(diào)整時(shí)間,當(dāng)時(shí)間到達(dá)設(shè)定的時(shí)間時(shí),蜂鳴器發(fā)出滴的報(bào)警聲,且持續(xù)0.5

7、分鐘,這與課設(shè)要求蜂鳴器發(fā)出滴、滴、滴的報(bào)警聲不符,故程序設(shè)計(jì)時(shí)采用了“響-停-響-停-響”每次持續(xù)30秒的思想,從而達(dá)到設(shè)計(jì)要求。調(diào)節(jié)按鍵k1,顯示99,表示可以調(diào)節(jié)時(shí)間時(shí)分的數(shù)值,顯示88,表示可以調(diào)節(jié)鬧鐘時(shí)分的數(shù)值。調(diào)節(jié)按鍵k2可使數(shù)值加1,按鍵k3可使數(shù)值減1。課設(shè)提高部分要求通過串口在pc機(jī)上設(shè)定時(shí)間和鬧鐘,這部分對(duì)我們來(lái)說(shuō)有點(diǎn)難度,通過參考單片機(jī)實(shí)驗(yàn)三和課本9.4串口程序設(shè)計(jì),我們不斷地嘗試改進(jìn),最終實(shí)現(xiàn)了通過串口在pc機(jī)上設(shè)定時(shí)間和鬧鐘的提高功能,即在串口調(diào)試助手上發(fā)送16171618(十六進(jìn)制),則數(shù)碼管會(huì)顯示時(shí)間為22:23,定時(shí)時(shí)間為22:24。4、結(jié)論4.1課程設(shè)計(jì)的特點(diǎn)

8、及貢獻(xiàn)單片機(jī)是一門應(yīng)用性很強(qiáng)的學(xué)科,課程設(shè)計(jì)是培養(yǎng)我們綜合運(yùn)用所學(xué)知識(shí)發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)我們實(shí)際工作能力的具體訓(xùn)練和考察過程。我們?cè)诶碚搶W(xué)習(xí)的基礎(chǔ)之上,通過完成一小系統(tǒng)的設(shè)計(jì),不但能夠把課堂上學(xué)習(xí)的理論知識(shí)與實(shí)踐應(yīng)用結(jié)合起來(lái),而且能夠?qū)﹄娮与娐?、電子元件等方面的知識(shí)進(jìn)一步加深認(rèn)識(shí),同時(shí)在相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高,為今后能夠獨(dú)立進(jìn)行某些傳感器應(yīng)用系統(tǒng)的開發(fā)設(shè)計(jì)工作打下一定的基礎(chǔ)。4.2自我體會(huì)在做課程設(shè)計(jì)之前,我們已經(jīng)系統(tǒng)的學(xué)習(xí)過單片機(jī)這門課程,但是在剛拿到設(shè)計(jì)任務(wù)書時(shí)還是不知該從哪里下手,完成課設(shè)要求還是有一定難度。我們充分利

9、用兩周時(shí)間,經(jīng)過老師幫助、同學(xué)討論和網(wǎng)絡(luò)查詢,基本上實(shí)現(xiàn)了定時(shí)鬧鐘的功能。這兩周的大部分時(shí)間都在研究程序的理解與程序的調(diào)試運(yùn)行,在這個(gè)過程中加深了我對(duì)單片機(jī)中定時(shí)的理解,而且也更加了解到軟硬件配套的重要性。在設(shè)計(jì)的過程中不僅鞏固了以前所學(xué)過的知識(shí),加深了我對(duì)所學(xué)知識(shí)的理解,而且學(xué)到了很多在書本上所沒有的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合的重要性,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。此外,通過這次課程設(shè)計(jì)不僅使我鞏固了本課程所學(xué)的基本知識(shí),還使我具有了撰寫科研報(bào)告的初步訓(xùn)練能力,我相信這些能力在我以后的學(xué)習(xí)甚至

10、工作中都會(huì)起到不小的作用。5、參考文獻(xiàn)1 余發(fā)山.單片機(jī)原理及應(yīng)用技術(shù). 徐州:中國(guó)礦業(yè)大學(xué)出版社,20022康華光.數(shù)字電子技術(shù). 北京: 高等教育出版社,20033吳金戌.8051單片機(jī)實(shí)踐與應(yīng)用. 北京: 清華大學(xué)出版社,20034樓然苗.51系列單片機(jī)設(shè)計(jì)實(shí)例. 北京: 北京航空航天出版社,20045黃仁欣.單片機(jī)原理及應(yīng)用技術(shù). 北京: 清華大學(xué)出版社, 20056方華.mcs-51單片機(jī)原理及設(shè)計(jì). 重慶: 重慶大學(xué)出版社, 20057田希暉、薛亮儒.c51單片機(jī)技術(shù)教程.北京:人民郵電出版社,2007 6、附錄.硬件電路說(shuō)明1、單片機(jī)at89c51:一種低功耗、高性能的cmos型

11、8位單片機(jī)。片內(nèi)帶有4kb的flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, at89c51的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128b 的ram、32條i/o口線、2個(gè)16位定時(shí)計(jì)數(shù)器、5個(gè)中斷源、一個(gè)全雙工串行口等。2、led數(shù)碼管為共陰極:3、p2口內(nèi)部結(jié)構(gòu)圖:.軟件程序清單及說(shuō)明1、源程序:#include /頭文件#include#define uchar unsigned char/宏定義#define uint unsigned int#define fmq rdsbit key1=p25; /位聲明sbit key2=p26;sbit key3=p27;ucha

12、r code table=0x3f,0x06,0x5b,/數(shù)碼管顯示的數(shù)值0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0xbf,0x86,0xdb,/帶小數(shù)點(diǎn)的數(shù)值0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;void jia(); /函數(shù)聲明void jian();uchar table_16; /定義數(shù)組,數(shù)組內(nèi)含有6個(gè)數(shù)值uchar table_26;uchar shi=23,fen=59,miao=50; /顯示初始值uchar shi1,fen1,miao1,shi2,fen2,miao2;/定義全局變量uchar flag

13、,flag1,flag2,cnt,count;/定義全局變量void delay(uchar i) /延時(shí)函數(shù),用于動(dòng)態(tài)掃描數(shù)碼管 uchar x,y; for(x=i;x0;x-) for(y=110;y0;y-);void init() /初始化函數(shù) tmod=0x21; /工作方式1 th0=(65536-50000)/256; /定時(shí)時(shí)間為:50ms tl0=(65536-50000)%256; et0=1; /打開定時(shí)器 ea=1; /開總中斷 tr0=1; /啟動(dòng)定時(shí)器 tl1=0xfd; th1=0xfd; scon=0x50; pcon=0x00; tr1=1; es=1;vo

14、id display() /顯示子函數(shù),用于顯示時(shí)間數(shù)值 uchar i,j; table_10=miao%10; /分離秒的各位與十位 table_11=miao/10; table_12=fen%10+11; /分離分的各位與十位 table_13=fen/10; table_14=shi%10+11; /分離時(shí)的各位與十位 table_15=shi/10; j=0x7f; /從秒到時(shí)的掃描 for(i=2;i6;i+) p2=j; p0=tabletable_1i;/顯示數(shù)值 delay(10); j=_cror_(j,1);/循環(huán)右移 void display_1() /顯示子函數(shù),用

15、于顯示定時(shí)時(shí)間 uchar i,j; table_20=miao2%10; /以下含義同上 table_21=miao2/10; table_22=fen2%10+11; table_23=fen2/10; table_24=shi2%10+11; table_25=shi2/10; j=0x7f; for(i=2;i=20) /判斷是否到一秒 flag=0; /到了,則標(biāo)志位清零 miao+; /秒加1 if(miao=60) /判斷秒是否到60s miao=0;/到了,則清零 fen+; /分加1 if(fen=59) /以下含義同上 fen=0; shi+; if(shi23) shi=

16、0; void key_scan() /鍵盤掃描子函數(shù) uchar i; /定義局部變量 if(key1=0)/判斷key2是否按下 while(!key1) /防止掉顯 if(cnt=0|cnt=1|cnt=2|cnt=3|cnt=6) display(); if(cnt=4|cnt=5) display_1(); cnt+; /記下按鍵key1按下的次數(shù) if(cnt=1) /第一次按下,停止計(jì)數(shù) tr0=0; if(cnt=2) / 第二次按下 fen1=fen; /保存分的數(shù)值 fen=99; /顯示99,表示可以調(diào)節(jié)分的數(shù)值了 (99只是一個(gè)標(biāo)志) for(i=0;i100;i+)

17、display(); /顯示99 fen=fen1; /恢復(fù)前一刻分的數(shù)值 if(cnt=3) shi1=shi; shi=99; for(i=0;i100;i+) display(); shi=shi1; if(cnt=4) fen1=fen2; fen2=88; for(i=0;i100;i+) display_1(); fen2=fen1; if(cnt=5) shi1=shi2; shi2=88; for(i=0;i59) /判斷分是否大于59,是,則秒清零 fen=0; if(cnt=3) shi+; if(shi23) shi=0; if(cnt=4) fen2+; if(fen2

18、59) fen2=0; if(cnt=5) shi2+; if(shi223) shi2=0; void jian() /減1子函數(shù) if(cnt=2) /判斷key1按下的次數(shù)是否為2,是則秒減1 fen-; if(fen=255) /判斷秒是否減到-1,是,則秒清零(255是-1的補(bǔ)碼) fen=59; if(cnt=3) shi-; if(shi=255) shi=23; if(cnt=4) fen2-; if(fen2=255) fen2=59; if(cnt=5) shi2-; if(shi2=255) shi2=23; void clock() /鬧鈴子函數(shù) if(miao2=mi

19、ao) /顯判斷秒的數(shù)值是否相等 if(fen2=fen) /是,在判斷分是否相等 if(shi2=shi) /是,再判斷時(shí)是否相等 flag1=0; /是,則標(biāo)志位,flag1清零 while(!(flag1=10) /判斷flag1是否到20 fmq=0; /沒有,則,繼續(xù)驅(qū)動(dòng)蜂鳴器響,時(shí)間約為:1s shijian(); /調(diào)用時(shí)間子函數(shù) display(); /調(diào)用顯示子函數(shù) fmq=1;/關(guān)閉蜂鳴器flag1=0;while(!(flag1=10) /判斷flag1是否到20 fmq=1; /繼續(xù)驅(qū)動(dòng)蜂鳴器停,時(shí)間約為:1s shijian(); /調(diào)用時(shí)間子函數(shù) display(); /調(diào)用顯示子函數(shù) fmq=1;flag1=0;while(!(flag1=10) fmq=0; shijian(); dis

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論