免費(fèi)預(yù)覽已結(jié)束,剩余28頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
桂林電子科技大學(xué)專業(yè)工程設(shè)計(jì)論文摘 要現(xiàn)代社會(huì)電子鬧鐘已廣泛用于各種私人和公眾場(chǎng)合,成為我們生活、工作和學(xué)習(xí)中不可缺少的好幫手,因此研究實(shí)用性更強(qiáng)的電子鬧鐘具有十分重要的意義。本設(shè)計(jì)是基于單片機(jī)的電子鐘設(shè)計(jì),不僅具有時(shí)分秒的顯示功能,還具有雙鬧鈴和倒計(jì)時(shí)的功能,實(shí)用性非常強(qiáng)。電子鐘的計(jì)時(shí)部分采用AT89S52單片機(jī)內(nèi)部定時(shí)器實(shí)現(xiàn),而顯示功能是采用液晶模塊LCD1602來(lái)實(shí)現(xiàn),該電子鬧鐘可以讓使用者通過(guò)按鍵來(lái)輕松選擇的功能菜單和調(diào)節(jié)時(shí)間,具有非常良好地人機(jī)界面。關(guān)鍵詞:電子鬧鐘;倒計(jì)時(shí);AT89S52;液晶LCD1602;按鍵AbstractIn modern society,the electronic alarm clock has been widely used invarious occasions and become indispensable tolife.It is a good helper to our work and learning. So,there is very important significanceto researchmore practical electronic alarm clock.This design is based on single chip microcomputer,It has display function of hours,minutes and seconds,dual alarm and countdown.The internal timer of AT89S52 achieve the part of time.The liquid crystal LCD1602 achieve the part of display.The users can use the push-buttons to choice the menu of functions and adjust the time.The man-machine interface is very good.Key words: electronic alarm; countdown; AT89S52; liquid crystal LCD1602; button目 錄引言11 設(shè)計(jì)要求22 方案論證22.1 計(jì)時(shí)方案的選擇22.2 顯示方案的選擇22.3 按鍵功能方案設(shè)計(jì)32.4 指示燈和響鈴方案設(shè)計(jì)33 系統(tǒng)組成34 硬件設(shè)計(jì)44.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)44.2 顯示電路設(shè)計(jì)54.3 蜂鳴器電路設(shè)計(jì)54.4 按鍵電路設(shè)計(jì)65 軟件設(shè)計(jì)65.1 走時(shí)部分65.2 鬧鈴檢測(cè)部分75.3 鍵盤掃描部分75.4 液晶部分85.5 流程圖86 仿真設(shè)計(jì)117 系統(tǒng)調(diào)試及結(jié)果117.1 軟件調(diào)試117.2 硬件調(diào)試127.3 調(diào)試結(jié)果138 總結(jié)13謝 辭14參考文獻(xiàn)15附 錄16第 30 頁(yè) 共 33 頁(yè)桂林電子科技大學(xué)專業(yè)工程設(shè)計(jì)論文引言電子鬧鐘在科學(xué)技術(shù)高度發(fā)展的今天,千家萬(wàn)戶以及一些公共場(chǎng)合都少不了它,所以設(shè)計(jì)一個(gè)電子鬧鐘,為人們提供報(bào)時(shí)方便顯得非常有意義。本文給出了一種以51單片機(jī)芯片電子鬧鐘設(shè)計(jì)方法,給人們帶來(lái)更為方便的工作與生活。除此之外,此次設(shè)計(jì)也訓(xùn)練了自己對(duì)單片機(jī)最小系統(tǒng)及其外圍電路設(shè)計(jì)的能力和單片機(jī)C語(yǔ)言的編程能力,幫助自己鞏固和運(yùn)用所學(xué)課程,理論聯(lián)系實(shí)際,提高分析、解決問(wèn)題的能力。近年來(lái)集成電路技術(shù)的出現(xiàn)和應(yīng)用,推動(dòng)了人類文明的突飛猛進(jìn),基于集成電路技術(shù)的單片機(jī)產(chǎn)品更是方便了人們的生活和工作,目前以單片機(jī)技術(shù)的應(yīng)用為核心的產(chǎn)品種類非常豐富。我制作的這個(gè)以單片機(jī)技術(shù)為基礎(chǔ)的LCD可校時(shí)可定時(shí)電子鬧鐘,是一個(gè)實(shí)用性很強(qiáng)的單片機(jī)電子設(shè)計(jì)產(chǎn)品。設(shè)計(jì)時(shí)先進(jìn)行系統(tǒng)的整體規(guī)劃確定整個(gè)系統(tǒng)的功能,然后按照每個(gè)功能的具體要求,進(jìn)行各個(gè)軟件模塊的仿真設(shè)計(jì)并逐個(gè)調(diào)試,待全部通過(guò)后,才開(kāi)始實(shí)際電路板的制作,最后安裝元器件并下載程序,根據(jù)實(shí)際情況作進(jìn)一步的完善。電子鐘的計(jì)時(shí)部分采用AT89S52單片機(jī)內(nèi)部定時(shí)器實(shí)現(xiàn),而顯示功能是采用液晶模塊LCD1602來(lái)實(shí)現(xiàn)。51系列單片機(jī)的控制器運(yùn)算能力強(qiáng),處理速度快,可以精確計(jì)時(shí),很好地解決了實(shí)際生產(chǎn)生活中對(duì)計(jì)時(shí)高精確度的要求,LCD1602液晶顯示模塊有很強(qiáng)的顯示功能,能夠同時(shí)顯示16*02個(gè)即32個(gè)字符,另外使用者可以通過(guò)按鍵來(lái)輕松選擇功能和調(diào)節(jié)時(shí)間,因此具有非常良好地人機(jī)界面。1 設(shè)計(jì)要求1、利用單片機(jī)設(shè)計(jì)一個(gè)用LCD顯示時(shí)鐘的電子時(shí)鐘,帶鬧鐘功能。2、接通電源后,蜂鳴器連續(xù)發(fā)出2次響聲,同時(shí)工作指示燈閃動(dòng),表示開(kāi)始工作,液晶顯示“000000”(時(shí)分秒)。3、通過(guò)鍵盤設(shè)定兩個(gè)鬧鈴響的時(shí)間,即設(shè)置幾小時(shí)幾分鐘后鬧鈴響。4、可設(shè)置單獨(dú)顯示一個(gè)或循環(huán)顯示兩個(gè)鬧鐘的時(shí)、分,用2個(gè)LED燈分別指示當(dāng)前LED數(shù)碼管上顯示的是鬧鐘1、鬧鐘2的時(shí)間。5、可設(shè)置倒計(jì)時(shí)或正計(jì)時(shí)。6、硬件成本控制在40元內(nèi)。2 方案論證2.1 計(jì)時(shí)方案的選擇1、采用專門的時(shí)鐘芯片,例如美國(guó)DALLAS公司推出的DS1302實(shí)時(shí)時(shí)鐘芯片,它的工作電壓為2.5V-5.5V,采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù),優(yōu)點(diǎn)是高性能、低功耗,可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,但DS1302存在時(shí)鐘精度不高,易受環(huán)境影響,出現(xiàn)時(shí)鐘混亂等缺點(diǎn),并且會(huì)增加電路硬件復(fù)雜性。2、采用AT89S52單片機(jī)內(nèi)部定時(shí)器,51系列單片機(jī)內(nèi)部有兩個(gè)16位定時(shí)器/計(jì)數(shù)器,簡(jiǎn)稱定時(shí)器0和定時(shí)器1,簡(jiǎn)稱T0和T1,設(shè)置T0工作在模式0狀態(tài)下,每隔50ms中斷一下,中斷20次正好是1秒。用此方法的優(yōu)點(diǎn)是可節(jié)少硬件設(shè)計(jì),計(jì)時(shí)精度高,缺點(diǎn)是軟件編程略顯復(fù)雜。總結(jié):綜合兩種方案的優(yōu)缺點(diǎn),以及此次課設(shè)的要求,選擇第二種方案是用單片機(jī)內(nèi)部定時(shí)器。因?yàn)槭褂迷摲桨覆坏梢怨?jié)省硬件成本,還可以更鍛煉自己使用單片機(jī)內(nèi)部定時(shí)器和C語(yǔ)言編程的能力。2.2 顯示方案的選擇1、使用LED數(shù)碼管,由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃,公共電極。它能夠在低電壓、小電流的條件下驅(qū)動(dòng)發(fā)光,發(fā)光響應(yīng)時(shí)間極短,單色性好,亮度高,但是數(shù)碼管顯示內(nèi)容單一,引腳與單片機(jī)I/0連接復(fù)雜。2、使用液晶LCD1602,液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,LCD1602是字符型液晶顯示模塊,它是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,并且顯示質(zhì)量高,功耗小。缺點(diǎn)是較數(shù)碼管成本高??偨Y(jié):數(shù)碼管顯示內(nèi)容單一,液晶則比較豐富,并且數(shù)碼管消耗電力會(huì)比液晶更高,若選擇數(shù)碼管硬件布線會(huì)較復(fù)雜,影響美觀性,而選擇液晶也不會(huì)超過(guò)經(jīng)費(fèi)支持。綜合兩種方案的優(yōu)缺點(diǎn),選擇方案二液晶顯示。2.3 按鍵功能方案設(shè)計(jì)根據(jù)題目設(shè)計(jì)要求,定義6個(gè)12*12mm的按鍵來(lái)選擇系統(tǒng)功能菜單和調(diào)節(jié)時(shí)間,分別為K1、K2、K3、K4、K5、K6。各個(gè)按鍵的具體功能如表2.1:K1選擇調(diào)節(jié)時(shí)間菜單鍵及時(shí)增加鍵K4選擇倒計(jì)時(shí)菜單鍵K2選擇調(diào)節(jié)鬧鈴1菜單鍵及分增加鍵K5關(guān)閉鬧鈴響聲鍵K3選擇調(diào)節(jié)鬧鈴2菜單鍵及秒增加鍵K6確認(rèn)鍵表2.1 按鍵功能表2.4 指示燈和響鈴方案設(shè)計(jì)1、指示燈:綜合設(shè)計(jì)要求和自我考慮,需要的指示燈個(gè)數(shù)為4個(gè),分別為電源指示,程序運(yùn)行指示和兩個(gè)鬧鈴指示。為了加以區(qū)分可使用不同顏色的LED。2、響鈴選擇:采用經(jīng)濟(jì)適用的蜂鳴器,它是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、報(bào)警器、電子玩具、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件,而且驅(qū)動(dòng)電路簡(jiǎn)單,由單片機(jī)一個(gè)I/O口外接一個(gè)三極管即可。3 系統(tǒng)組成經(jīng)過(guò)以上的計(jì)時(shí)方案選擇和顯示方案選擇,確定本設(shè)計(jì)的電子鬧鐘的計(jì)時(shí)方案為單片機(jī)內(nèi)部定時(shí),顯示方案為液晶LCD1602。鬧鈴的響鈴來(lái)源選擇經(jīng)濟(jì)適用的蜂鳴器,并用按鍵來(lái)選擇功能菜單和調(diào)節(jié)時(shí)間,用4個(gè)不同顏色的發(fā)光二極管作為兩個(gè)鬧鈴指示燈,程序運(yùn)行指示燈和電源指示燈。因此系統(tǒng)組成框圖如圖3.1:LCD1602指示燈蜂鳴器AT89S52最小系統(tǒng)鍵盤 圖3.1 系統(tǒng)框圖4 硬件設(shè)計(jì)4.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)單片機(jī)最小系統(tǒng)的設(shè)計(jì)關(guān)鍵的就是時(shí)鐘電路和復(fù)位電路的設(shè)計(jì)。1、時(shí)鐘電路在這里使用單片機(jī)內(nèi)部振蕩電路,管腳XTAL1、XTAL2用來(lái)外接石英晶體和微調(diào)電容,如圖4.1所示。晶體可在1.212MHz之間選擇,電容可在630pF之間選擇。圖4.1 時(shí)鐘電路2、復(fù)位電路當(dāng)振蕩電路工作,并且在RST引腳加上一個(gè)至少保持兩個(gè)機(jī)器周期的高電平時(shí),就能完成一次復(fù)位。這里我使用按鈕復(fù)位方式,如圖4.2,利用RC微分電路產(chǎn)生正脈沖來(lái)達(dá)到復(fù)位目的,該正脈沖的持續(xù)時(shí)間大于兩個(gè)機(jī)器周期。圖4.2 復(fù)位電路4.2 顯示電路設(shè)計(jì)此設(shè)計(jì)的顯示電路采用的是液晶模塊LCD1602,其為5V電壓驅(qū)動(dòng),只有并行接口。其與單片機(jī)連接的硬件電路如圖4.3,其中的D0-D7分別連接到單片機(jī)的P0.0-P0.7,VSS接地,VDD接+5V電源,VEE經(jīng)10K電位器接地,用于調(diào)節(jié)背光,RS端為向液晶控制器寫數(shù)據(jù)/寫命令選擇端,接單片機(jī)P2.1口,RW為讀/寫選擇端,因?yàn)槲覀儾粡囊壕ёx取任何數(shù)據(jù),故接地,E端為使能信號(hào),接單片機(jī)P2.2口。圖4.3 液晶連接電路4.3 蜂鳴器電路設(shè)計(jì)電路設(shè)計(jì)如圖4.4,單片機(jī)的P2.0腳通過(guò)限流電阻R與三極管基極相接,集電極接蜂鳴器。當(dāng)P2.0引腳電平為0是,三極管導(dǎo)通,蜂鳴器工作,引腳電平為1時(shí),三極管截止,蜂鳴器不工作。因?yàn)閱纹瑱C(jī)口輸出低電平時(shí)的驅(qū)動(dòng)能力比高電平強(qiáng)的多,故三極管采用基極低電平導(dǎo)通PNP型的三極管。圖4.4 蜂鳴器驅(qū)動(dòng)電路4.4 按鍵電路設(shè)計(jì)此次按鍵電路設(shè)計(jì)可直接將按鍵一端接到單片機(jī)的I/O口,另一端直接接地。通過(guò)單片機(jī)檢測(cè)低電平判斷按鍵按下,K1-K6分別接至單片機(jī)的P3.0-P3.5。按鍵電路如圖4.5:圖4.5 按鍵電路5 軟件設(shè)計(jì)軟件設(shè)計(jì)主要包含顯示走時(shí)、鬧鈴檢測(cè)和鍵盤掃描三部分。5.1 走時(shí)部分走時(shí)部分主要有3個(gè)變量hour、min、sec和deda做為時(shí)鐘的時(shí)、分、秒和定時(shí)標(biāo)志位,通過(guò)單片機(jī)內(nèi)部定時(shí)器定時(shí)50ms,定時(shí)標(biāo)志位deda加1,此過(guò)程在中斷服務(wù)程序中完成,當(dāng)加滿20次時(shí),deda清零并且時(shí)鐘的秒sec加1,從而到達(dá)計(jì)時(shí)目的。代碼如下:void T0_srv(void) interrupt 1 TH0=0x3C; TL0=0x0B0; deda+;void conv() if(deda=20)sec+;deda=0; if(sec=60)min+;sec=0;ok=1; if(min=60)hour+;min=0; if(hour=24)hour=0;5.2 鬧鈴檢測(cè)部分鬧鈴檢測(cè)部分主要的變量有6個(gè),hh1、mm1和flag1做為鬧鈴1的時(shí)、分和開(kāi)關(guān)標(biāo)志位,hh2、mm2和flag2做為鬧鈴2的時(shí)、分和開(kāi)關(guān)標(biāo)志位,當(dāng)hh1=hour,mm1=min并且開(kāi)關(guān)標(biāo)志flag1=1時(shí),鬧鈴1便可以執(zhí)行響鈴程序,當(dāng)hh2=hour,mm2=min并且開(kāi)關(guān)標(biāo)志flag2=1時(shí),鬧鈴2便可以執(zhí)行響鈴程序,在這個(gè)子程序中為了不影響正常走時(shí)時(shí)間,故加上走時(shí)函數(shù)time( )。代碼如下:void alm_check1() while(alm_flag1=1)&(hour=hh1)&(min=mm1)&(ok=1) time(); alm_led1=0; beep=beep;delay(40); if(k5=0) alm_led1=1;beep=1;ok=0; 5.3 鍵盤掃描部分鍵盤掃面部分是該軟件設(shè)計(jì)中較復(fù)雜的部分,用單片機(jī)I/O口檢測(cè)低電平來(lái)判斷是否有鍵按下,根據(jù)按下的鍵值來(lái)執(zhí)行相應(yīng)的子程序。在此部分增加一個(gè)標(biāo)志變量ok做為子程序執(zhí)行完畢的標(biāo)志變量,在子程序執(zhí)行過(guò)程中當(dāng)K6鍵按下,則ok=1,返回主程序。 while(1) time(); alm_check1(); alm_check2(); if(k1=0) set_time(); if(k2=0) set_atime1(); if(k3=0) set_atime2(); if(k4=0) set_countdown(); 5.4 液晶部分液晶LCD1602做為本設(shè)計(jì)的顯示元件,其初始化程序如下:void TS1602_INIT(void)RS=0;write_com(0x38); /設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口write_com(0x0c); /設(shè)置開(kāi)顯示,不顯示光標(biāo)write_com(0x06); /寫一個(gè)字符后地址指針自動(dòng)加1write_com(0x01); /清屏5.5 流程圖1、主程序流程圖,如圖5.1:圖5.1 主程序流程圖2、中斷服務(wù)流程圖:如圖5.2:圖5.2 中斷服務(wù)流程圖2、時(shí)間流程圖,如圖5.3:圖5.3 時(shí)間流程圖3、鬧鈴檢測(cè)流程圖,如圖5.4:圖5.4 鬧鈴檢測(cè)流程圖4、鍵盤掃描流程圖,如圖5.5:圖5.5 鍵盤掃面流程圖6 仿真設(shè)計(jì)仿真設(shè)計(jì)是設(shè)計(jì)一個(gè)系統(tǒng)十分重要的環(huán)節(jié),在實(shí)際電路做好之前系統(tǒng)軟件調(diào)試最好選擇。此次仿真設(shè)計(jì)采用的是英國(guó)Labcenter electronics公司出版的EDA工具軟件Protues,在PROTUES繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTUES的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過(guò)程。仿真電路圖如下,圖6.1:圖6.1 仿真電路圖7 系統(tǒng)調(diào)試及結(jié)果7.1 軟件調(diào)試此時(shí)設(shè)計(jì)的軟件調(diào)試部分主要在仿真軟件Protues中完成。首先根據(jù)硬件設(shè)計(jì)在Protues中完成原理圖的設(shè)計(jì),確定使用單片機(jī)的哪些I/O口,然根據(jù)軟件設(shè)計(jì)中的流程圖編寫單片機(jī)C語(yǔ)言程序。結(jié)合題目要求模塊化地編寫程序,首先編寫走時(shí)程序,然后編寫鬧鈴1、鬧鈴2、的程序,最后完成倒計(jì)時(shí)設(shè)計(jì),在分模塊化編寫過(guò)程中,不斷地根據(jù)仿真現(xiàn)象調(diào)試程序來(lái)修復(fù)軟件編寫錯(cuò)誤。例如調(diào)試液晶的顯示問(wèn)題,寫指令write_com(0x80)將數(shù)據(jù)指針定位到第一行第一個(gè)字處,當(dāng)寫第二行時(shí)需要重新定位數(shù)據(jù)指針,寫指令write_com(0x80+0x40)。再者,在顯示倒計(jì)時(shí)時(shí)出現(xiàn)走時(shí)時(shí)間不準(zhǔn)確的問(wèn)題,故在倒計(jì)時(shí)變量處理的程序中要加上正計(jì)時(shí)走時(shí)時(shí)間變量處理,C_sec、C_min、C_hour是倒計(jì)時(shí)時(shí)間變量,sec、min、hour是走時(shí)時(shí)間變量。程序如下: void C_conv( ) if(deda=20)C_sec-;sec+;deda=0; if(C_sec0)C_sec=59; C_min-; if(sec=60)min+;sec=0; if(C_min0)C_hour-;C_min=59; if(min=60)hour+;min=0; if(hour=24)hour=0; if(C_hour0) C_sec=0;C_min=0;C_hour=0; for(i=0;i10;i+) routine_led=routine_led; beep=beep; delay(80); ok=1; 最后在顯示時(shí)間問(wèn)題上,要將數(shù)字顯示到液晶上,采取的方法是將數(shù)字轉(zhuǎn)化為字符串中的元素然后再送往液晶顯示。程序如下:其中,uchar code lcd_code =0123456789。void display_num(unsigned char num)uchar ge,shi;ge=num%10;shi=num/10;write_date(lcd_codeshi);write_date(lcd_codege); 7.2 硬件調(diào)試此次的硬件設(shè)計(jì)較為簡(jiǎn)單,主要的調(diào)試部分在于液晶對(duì)比度的調(diào)試,期間遇到的問(wèn)題是液晶的對(duì)比度調(diào)節(jié)引腳所接的10k電位器封裝不正確,導(dǎo)致VCC與GND短路,還好及時(shí)發(fā)現(xiàn)問(wèn)題,沒(méi)有損壞器件。7.3 調(diào)試結(jié)果經(jīng)過(guò)近兩周的軟件調(diào)試和硬件調(diào)試,對(duì)比設(shè)計(jì)要求,完成情況如下:1、電路板大小7cm*12cm;2、電路接通電源后,蜂鳴器連續(xù)發(fā)出2次響聲,同時(shí)工作指示燈閃動(dòng),液晶第一行顯示“Time:00:00:00”,代表時(shí)間,第二行顯示“00:00 F 00:00 F”,代表兩個(gè)鬧鈴,初始為關(guān)。3、可通過(guò)按鍵設(shè)定走時(shí)時(shí)間、兩個(gè)鬧鈴響的時(shí)間和倒計(jì)時(shí)時(shí)間。4、可顯示兩個(gè)鬧鐘的時(shí)、分,并用2個(gè)LED燈分別指示鬧鐘1、鬧鐘2的時(shí)間。8 總結(jié)1、通過(guò)本次課程設(shè)計(jì),實(shí)現(xiàn)了基于單片機(jī)的電子時(shí)鐘設(shè)計(jì),在這過(guò)程中,我學(xué)到了很多,加深了對(duì)單片內(nèi)部模塊的理解,進(jìn)一步學(xué)習(xí)了C語(yǔ)言的編寫規(guī)則。在設(shè)計(jì)的前期,我認(rèn)真地復(fù)習(xí)了51單片機(jī)的相關(guān)資料,掌握了單片機(jī)外部電路的合理設(shè)計(jì)以及各個(gè)引腳的功能。系統(tǒng)的進(jìn)行電子時(shí)鐘的需求分析,合理的設(shè)計(jì)出了電路原理框圖,根據(jù)原理框圖設(shè)計(jì)出電路原理圖,然后設(shè)計(jì)軟件流程圖,根據(jù)流程圖對(duì)單片機(jī)使用C語(yǔ)言編程。在此過(guò)程中,我學(xué)到了很多在書本上學(xué)不到的東西,尤其是在處理故障和解決問(wèn)題方面的考慮,受益頗多。2、本次設(shè)計(jì)的題目為基于單片機(jī)的電子時(shí)鐘設(shè)計(jì),通過(guò)兩周努力,可以順利實(shí)現(xiàn)的功能有:在液晶上顯示走時(shí)時(shí)間;兩個(gè)鬧鈴時(shí)間和是否開(kāi)啟以及倒計(jì)時(shí)時(shí)間;并且能通過(guò)按鍵實(shí)現(xiàn)設(shè)置時(shí)間的暫停、啟動(dòng)、調(diào)節(jié)等控制。3、在完成設(shè)計(jì)后,發(fā)現(xiàn)有還可以改進(jìn)的地方,例如增加一個(gè)省電模式,即在不需要看時(shí)間的時(shí)候,將液晶顯示關(guān)閉,這是設(shè)計(jì)前考慮不周的地方。最后,我深刻感受到要做好一個(gè)課程設(shè)計(jì),就必須做到:在設(shè)計(jì)程序之前,對(duì)所需資料的綜合整理,有效的挑選資料;要明確目標(biāo),整理思路;合理設(shè)計(jì)出系統(tǒng)所必須的流程圖,做好充分的心里準(zhǔn)備。這次設(shè)計(jì)是對(duì)我所學(xué)單片機(jī)一書的綜合考驗(yàn),使我能查漏補(bǔ)缺,復(fù)習(xí)課本知識(shí),加深理解記憶,所以每一步我都用心去做。謝 辭這三周來(lái)感謝指導(dǎo)老師對(duì)我的指導(dǎo)和建議,感謝同學(xué)的熱心幫助,也感謝學(xué)校為我們提供學(xué)習(xí)的環(huán)境和條件,在這三周的設(shè)計(jì)過(guò)程中老師和同學(xué)的幫助至關(guān)重要,在關(guān)鍵時(shí)刻老師的指點(diǎn)和同學(xué)之間的研究讓我少走了許多的彎路。衷心地感謝我的指導(dǎo)老師邱治金老師。本文從選題到完成,從理論上的探討到實(shí)際問(wèn)題的解決,無(wú)處不飽含著董老師的心血。邱老師的悉心指導(dǎo)和建議給了我極大的幫助和支持,使我受益匪淺。參考文獻(xiàn)1 沈紅衛(wèi).基于單片機(jī)的智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)M.北京:電子工業(yè)出版社,20052 王守中、聶元銘.51單片機(jī)開(kāi)發(fā)入門與典型實(shí)例(第2版)M.北京:人民郵電出版社,20093 白駒珩、雷曉平.單片計(jì)算機(jī)及其應(yīng)用(第2版)M.成都:電子科技大學(xué)出版社,2012附 錄1、元器件清單:專業(yè)工程設(shè)計(jì)元器件清單示例學(xué)號(hào): 1000820527 姓名: 周志通 空課題名稱: 基于單片機(jī)的簡(jiǎn)易鬧鐘設(shè)計(jì) 空序 號(hào)名 稱數(shù) 量單 價(jià)備 注1單片機(jī)89C52及鎖緊底座12lcd1602134腳按鍵(規(guī)格12*12mm)6帶按鍵帽44腳按鍵(規(guī)格6*6mm)15發(fā)光二極管(直徑3mm)3藍(lán)綠黃各一個(gè)6發(fā)光二極管(直徑5mm)1紅7直插電阻360歐48直插電阻1K19直插電阻100歐210直插電阻2.7k111精密電位器10k112晶振12MHz113電解電容10u114直插電容22pF2159012三極管116蜂鳴器117排阻1K*81181*40圓孔插座11排19雙排插針11排20單排插針11排21ISP下載口2*5插座12、電路原理圖:3、PCB圖:頂層底層4、程序代碼#include#define uchar unsigned char#define uint unsigned int#define TS1602_DATA P0 sbit routine_led=P10;sbit alm_led1=P11;sbit alm_led2=P12; sbit E=P22;sbit RS=P21;sbit beep=P20;sbit k1=P30;sbit k2=P31;sbit k3=P32;sbit k4=P33;sbit k5=P34;sbit k6=P35;uchar i,j;uchar hour=0,min=0,sec=0;uchar hh1=0,mm1=0,hh2=0,mm2=0;uchar alm_flag1=0,alm_flag2=0;uchar deda=0;char C_hour=0,C_min=0,C_sec=0;uchar ok=0;uchar string1=Time: : :;uchar string2= : F : F;uchar string3= : N : F;uchar string4= : F : N;uchar string5= : N : N;uchar string6=Countdown_time:;uchar string7= : :;uchar code lcd_code=0123456789;void delay(uint x) uint i,j;for(i=0;ix;i+) for(j=0;j=20)sec+;deda=0; if(sec=60)min+;sec=0;ok=1; if(min=60)hour+;min=0; if(hour=24)hour=0; /*/函數(shù)功能:顯示走時(shí)時(shí)間/*void disp_time() write_com(0x80+0x05); display_num(hour);delay(1); write_com(0x80+0x08); display_num(min);delay(1); write_com(0x80+0x0B); display_num(sec);delay(1); /*/函數(shù)功能:倒計(jì)時(shí)分秒轉(zhuǎn)換程序/*void C_conv() if(deda=20)C_sec-;sec+;deda=0; if(C_sec0)C_sec=59; C_min-; if(sec=60)min+;sec=0; if(C_min0)C_hour-;C_min=59; if(min=60)hour+;min=0; if(hour=24)hour=0; if(C_hour0) C_sec=0;C_min=0;C_hour=0; for(i=0;i10;i+) routine_led=routine_led; beep=beep; delay(80); ok=1; /*/函數(shù)功能:顯示倒計(jì)時(shí)時(shí)間/*void disp_Countdown_time() write_com(0x80+0x40); display_num(C_hour);delay(1); write_com(0x80+0x43); display_num(C_min);delay(1); write_com(0x80+0x46); display_num(C_sec);delay(1); /*/函數(shù)功能:調(diào)用走時(shí)時(shí)間程序函數(shù)/*void time() conv(); disp_time(); /*/函數(shù)功能:調(diào)用倒計(jì)時(shí)時(shí)間程序函數(shù)/*void Ctime() C_conv(); disp_Countdown_time(); /*/函數(shù)功能:顯示鬧鈴1時(shí)間/*void disp_alm1() write_com(0x80+0x40); display_num(hh1);delay(1); write_com(0x80+0x43); display_num(mm1);delay(1); /*/函數(shù)功能:顯示鬧鈴2時(shí)間/*void disp_alm2() write_com(0x80+0x48); display_num(hh2);delay(1); write_com(0x80+0x4B); display_num(mm2);delay(1); /*/函數(shù)功能:調(diào)整時(shí)間/*void set_time() delay(500); TR0=0; sec=0; ok=0; while(ok=0) if(k1=0)delay(100); if(k1=0)hour+; if(hour=24)hour=0; delay(5); disp_time(); if(k2=0)delay(100); if(k2=0)min+; if(min=60)min=0; delay(5); disp_time(); if(k3=0)delay(100); if(k3=0)sec+; if(sec=60)sec=0; delay(5); disp_time(); if(k6=0)ok=1; TR0=1; /*/函數(shù)功能:調(diào)整鬧鈴1/*void set_atime1() alm_led1=0; delay(500); ok=0; while(ok=0) if(k1=0)delay(100); if(k1=0)hh1+; if(hh1=24)hh1=0; delay(5); disp_alm1(); if(k2=0)delay(100); if(k2=0)mm1+; if(mm1=60)mm1=0; delay(5); disp_alm1(); if(k3=0) alm_flag1=1; if(alm_flag1=0)&(alm_flag2=0)display_string2(string2); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=0)display_string2(string3); disp_alm1();disp_alm2(); if(alm_flag1=0)&(alm_flag2=1)display_string2(string4); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=1)display_string2(string5); disp_alm1();disp_alm2(); if(k4=0) alm_flag1=0; if(alm_flag1=0)&(alm_flag2=0)display_string2(string2); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=0)display_string2(string3); disp_alm1();disp_alm2(); if(alm_flag1=0)&(alm_flag2=1)display_string2(string4); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=1)display_string2(string5); disp_alm1();disp_alm2(); if(k6=0) ok=1; time(); alm_led1=1; /*/函數(shù)功能:調(diào)整鬧鈴2/*void set_atime2() alm_led2=0; delay(1000); ok=0; while(ok=0) if(k1=0)delay(100); if(k1=0)hh2+; if(hh2=24)hh2=0; delay(5); disp_alm2(); if(k2=0)delay(100); if(k2=0)mm2+; if(mm2=60)mm2=0; delay(5); disp_alm2(); if(k3=0) alm_flag2=1; if(alm_flag1=0)&(alm_flag2=0)display_string2(string2); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=0)display_string2(string3); disp_alm1();disp_alm2(); if(alm_flag1=0)&(alm_flag2=1)display_string2(string4); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=1)display_string2(string5); disp_alm1();disp_alm2(); if(k4=0) alm_flag2=0; if(alm_flag1=0)&(alm_flag2=0)display_string2(string2); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=0)display_string2(string3); disp_alm1();disp_alm2(); if(alm_flag1=0)&(alm_flag2=1)display_string2(string4); disp_alm1();disp_alm2(); if(alm_flag1=1)&(alm_flag2=1)display_string2(string5); disp_alm1();disp_alm2(); if(k6=0) ok=1; time(); alm_led2=1; /*/函數(shù)功能:調(diào)整倒計(jì)時(shí)時(shí)間/*void set_countdown() write_com(0x01); display_string1(string6); displa
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高三歷史上學(xué)期期中考試卷題庫(kù)試題附答案完整版
- 論工程造價(jià)的合理確定
- 2025后備干部考試題庫(kù)及答案
- 通信工程師面試題及5G技術(shù)解析
- 媒體編輯面試問(wèn)題及答案參考
- 客戶服務(wù)崗筆試面試題庫(kù)含答案
- 出版社編輯崗位面試問(wèn)題及答案參考
- 高級(jí)廚師面試技巧菜品制作與餐飲管理問(wèn)題集
- 肝硬化失代償期的腹水管理與并發(fā)癥防控2026
- 2026屆江西省五市八校協(xié)作體語(yǔ)文高三第一學(xué)期期末檢測(cè)模擬試題含解析
- 松陵一中分班試卷及答案
- 《小米廣告宣傳冊(cè)》課件
- 勞務(wù)派遣公司工作方案
- 物理趣味題目試題及答案
- 華師大版數(shù)學(xué)七年級(jí)上冊(cè)《4.3 立體圖形的表面展開(kāi)圖》聽(tīng)評(píng)課記錄
- 2023-2024學(xué)年四川省成都市高二上學(xué)期期末調(diào)研考試地理試題(解析版)
- 陜西單招數(shù)學(xué)試題及答案
- 應(yīng)收賬款債權(quán)轉(zhuǎn)讓協(xié)議
- 四川省宜賓市長(zhǎng)寧縣2024-2025學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題(含答案)
- CNAS-CC01:2015 管理體系認(rèn)證機(jī)構(gòu)要求
- 可行性報(bào)告商業(yè)計(jì)劃書
評(píng)論
0/150
提交評(píng)論