第七組電子語(yǔ)音萬年歷_第1頁(yè)
第七組電子語(yǔ)音萬年歷_第2頁(yè)
第七組電子語(yǔ)音萬年歷_第3頁(yè)
第七組電子語(yǔ)音萬年歷_第4頁(yè)
第七組電子語(yǔ)音萬年歷_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、浙江工業(yè)職業(yè)技術(shù)學(xué)院電氣工程分院設(shè)計(jì)報(bào)告浙江工業(yè)職業(yè)技術(shù)學(xué)院課程設(shè)計(jì)報(bào)告 電子語(yǔ)音萬年歷組 名 第七組 成 員 張立杭 王晨宇 童偉東 分 院 電氣電子工程分院 專 業(yè) 電子信息工程技術(shù)程技術(shù) 班 級(jí) 12電子電氣工程分院2班 指導(dǎo)教師 金永敏 完成日期 2014年 6月9日 電子語(yǔ)音萬年歷 摘 要 隨著社會(huì)、科技的發(fā)展,人類得知時(shí)間,從觀太陽(yáng)、擺鐘到現(xiàn)在電子鐘,不斷研究、創(chuàng)新。為了在觀測(cè)時(shí)間的同時(shí),能夠了解其它與人類關(guān)系相關(guān)的信息,比如溫度、星期、日期等,電子萬年歷誕生了,它集時(shí)間、日期、星期和溫度功能與一身,具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),

2、具有廣闊的市場(chǎng)前景,該電子萬年歷主要采用AT89C51單片機(jī)作為主控核心,由DS1302時(shí)鐘芯片提供時(shí)鐘、DS18B20溫度傳感芯片提供溫度數(shù)據(jù)、LCD液晶顯示屏顯示。AT89C51單片機(jī)是由Atmel公司推出的,功耗小,電壓可選用46V電壓供電;DS1302時(shí)鐘芯片是美國(guó)DALLAS公司推出的具有涓細(xì)電流充電功能的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長(zhǎng),誤差??;DS18B20溫度芯片是一種測(cè)量精度高的數(shù)字溫度傳感器,具有只需要一個(gè)數(shù)據(jù)電纜傳輸數(shù)據(jù),電路連接簡(jiǎn)單的特點(diǎn);數(shù)字顯示是采用的LCD液晶顯示屏來顯示,可以

3、同時(shí)顯示年、月、日、星期、時(shí)、分、秒和溫度等信息。此外,該電子萬年歷還具有時(shí)間校準(zhǔn)等功能。 關(guān)鍵詞 時(shí)鐘芯片DS1302;LCD液晶顯示;單片機(jī)AT89C51;時(shí)鐘電路;數(shù)字顯示;DS18B20溫度傳感芯片;第一章 緒論 隨著電子技術(shù)的高速發(fā)展,對(duì)電子方面人才的要求越來越高,不僅要求其具備相關(guān)的專業(yè)理論知識(shí),還要求其具有較強(qiáng)的設(shè)計(jì)、制作等實(shí)踐動(dòng)手能力.此次學(xué)校舉行的電子設(shè)計(jì)無疑是對(duì)從事電子相關(guān)專業(yè)的人的一次很好的鍛煉和考驗(yàn),是培養(yǎng)信息人才的一次良好的機(jī)會(huì),為其提供了一個(gè)理論知識(shí)與實(shí)踐相結(jié)合的平臺(tái)。  通過本次課程設(shè)計(jì),引導(dǎo)學(xué)生結(jié)合所學(xué)的電路理論和程序設(shè)計(jì)的知識(shí),思考設(shè)計(jì)方案

4、,以小組合作方式,分工完成各個(gè)部分,從而掌握相關(guān)的硬件結(jié)合軟件顯示電路的設(shè)計(jì)和調(diào)試技術(shù),一方面提高了學(xué)生的實(shí)踐動(dòng)手和協(xié)作能力,另一方面培養(yǎng)了學(xué)生綜合運(yùn)用所學(xué)理論知識(shí)進(jìn)行工程設(shè)計(jì)的能力本設(shè)計(jì)為軟件,硬件相結(jié)合的一組設(shè)計(jì)。在軟件設(shè)計(jì)過程中,應(yīng)對(duì)硬件部分有相關(guān)了解,這樣有助于對(duì)設(shè)計(jì)題目的更深了解,有助于軟件設(shè)計(jì)?;镜囊私庖恍┲饕骷幕竟δ芎妥饔谩?#160;除了采用集成化的時(shí)鐘芯片外,還有采用MCU的方案,利用AT89系列單片微機(jī)制成萬年歷電路,采用軟件和硬件結(jié)合的方法,控制LCD液晶屏輸出,分別用來顯示年、月、日、使、分、秒、星期、溫度,其最大特點(diǎn)是:硬件電路簡(jiǎn)單,方案方便易于實(shí)現(xiàn),軟件設(shè)

5、計(jì)獨(dú)特,可靠。AT89C51是由ATMEL公司推出的一種小型單片機(jī)。95年出現(xiàn)在中國(guó)市場(chǎng)。其主要特點(diǎn)為采用Flash存儲(chǔ)器技術(shù),降低了制造成本,其軟件、硬件與MCS-51完全兼容,可以很快被中國(guó)廣大用戶接受。 本文介紹了基于AT89C51單片機(jī)設(shè)計(jì)的電子萬年歷。 首先我們?cè)诰w論中簡(jiǎn)單介紹了單片機(jī)的發(fā)展與其在中低端領(lǐng)域中的優(yōu)勢(shì)以及課題的開發(fā)意義;接著介紹了AT89C51單片機(jī)的硬件結(jié)構(gòu)和本課程設(shè)計(jì)所要外擴(kuò)的LCD顯示的方法,并在此基礎(chǔ)上實(shí)現(xiàn)了萬年歷基本電路的設(shè)計(jì);然后使用C語(yǔ)言進(jìn)行萬年歷程序的設(shè)計(jì),程序采用模塊化結(jié)構(gòu),使得邏輯關(guān)系簡(jiǎn)單明了。一、課程設(shè)計(jì)目的和任務(wù)1.通過本項(xiàng)課

6、程設(shè)計(jì),可以培養(yǎng)獨(dú)立思考、 綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,能更好的鞏固高級(jí)程序語(yǔ)言編程的過程,掌握軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手編程能力,闖過理論與實(shí)踐相結(jié)合的難關(guān),更加了解c語(yǔ)言的好處和其可用性,同時(shí)增加了同學(xué)之間的團(tuán)隊(duì)合作精神,更加也體會(huì)到以后在工作中團(tuán)隊(duì)合作的重要性和必要性。 2.通過高級(jí)語(yǔ)言課程設(shè)計(jì),使學(xué)生了解高級(jí)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu),掌握基本的程序設(shè)計(jì)過程和技巧,掌握基本的分析問題和利用計(jì)算機(jī)求解問題的能力,具備初步的高級(jí)語(yǔ)言程序設(shè)計(jì)能力。為后續(xù)各門計(jì)算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)基礎(chǔ)。3為了使同學(xué)們掌握結(jié)構(gòu)化數(shù)據(jù)流分析技術(shù),用C語(yǔ)言設(shè)計(jì)一個(gè)年歷系統(tǒng),滿足以下功能要求 :(1)

7、輸入任一年將顯示出該年的所有月份日期,對(duì)應(yīng)的星期(2) 注意閏年情況其顯示格式要求如下:(1)月份:中文英文都可以,(2)下一行顯示星期,從周日到周六,中英文都可以(3)下一行開始顯示日期從1號(hào)開始,并按其是周幾實(shí)際情況與上面的星期數(shù)垂直對(duì)齊當(dāng)輸入2004顯示如下:Input the year:2004The calendar of the year 2004. Januray 1 February 2 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 1

8、0 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 = = March 3 April 4 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 16 17 21 22 23

9、24 25 26 27 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 29 30 = =二、分析與設(shè)計(jì)1.程序的基本功能:    輸入一個(gè)整數(shù)year,顯示出該年的所有月份日期,對(duì)應(yīng)的星期。2.系統(tǒng)總框圖: 將每月的日期填入日期表車程序開始始 定義函數(shù)f(),g(),n(),w()wd判斷該月日歷有幾行顯示定義兩個(gè)字符型數(shù)組date1267, day_tbl 12利用for循環(huán)輸出月份和title定義整型變year, w,leap,i,j,k,wd,dayfor循環(huán)輸出該月日歷輸入年份year顯示日歷 leap=year

10、%4=0&&year%100|year%400=0結(jié)束程序 利用for循環(huán)將日期表置03.定義的函數(shù)及說明:(1) f(int year,int month) 如果月份值小于3,則返回值為year-1;否則返回值為year(2) g(int month)如果月份值小于3,則返回值為month+13;否則返回值為month+1例如:2004年1月1日 經(jīng)過這兩個(gè)函數(shù)的變形成 2003年14月1日,便于計(jì)算(3)n(int year,int month,int day)計(jì)算某一個(gè)日期的n值,便于計(jì)算某一日期是周幾(4)w(int year,int month,int day) 以1

11、700年3月2日的n值為模版,計(jì)算出要求日期是周幾(5)main() 主函數(shù)4.算法設(shè)計(jì):(1)總體而言,根據(jù)要求來做一個(gè)萬年歷的C程序,要求輸入想要知道日歷的年份,然后可按ENTER鍵顯示日歷。(2)判斷是不是閏年:(year%4=0&&year%100|year%400=0)滿足條件是閏年,把一年中所有月份的天數(shù)放入二維數(shù)組(31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31)。(3)用 f() g() n() w()四個(gè)函數(shù)計(jì)算周幾(4)用for循環(huán)將每一個(gè)日期置0 ,再將每個(gè)月的

12、日期填入日期表(5)按照題目所要求的格式輸出三、系統(tǒng)實(shí)施1.源程序代碼#include <stdio.h> #include <conio.h> long int f(int year,int month) if(month<3) return year-1; else return year; long int g(int month) if(month<3) return month+13; else return month+1; long int n(int year,int month,int day) return 1461L*f(year,mo

13、nth)/4+153L*g(month)/5+day; int w(int year,int month,int day) return(int)(n(year,month,day)%7-621049L%7+7)%7); int date1267; int day_tbl 12=31,28,31,30,31,30,31,31,30,31,30,31, 31,29,31,30,31,30,31,31,30,31,30,31; main() int sw,leap,i,j,k,wd,day; int year;char title="Sun Mon Tue Wed Thu Fri Sat

14、 "const char *month="*","January","February","March","April","May","June","July","August","September","October","November","December"printf("Input the year: &qu

15、ot;);scanf("%d%*c",&year);sw=w(year,1,1); leap=year%4=0&&year%100|year%400=0; for(i=0;i<12;i+) for(j=0;j<6;j+) for(k=0;k<7;k+) dateijk=0;for(i=0;i<12;i+)for(wd=0,day=1;day<=day_tblleapi;day+) dateiwdsw=day; sw=+sw%7;if(sw=0) wd+; printf("nThe calendar of the

16、 year %dnn",year);for(i=0;i<12;i+=2)for(wd=0,k=0;k<7;k+)wd+=datei5k+datei+15k;wd=wd?6:5; printf(" %-9s %dttt%-9s %dn",monthi+1,i+1,monthi+2,i+2);printf(" %st%sn",title,title);for(j=0;j<wd;j+)printf(" ");for(k=0;k<7;k+) if(dateijk) printf("%-4d"

17、;,dateijk);else printf("%4s","");printf("%3s","");for(k=0;k<7;k+) if(datei+1jk)printf("%-4d",datei+1jk);else printf("%4s","");printf("%4sn",""); printf("=t=n");puts("n");getch(); 2.程序運(yùn)行說明

18、(包括結(jié)果說明)運(yùn)行程序:輸入 2004 運(yùn)行結(jié)果:運(yùn)行說明:運(yùn)行程序后,先出現(xiàn)一黑色背景,上面有一句話:"Input the year:" 輸入一個(gè)整數(shù)值作為要查詢的年份值,顯示出該年的所有月份日期,對(duì)應(yīng)的星期。結(jié)果說明:第一行“The calendar of the year 2004”表明這是2004年的日歷。之后的每?jī)蓚€(gè)月份并排顯示,首行是月份,第二行是星期,日期按其是周幾實(shí)際情況與上面的星期數(shù)垂直對(duì)齊。(1) 電路工作原理;本電路包括基本的時(shí)鐘電路模塊、液晶顯示模塊、語(yǔ)音報(bào)時(shí)模塊、溫度傳感器模塊。各功能模塊通過控制芯片連接起來,完成本設(shè)計(jì)要求。電路實(shí)現(xiàn)的基本功能是

19、電子萬年歷。通過液晶LCD12864,可顯示年月日、時(shí)分秒、星期等基本信息。增強(qiáng)功能是具備時(shí)鐘語(yǔ)音報(bào)時(shí)功能。即每到整點(diǎn),系統(tǒng)會(huì)自動(dòng)語(yǔ)音報(bào)時(shí),報(bào)時(shí)信息包括日期及時(shí)間。同時(shí)具備顯示環(huán)境溫度的功能。 具體工作流程如以下程序流程圖:主程序: Lcd顯示按鍵掃描每三秒讀取溫度一次啟用ds1302。初始化lcd以及定時(shí)器Ds18b20子程序:提取百、十、個(gè)、小數(shù)點(diǎn)后一位 讀到的數(shù)轉(zhuǎn)換為整型向ds1820寫數(shù)據(jù),跳過rom,讀數(shù)據(jù)復(fù)位初始化Ds1302子程序:Dnum=?Dnum=?送到12684顯示1:小時(shí)減一 2:分減一 3:秒減一4:年減一 5:月減一 6:日減一 7:星期減一計(jì)算要顯示的數(shù)據(jù)1:小時(shí)

20、加一 2:分加一 3:秒加一4:年加一 5:月加一 6:日加一 7:星期加一 Flag=1?初始化設(shè)定lcd光標(biāo)顯示、關(guān)閉,判斷是否忙的函數(shù)完成顯示12864 LCD子程序:初始化lcd設(shè)定,調(diào)用來自其他子程序的數(shù)值第四行顯示狀態(tài)信息第三行顯示溫度第二行顯示時(shí)間及星期第一行顯示日期及平閏年定時(shí)器定時(shí)設(shè)定子程序:設(shè)定每3s調(diào)整一次的時(shí)間循環(huán),以共調(diào)用設(shè)定每0.5s調(diào)整一次的時(shí)間循環(huán),以共調(diào)用設(shè)定工作在定時(shí)器0工作方式1TMOD = 0x01 ; 開總中斷在年份顯示中設(shè)置了閏年判斷語(yǔ)句:/判斷閏年,leap=1表示閏年leap=(nian%4=0 && nian%100!=0)|(

21、nian%400=0)?1:0;/整點(diǎn)自動(dòng)報(bào)時(shí)if (fen1=0&&fen2=0&&miao1=0&&miao2=0)&&kaiguan=1)(2) 元件清單。序號(hào)型號(hào)個(gè)數(shù)序號(hào)型號(hào)個(gè)數(shù)OTP語(yǔ)音芯片NY3P035AP81溫度傳感器Ds18201晶振12Mhz1電阻10k5時(shí)鐘晶振32.768k1開關(guān)5陶瓷電容30pf10422時(shí)鐘芯片Ds13021排阻10k1液晶顯示屏128641電源插座5.4mm1排針若干自鎖開關(guān)1單片機(jī)芯片Stc89c5211) 電路和程序調(diào)試過程與結(jié)果:本設(shè)計(jì)完成了設(shè)計(jì)任務(wù)的所有要求。單片機(jī)采用STC89

22、C52,編譯環(huán)境為keil,程序使用C語(yǔ)音進(jìn)行編寫。電路設(shè)計(jì)使用proteus仿真軟件進(jìn)行仿真調(diào)試,在Altium Designer上設(shè)計(jì)原理圖并繪制PCB圖。設(shè)計(jì)硬件制作比較順利,很快就把PCB板做好。接著,主要是程序的調(diào)試。程序調(diào)試的難點(diǎn)在于設(shè)計(jì)的功能模塊過多,程序結(jié)構(gòu)比較復(fù)雜,使得調(diào)試起來比較費(fèi)時(shí)間調(diào)試結(jié)果:1、完成設(shè)計(jì)任務(wù)的要求1:顯示年月日、時(shí)分秒、及星期信息。 2、完成設(shè)計(jì)任務(wù)的要求2:具有可調(diào)整日期和時(shí)間功能。 3、完成設(shè)計(jì)任務(wù)的要求3:閏年計(jì)算功能,液晶顯示平、閏年。4、完成設(shè)計(jì)任務(wù)的要求4:實(shí)現(xiàn)語(yǔ)音報(bào)時(shí)。5、增加功能:實(shí)時(shí)顯示環(huán)境氣溫。3.存在的問題:  

23、   整個(gè)程序的功能還是不完善的,功能比較單一,比如不能顯示具體某一個(gè)月或某一天的信息,不能多次查詢等。結(jié) 論 對(duì)C語(yǔ)言在編寫程序時(shí)的用處有了更明確的認(rèn)識(shí),懂得了編寫C程序的一般法方步驟。最大的收獲是:編寫程序時(shí)一定要有信心和勇氣,要相信自己一定可以把這個(gè)程序編寫出來。分析問題做出算法,想好思路,在心里有個(gè)大致的框架。然后按部就班的記下自己想到的每一點(diǎn)內(nèi)容,把寫下的東西認(rèn)真整理,查缺補(bǔ)漏,把一些細(xì)節(jié)的地方補(bǔ)上,就這樣一個(gè)貌似很難的程序就寫出來了。其實(shí)編程并不難,關(guān)鍵是要投入要鉆到里面去。下一步就是讀程序,讀程序時(shí)一定要小心仔細(xì),一條語(yǔ)句一條語(yǔ)句的讀,看是否能輸出自己想要輸出

24、的結(jié)果。如果發(fā)現(xiàn)錯(cuò)誤要馬上改過來,再接著向下讀,直到把程序調(diào)試的完美無缺為至。參考文獻(xiàn)附錄一:源程序名列表。main.c 文件:void delay_ms(t) /* 對(duì)于12M時(shí)鐘,約延時(shí)1ms */void Music(z) /語(yǔ)音芯片驅(qū)動(dòng)程序void main() /主函數(shù)LCD12864.c 文件 (液晶顯示)void delayNOP() /延時(shí)4usbit lcd_busy()/檢查L(zhǎng)CD忙狀態(tài)void write_cmd(uchar cmd) /寫指令數(shù)據(jù)到LCD void lcd_wdat(uchar dat) /寫顯示數(shù)據(jù)到LCDvoid lcd_init() /LCD初始化設(shè)定void lcd_pos(uchar X,uchar Y) /設(shè)定顯示位置 void display() /主顯示程序DS18B20.c 文件 (溫度檢測(cè))void dsreset(void)/DS18B20復(fù)位,初始化bit tempreadbit(void) /讀一位數(shù)據(jù)uchar tempread(void) /讀一字節(jié)(8位)void tempwritebyte(uchar dat)/向DS18B20寫一個(gè)字節(jié)數(shù)據(jù)void t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論