版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 題 目 單片機(jī)控制1602液晶 的萬(wàn)年歷</p><p> 學(xué) 院 電氣工程系 </p><p> 專 業(yè) 電子信息工程 </p><p> 年 級(jí)
2、 </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> ?。?011 年6 月)</p><p><b> 1</b></p><p> 基于單片機(jī)控制1602液晶的萬(wàn)年歷</p>&
3、lt;p> 隨著社會(huì)主義市場(chǎng)經(jīng)濟(jì)的發(fā)展,人們對(duì)時(shí)間和溫度可靠性的要求不斷提高;到目前為止,利用先進(jìn)的單片機(jī)技術(shù)、控制技術(shù)以及通訊技術(shù),設(shè)計(jì)高性能、高節(jié)能、能適應(yīng)不同領(lǐng)域的產(chǎn)品是必然的趨勢(shì)</p><p> 本論文分析單片機(jī)控制1602液晶的原理及系統(tǒng)的組成結(jié)構(gòu),提出不同的控制方案,通過(guò)研究和比較,本論文采用液晶實(shí)現(xiàn)時(shí)鐘和溫度,然后用數(shù)字對(duì)系統(tǒng)單片機(jī)的設(shè)計(jì)。最后對(duì)系統(tǒng)的軟硬件設(shè)計(jì)進(jìn)行了詳細(xì)的介紹。本論文設(shè)
4、計(jì)與實(shí)現(xiàn)通過(guò)單片機(jī)控制來(lái)實(shí)現(xiàn)想要的目的。具體講述了系統(tǒng)的總體設(shè)計(jì)與軟件的實(shí)現(xiàn),并對(duì)系統(tǒng)采取的可靠性措施進(jìn)行了說(shuō)明。</p><p><b> 目錄</b></p><p> :緒論.....................................................1</p><p> 1.1單片機(jī)的最小系統(tǒng).....
5、.....................................2</p><p> :C語(yǔ)言的簡(jiǎn)介..............................................4</p><p> 2.1c語(yǔ)言的發(fā)展...........................................4</p><p> 2.2課題研
6、究的對(duì)象.............................................7</p><p> 2.3C語(yǔ)言的語(yǔ)句例子.................................8</p><p> 2.4 C語(yǔ)言的特點(diǎn)...........................9</p><p> 2.5 面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言..
7、................................12</p><p> :51單片機(jī)的C語(yǔ)言編程設(shè)計(jì).........................................13</p><p> 3.1 51單片機(jī)開發(fā)板...............................................13</p><p>
8、 3.2 DS1302芯片簡(jiǎn)介...........................................15</p><p> 3.3 DS1302的C語(yǔ)言 ...............................................19</p><p> 3.4 DS18B20的C語(yǔ)言...................................
9、......20</p><p> 3.5 1602液晶的C語(yǔ)言 ...........................................20</p><p> :51單片機(jī)編程實(shí)例圖.........................................21</p><p> 4.1DS1302的圖..................
10、..................................21</p><p> 4.2DS18B20的圖.............................................22</p><p> 4.2DS18B20與DS1302的液晶圖....................................22</p><p>
11、; 結(jié)束語(yǔ)..........................................................24</p><p> 致謝............................................................25</p><p> 參考文獻(xiàn)........................................
12、................26</p><p><b> 1)最小系統(tǒng)</b></p><p> 單片機(jī)最小系統(tǒng)或者稱為最小應(yīng)用系統(tǒng),素質(zhì)用最少的元件組成的單片機(jī)可以工作的系統(tǒng),對(duì)51系列單片機(jī)來(lái)說(shuō),最小系統(tǒng)一般應(yīng)該包括:?jiǎn)纹瑱C(jī)、復(fù)位電路、晶振電路。</p><p> 復(fù)位電路:使用了獨(dú)立式鍵盤,單片機(jī)的P1口鍵盤的接口。該設(shè)計(jì)要求
13、只需4個(gè)鍵對(duì)步進(jìn)電機(jī)的狀態(tài)進(jìn)行控制,但考慮到對(duì)控制功能的擴(kuò)展,使用了6路獨(dú)立式鍵盤。復(fù)位電路采用手動(dòng)復(fù)位,所謂手動(dòng)復(fù)位,是指通過(guò)接通一按鈕開關(guān),使單片機(jī)進(jìn)入復(fù)位狀態(tài),晶振電路用30PF的電容和一12M晶體振蕩器組成為整個(gè)電路提供時(shí)鐘頻率。如圖。</p><p> 晶振電路:8051單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式電路得到:內(nèi)部震蕩方式和外部中斷方式。在引腳XTAL1和XTAL2外部接晶振電路器(簡(jiǎn)稱晶振)或陶
14、瓷晶振器,就構(gòu)成了內(nèi)部晶振方式。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。內(nèi)部振蕩方式的外部電路如圖5示。其電容值一般在5~30pf,晶振頻率的典型值為12MHz,采用6MHz的情況也比較多。內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)比較穩(wěn)定,實(shí)用電路實(shí)用較多。</p><p> ?。谜Z(yǔ)言的發(fā)展過(guò)程 C語(yǔ)言是在 70 年代初問(wèn)世的。一九七八年由美國(guó)電話電報(bào)公司(AT&
15、;T)貝爾實(shí)驗(yàn)室正式發(fā)表了C語(yǔ)言。同時(shí)由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡(jiǎn)稱為《K&R》,也有人稱之為《K&R》標(biāo)準(zhǔn)。但是,在《K&R》中并沒(méi)有定義一個(gè)完整的標(biāo)準(zhǔn)C 語(yǔ)言,后來(lái)由美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(American National Standards Institute)在此基礎(chǔ)上制定了一個(gè)C 語(yǔ)言標(biāo)準(zhǔn),于一九八三年發(fā)
16、表。通常稱之為ANSI C。1.2 當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言早期的C 語(yǔ)言主要是用于UNIX系統(tǒng)。由于C語(yǔ)言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識(shí),到了八十年代,C開始進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計(jì)算機(jī)上得到了廣泛的使用,成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言之一。1.3 C語(yǔ)言版本 目前最流行的C語(yǔ)言有以下幾種: ?Microsoft C 或稱 MS C ?Borlan
17、d Turbo C 或稱 Turbo C ?</p><p> 對(duì)于市面上的大多數(shù)51單片機(jī)開發(fā)板來(lái)說(shuō)。ds1302和ds18b20應(yīng)該是比較常見的兩種外圍芯片。ds1302是具有SPI總線接口的時(shí)鐘芯片。ds18b20則是具有單總線接口的數(shù)字溫度傳感器。下面讓我們分別來(lái)認(rèn)識(shí)并學(xué)會(huì)應(yīng)用這兩種芯片。 </p><p> 首先依舊是看DS1302的datasheet中的相關(guān)介紹。&
18、lt;/p><p> 上面是它的一些基本的應(yīng)用介紹。</p><p> 下面是它的引腳的描述</p><p> 下面是DS1302的時(shí)鐘寄存器。我們要讀取的時(shí)間數(shù)據(jù)就是從下面這些數(shù)據(jù)寄存器中讀取出來(lái)的。當(dāng)我們要想調(diào)整時(shí)間時(shí),可以把時(shí)間數(shù)據(jù)寫入到相應(yīng)的寄存器中就可以了。 </p><p> 這是DS1302內(nèi)部的31個(gè)RAM寄存器。在某些應(yīng)
19、用場(chǎng)合我們可以應(yīng)用到。如我們想要做一個(gè)帶定時(shí)功能的鬧鐘。則可以把鬧鐘的時(shí)間寫入到31個(gè)RAM寄存器中的任意幾個(gè)。當(dāng)單片機(jī)掉電時(shí),只要我們的DS1302的備用電池還能工作,那么保存在其中的鬧鐘數(shù)據(jù)就不會(huì)丟失~~ </p><p> 由于對(duì)于這些器件的操作基本上按照數(shù)據(jù)手冊(cè)上面提供的時(shí)序圖和相關(guān)命令字來(lái)進(jìn)行操作就可以了。因此在我們應(yīng)用這些器件的時(shí)候一定要對(duì)照著手冊(cè)上面的要求來(lái)進(jìn)行操作。如果覺得還不夠放心的話。可以到
20、網(wǎng)上下載一些參考程序。對(duì)著手冊(cè)看別人的程序,看別人的思路是怎么樣的。 </p><p> DS1302和單片機(jī)的連接很簡(jiǎn)單。只需一根復(fù)位線,一根時(shí)鐘線,一根數(shù)據(jù)線即可。同時(shí)它本身還需要接一個(gè)32.768KHz的晶振來(lái)提供時(shí)鐘源。對(duì)于晶振的兩端可以分別接一個(gè)6PF左右的電容以提高晶振的精確度。同時(shí)可以在第8腳接上一個(gè)3.6V的可充電的電池。當(dāng)系統(tǒng)正常工作時(shí)可以對(duì)電池進(jìn)行涓流充電。當(dāng)系統(tǒng)掉電時(shí),DS1302由這個(gè)電
21、池提供的能量繼續(xù)工作。 </p><p> 下面讓我們來(lái)驅(qū)動(dòng)它。 </p><p> #include<reg51.h>//寄存器的定義</p><p> #include"ww.h"</p><p> #include <intrins.h></p><p> #
22、include"delay.h"</p><p> sbit sck=P3^6;//時(shí)鐘</p><p> sbit io=P3^4;//數(shù)據(jù)</p><p> sbit rst = P3^5;// DS1302復(fù)位// DS1302復(fù)位</p><p> uchar time_data[7]={11,04
23、,05,19,16,44,00};//年周月日時(shí)分秒</p><p> uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};</p><p> uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};</p><p> uchar dis[6];&
24、lt;/p><p> void write_ds1302_byte(uchar dat)</p><p><b> {</b></p><p><b> uchar i;</b></p><p> for(i=0;i<8;i++)//有八位脈沖,是串行的,</p><p
25、><b> {</b></p><p> sck=0;//先是低電平</p><p> io=dat&0x01;//是從地位開始傳的 </p><p> sck=1;//拉高,把數(shù)據(jù)傳過(guò)去,完成</p><p> dat=dat>>1;//與完了,要移位操作</p>&l
26、t;p><b> }</b></p><p><b> }</b></p><p> void write_ds1302(uchar add, uchar dat)</p><p><b> {</b></p><p> rst=0;//rst是片選,先置低脈沖
27、</p><p> _nop_();//不動(dòng)</p><p> sck=0;_nop_();</p><p> rst=1;//是為了寫數(shù)據(jù)</p><p><b> _nop_();</b></p><p> write_ds1302_byte(add);//傳數(shù)據(jù)</p>
28、<p> write_ds1302_byte(dat);//傳數(shù)據(jù)</p><p> rst=0;//保持,因?yàn)樗容^敏感</p><p><b> _nop_();</b></p><p> io=1;//釋放出</p><p> sck=1;//釋放出</p><p>
29、<b> }</b></p><p> uchar read_ds1302(uchar add)</p><p><b> {</b></p><p> uchar i,value;</p><p><b> rst=0;</b></p><p&g
30、t;<b> _nop_();</b></p><p> sck=0;_nop_();</p><p><b> rst=1;</b></p><p><b> _nop_();</b></p><p> write_ds1302_byte(add);</p&g
31、t;<p> for(i=0;i<8;i++)</p><p><b> {</b></p><p> value=value>>1;</p><p><b> sck=0;</b></p><p><b> if(io)</b><
32、;/p><p> value=value|0x80;</p><p><b> sck=1;</b></p><p><b> }</b></p><p><b> rst=0;</b></p><p><b> _nop_();<
33、/b></p><p><b> sck=0;</b></p><p><b> sck=1;</b></p><p><b> io=1;</b></p><p> return value;</p><p><b> }&l
34、t;/b></p><p> void set_rtc(void)//設(shè)置時(shí)間</p><p><b> {</b></p><p> uchar i,j;</p><p> for(i=0;i<7;i++)</p><p><b> {</b><
35、/p><p> j=time_data[i]/10;</p><p> time_data[i]=time_data[i]%10;</p><p> time_data[i]=time_data[i]+j*16;//轉(zhuǎn)換bcd碼</p><p><b> }</b></p><p> wri
36、te_ds1302(0x8e,0x00);//去除寫保護(hù)</p><p> for(i=0;i<7;i++)//往里寫數(shù)據(jù)</p><p><b> {</b></p><p> write_ds1302(write_add[i],time_data[i]);</p><p><b> }<
37、/b></p><p> write_ds1302(0x8e,0x80);//加除寫保護(hù)</p><p><b> }</b></p><p> void read_rtc(void)</p><p><b> {</b></p><p><b>
38、uchar i;</b></p><p> for(i=0;i<7;i++)</p><p><b> {</b></p><p> time_data[i]=read_ds1302(read_add[i]);</p><p><b> }</b></p>&
39、lt;p><b> }</b></p><p> /*void time_pros()</p><p><b> {</b></p><p> dis[1]=time_data[6]/16;</p><p> dis[2]=time_data[5]%16;</p>&l
40、t;p> dis[3]=time_data[5]/16;</p><p> dis[4]=time_data[4]%16;</p><p> dis[5]=time_data[4]/16;</p><p><b> } */</b></p><p> #ifndef __WW_H__</p>
41、<p> #define __WW_H__</p><p> #include"delay.h"</p><p> //uchar time_data[7]={0,0,12,15,5,3,00};</p><p> //uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80
42、};</p><p> //uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};</p><p> //uchar dis[6];</p><p> void write_ds1302_byte(uchar dat);</p><p> void write_ds1302(uc
43、har add, uchar dat);</p><p> uchar read_ds1302(uchar add);</p><p> void set_rtc(void);</p><p> void read_rtc(void);</p><p> //void time_pros(void);//轉(zhuǎn)換十進(jìn)制</p>
44、;<p> //void display(void);</p><p><b> #endif</b></p><p><b> 延時(shí)函數(shù)文件</b></p><p> #include"delay.h"</p><p> void delayms(uin
45、t xms)</p><p><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=xms;i>0;i--)</p><p> for(j=110;j>0;j--);</p><p><b>
46、 } </b></p><p> void delay(uint t)</p><p><b> {</b></p><p> while(t--);</p><p><b> }</b></p><p> void delay_50ms(uint t)
47、</p><p><b> {</b></p><p><b> uchar j;</b></p><p> for(;t>0;t--)</p><p> for(j=6245;j>0;j--);</p><p><b> }</b>
48、;</p><p> #ifndef __DELAY_H__</p><p> #define __DELAY_H__ </p><p> #define uint unsigned int </p><p> #define uchar unsigned char</p><p> void delay
49、ms(uint xms);</p><p> void delay(uint t);</p><p> void delay_50ms(uint t);</p><p><b> #endif</b></p><p> 有了上面的這些函數(shù)我們就可以對(duì)DS1302進(jìn)行操作了。當(dāng)我們想要獲取當(dāng)前時(shí)間時(shí),只需要調(diào)用v_
50、ClockUpdata_f( void )這個(gè)函數(shù)即可。讀取到的時(shí)間數(shù)據(jù)保存在CurrentTime這個(gè)結(jié)構(gòu)體中。至于如何把時(shí)間數(shù)據(jù)在數(shù)碼管或者是液晶屏上顯示出來(lái)我相信大家應(yīng)該都會(huì)了吧^_^. </p><p> 看看顯示效果如何~~ </p><p> 下面再讓我們看看DS18B20吧。 </p><p> DS18B20是單總線的數(shù)字溫度傳感器。其與單片機(jī)
51、的接口只需要一根數(shù)據(jù)線即可。當(dāng)然連線簡(jiǎn)單意味著軟件處理上可能要麻煩一點(diǎn)。下面來(lái)看看它的優(yōu)點(diǎn)</p><p> 看看它的靚照。外形和我們常用的三極管沒(méi)有什么兩樣哦。</p><p> DS18B20的內(nèi)部存儲(chǔ)器分為以下幾部分 </p><p> ROM:存放該器件的編碼。前8位為單線系列的編碼(DS18B20的編碼是19H)后面48位為芯片的唯一序列號(hào)。在出場(chǎng)的
52、時(shí)候就已經(jīng)設(shè)置好,用戶無(wú)法更改。最后8位是以上56位的CRC碼。 </p><p> RAM:DS18B20的內(nèi)部暫存器共9個(gè)字節(jié)。其中第一個(gè)和第二個(gè)字節(jié)存放轉(zhuǎn)換后的溫度值。第二個(gè)和第三個(gè)字節(jié)分別存放高溫和低溫告警值。(可以用RAM指令將其拷貝到EEPROM中)第四個(gè)字節(jié)為配置寄存器。第5~7個(gè)字節(jié)保留。第9個(gè)字節(jié)為前8個(gè)字節(jié)的CRC碼。</p><p> DS18B20的溫度存放如上
53、圖所示。其中S位符號(hào)位。當(dāng)溫度值為負(fù)值時(shí),S = 1 ,反之則S = 0 。我們把得到的溫度數(shù)據(jù)乘上對(duì)應(yīng)的分辨率即可以得到轉(zhuǎn)換后的溫度值。 </p><p> DS18B20的通訊協(xié)議: </p><p> 在對(duì)DS18B20進(jìn)行讀寫編程時(shí),必須嚴(yán)格保證讀寫的時(shí)序。否則將無(wú)法讀取測(cè)溫結(jié)果。根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)3個(gè)步驟:每一次讀寫之前都
54、要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令。這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。 </p><p> 復(fù)位要求主機(jī)將數(shù)據(jù)線下拉500us,然后釋放,DS18B20收到信號(hào)后等待16~160us然后發(fā)出60~240us的</p><p> 存在低脈沖,主機(jī)收到此信號(hào)表示復(fù)位成功。</p><p> 上圖即DS18B20的復(fù)位
55、時(shí)序圖。 </p><p> 下面是讀操作的時(shí)序圖</p><p><b> 這是寫操作的時(shí)序圖</b></p><p> 下面讓我們來(lái)看看它的驅(qū)動(dòng)程序如何寫吧。 </p><p> #include<reg51.h></p><p> #include"ss.h&
56、quot;</p><p> #include"delay.h"</p><p> void init_1(void)</p><p><b> {</b></p><p><b> uchar x;</b></p><p><b>
57、DQ=1;</b></p><p><b> delay(8);</b></p><p><b> DQ=0;</b></p><p> delay(80);</p><p><b> DQ=1;</b></p><p><b&
58、gt; delay(8);</b></p><p><b> x=DQ;</b></p><p><b> delay(4);</b></p><p><b> }</b></p><p> void write_byle(uchar date)</
59、p><p><b> {</b></p><p><b> uchar i;</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> DQ=0;</b>
60、</p><p> DQ=date&0x01; </p><p><b> delay(4);</b></p><p><b> DQ=1;</b></p><p> date=date>>1;</p><p><b> }</b
61、></p><p><b> delay(4);</b></p><p><b> }</b></p><p> uchar read_byle(void)</p><p><b> {</b></p><p> uchar i,valu
62、e;</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> DQ=0;</b></p><p> value>>=1;</p><p><b> DQ=1;</b>
63、</p><p><b> if(DQ)</b></p><p> value=value|0x80;</p><p><b> delay(4);</b></p><p><b> }</b></p><p> return value;&l
64、t;/p><p><b> }</b></p><p> uchar temupt(void)</p><p><b> {</b></p><p> uchar a,b;</p><p><b> init_1();</b></p>
65、<p> write_byle(0xcc);</p><p> write_byle(0x44);</p><p> delay(10);</p><p><b> init_1();</b></p><p> write_byle(0xcc);</p><p> writ
66、e_byle(0xbe);</p><p> a=read_byle();</p><p> b=read_byle();</p><p><b> b<<=4;</b></p><p> b+=(a&0xf0)>>4;</p><p><b>
67、 return b;</b></p><p><b> }</b></p><p> #ifndef __SS_H__</p><p> #define __SS_H__</p><p> #include<reg51.h></p><p> #include&q
68、uot;delay.h"</p><p> sbit DQ=P3^7;</p><p> void init_1(void);</p><p> void write_byle(uchar date);</p><p> uchar read_byle(void);</p><p> uchar t
69、emupt(void);</p><p><b> #endif</b></p><p><b> 延時(shí)函數(shù)文件</b></p><p> #include"delay.h"</p><p> void delayms(uint xms)</p><p
70、><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=xms;i>0;i--)</p><p> for(j=110;j>0;j--);</p><p><b> } </b></p>
71、<p> void delay(uint t)</p><p><b> {</b></p><p> while(t--);</p><p><b> }</b></p><p> void delay_50ms(uint t)</p><p>&l
72、t;b> {</b></p><p><b> uchar j;</b></p><p> for(;t>0;t--)</p><p> for(j=6245;j>0;j--);</p><p><b> }</b></p><p>
73、 #ifndef __DELAY_H__</p><p> #define __DELAY_H__ </p><p> #define uint unsigned int </p><p> #define uchar unsigned char</p><p> void delayms(uint xms);</p>
74、<p> void delay(uint t);</p><p> void delay_50ms(uint t);</p><p><b> #endif</b></p><p><b> 液晶c語(yǔ)言程序設(shè)計(jì)</b></p><p> #include <reg51.
75、h></p><p> #include"smg.h"</p><p> #include"delay.h"</p><p> sbit rd = P2^6; </p><p> sbit rw = P2^5;</p><p> sbit
76、ep = P2^7; </p><p> //uchar table[]="I LOVE MUC";</p><p> //uchar code table1[]="WWW.BAIDU.COM";</p><p> void write_tt(uchar tt)</p><p><b
77、> {</b></p><p><b> ep=0;</b></p><p><b> rd=0;</b></p><p><b> rw=0;</b></p><p><b> P0=tt;</b></p>&l
78、t;p> delayms(1);</p><p><b> ep=1;</b></p><p> delayms(1);</p><p> ep=0;</p><p> } </p><p> void write_com(uchar
79、dat)</p><p><b> {</b></p><p><b> ep=0;</b></p><p><b> rd=1;</b></p><p><b> rw=0;</b></p><p><b>
80、P0=dat;</b></p><p> delayms(1);</p><p><b> ep=1;</b></p><p> delayms(1);</p><p><b> ep=0;</b></p><p><b> }</b
81、></p><p> void init(void)</p><p><b> {</b></p><p> delayms(15);</p><p> write_tt(0x38);</p><p> delayms(5);</p><p> write
82、_tt(0x38);</p><p> delayms(5);</p><p> write_tt(0x38);</p><p> write_tt(0x38);</p><p> write_tt(0x08);</p><p> write_tt(0x01);</p><p> w
83、rite_tt(0x06);</p><p> write_tt(0x0c);</p><p><b> }</b></p><p> #ifndef __SMG_H__</p><p> #define __SMG_H__</p><p> #include"delay.h&
84、quot;</p><p> //uchar table[]="I LOVE MUC";</p><p> void write_tt(uchar tt);</p><p> void write_com(uchar dat);</p><p> void init(void);</p><p
85、><b> #endif</b></p><p> 如果想獲取當(dāng)前的溫度數(shù)據(jù),在主函數(shù)中調(diào)用v_TemperatureUpdate_f( void )就可以了。溫度數(shù)據(jù)就保存到Temperature中去了。至于如何顯示,就不用多說(shuō)了吧</p><p><b> 主函數(shù)</b></p><p> #includ
86、e"ss.h"</p><p> #include"smg.h"</p><p> #include"delay.h"</p><p> #include"ww.h"</p><p><b> bit flag;</b></p&
87、gt;<p> uchar time_data[];</p><p> //uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};</p><p> //uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};</p><p> //
88、uchar table[]="2";</p><p> uchar disp[]="0123456789";</p><p> //uchar table[]="℃ ";</p><p> void main()</p><p><b> {</b>
89、</p><p> uchar temp;</p><p><b> init();</b></p><p> // set_rtc();</p><p><b> while(1)</b></p><p><b> {</b></p&g
90、t;<p> read_rtc();</p><p> //time_pros();</p><p> write_tt(0x80);</p><p> write_com(disp[time_data[4]/16]);</p><p> write_tt(0x81);</p><p> wr
91、ite_com(disp[time_data[4]%16]);</p><p> delay_50ms(20);</p><p><b> if(flag)</b></p><p><b> {</b></p><p> write_tt(0x82);</p><p>
92、; write_com(':');</p><p> write_tt(0x85);</p><p> write_com(':');</p><p> delay(55500); </p><p><b> flag=0;</b></p><p><
93、;b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> write_tt(0x82);</p><p> write_com(' ');</p><p> write
94、_tt(0x85);</p><p> write_com(' ');</p><p> delay(55500);</p><p><b> flag=1; </b></p><p><b> }</b></p><p> write_tt(0x8
95、3);</p><p> write_com(disp[time_data[5]/16]);</p><p> write_tt(0x84);</p><p> write_com(disp[time_data[5]%16]);</p><p> delay_50ms(20);</p><p> write_
96、tt(0x86);</p><p> write_com(disp[time_data[6]/16]);</p><p> write_tt(0x87);</p><p> write_com(disp[time_data[6]%16]);</p><p> delay_50ms(20);</p><p>
97、write_tt(0x8b);</p><p> write_com(disp[time_data[1]/16]);</p><p> write_tt(0x8c);</p><p> write_com(disp[time_data[1]%16]);</p><p> delay_50ms(20);</p><p
98、> write_tt(0x80+0x45);</p><p> write_com('2');</p><p> write_tt(0x80+0x46);</p><p> write_com('0');</p><p> delay_50ms(20); </p><p>
99、; write_tt(0x80+0x47);</p><p> write_com(disp[time_data[0]/16]);</p><p> write_tt(0x80+0x48);</p><p> write_com(disp[time_data[0]%16]);</p><p> delay_50ms(20);<
100、/p><p> write_tt(0x80+0x49);</p><p> write_com('-');</p><p> write_tt(0x80+0x4a);</p><p> write_com(disp[time_data[2]/16]);</p><p> write_tt(0x80
101、+0x4b);</p><p> write_com(disp[time_data[2]%16]);</p><p> delay_50ms(20);</p><p> write_tt(0x80+0x4c);</p><p> write_com('-'); </p><p> write_
102、tt(0x80+0x4d);</p><p> write_com(disp[time_data[3]/16]);</p><p> write_tt(0x80+0x4e);</p><p> write_com(disp[time_data[3]%16]);</p><p> delay_50ms(20); </p>
103、<p> temp=temupt();</p><p> write_tt(0x80+0x40);</p><p> write_com(disp[temp/10]);</p><p> delay(50);</p><p> write_tt(0x80+0x41);</p><p> write
104、_com(disp[temp%10]);</p><p> delay(50);</p><p> write_tt(0x80+0x42);</p><p> write_com(0xa5);</p><p> write_tt(0x80+0x43);</p><p> write_com('c
105、9;);</p><p><b> }</b></p><p><b> }</b></p><p><b> 結(jié)束語(yǔ)</b></p><p> 我在這一次數(shù)字電子鐘的設(shè)計(jì)過(guò)程中,很是受益匪淺。通過(guò)對(duì)自己在兩年時(shí)間里所學(xué)的知識(shí)的回顧,并充分發(fā)揮對(duì)所學(xué)知識(shí)的理
106、解和對(duì)畢業(yè)設(shè)計(jì)的思考及書面表達(dá)能力,最終完成了。這為自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶貴的經(jīng)驗(yàn)。撰寫論文的過(guò)程也是專業(yè)知識(shí)的學(xué)習(xí)過(guò)程,它使我運(yùn)用已有的專業(yè)基礎(chǔ)知識(shí),對(duì)其進(jìn)行設(shè)計(jì),分析和解決一個(gè)理論問(wèn)題或?qū)嶋H問(wèn)題,把知識(shí)轉(zhuǎn)化為能力的實(shí)際訓(xùn)練。培養(yǎng)了我運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力。</p><p> 通過(guò)這次課程設(shè)計(jì)我發(fā)現(xiàn),只有理論水平提高了;才能夠?qū)⒄n本知識(shí)與實(shí)踐相整合,理論知識(shí)服務(wù)于教學(xué)實(shí)踐,以增強(qiáng)自己的動(dòng)
107、手能力。這個(gè)實(shí)驗(yàn)十分有意義 我獲得很深刻的經(jīng)驗(yàn)。通過(guò)這次課程設(shè)計(jì),我們知道了理論和實(shí)際的距離,也知道了理論和實(shí)際想結(jié)合的重要性,,也從中得知了很多書本上無(wú)法得知的知識(shí)。</p><p> 我們的學(xué)習(xí)不但要立足于書本,以解決理論和實(shí)際教學(xué)中的實(shí)際問(wèn)題為目的,還要以實(shí)踐相結(jié)合,理論問(wèn)題即實(shí)踐課題,解決問(wèn)題即課程研究,學(xué)生自己就是一個(gè)專家,通過(guò)自己的手來(lái)解決問(wèn)題比用腦子解決問(wèn)題更加深刻。學(xué)習(xí)就應(yīng)該采取理論與實(shí)踐結(jié)合的
108、方式,理論的問(wèn)題,也就是實(shí)踐性的課題。這種做法既有助于完成理論知識(shí)的鞏固,又有助于帶動(dòng)實(shí)踐,解決實(shí)際問(wèn)題,加強(qiáng)我們的動(dòng)手能力和解決問(wèn)題的能力。</p><p><b> 致 謝</b></p><p><b> 畢業(yè)論文致謝</b></p><p> 從開始寫作至本論文最終定稿,總共花費(fèi)了我一個(gè)月以來(lái)所有的業(yè)余時(shí)間。
109、雖說(shuō)在繁忙的工作之余要完成這樣一篇論文的確不是一件很輕松的事情,但我內(nèi)心深處卻滿含深深的感激之情。感謝XX學(xué)院為我們提供的這次學(xué)習(xí)機(jī)會(huì),感謝電子信息班所有的任課老師,感謝班主任老師XX老師,是你們讓我能夠靜靜地坐下來(lái),在知識(shí)的海洋里吸取更多的營(yíng)養(yǎng),從而能夠?yàn)樽约哼M(jìn)一步地加油充電。通過(guò)論文的撰寫,使我能夠更系統(tǒng)、全面地學(xué)習(xí)有關(guān)單片機(jī)、先進(jìn)的前沿理論知識(shí),并得以借鑒眾多學(xué)者的寶貴經(jīng)驗(yàn),這對(duì)于我今后的工作和我為之服務(wù)的企業(yè),無(wú)疑是不可多得的寶
110、貴財(cái)富。由于本理論水平比較有限,論文中的有些觀點(diǎn)以及對(duì)企業(yè)示例的歸納和闡述難免有疏漏和不足的地方,歡迎老師和評(píng)委指正。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]廖常初.單片機(jī)編程及應(yīng)用. 北京:機(jī)械工業(yè)出版社,2003.</p><p> [2]吳忠智,玩轉(zhuǎn)DS1302.北京:機(jī)械工業(yè)出版社,2000.<
111、/p><p> [3]韓安榮.玩轉(zhuǎn)DS18B20. 北京:機(jī)械工業(yè)出版社,2000.</p><p> [4]譚浩強(qiáng).c語(yǔ)言程序設(shè)計(jì):1996,</p><p> [5]陳伯時(shí).液晶模塊資料.北京:機(jī)械工業(yè)出版社,1996</p><p> [6]岳慶來(lái).單片機(jī)教程.北京:機(jī)械工業(yè)出版社</p><p> [7]
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機(jī)的液晶萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 單片機(jī)萬(wàn)年歷課程設(shè)計(jì)--基于1602液晶顯示的電子時(shí)鐘萬(wàn)年歷
- 基于單片機(jī)的萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---單片機(jī)控制的萬(wàn)年歷設(shè)計(jì)
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬(wàn)年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬(wàn)年歷的設(shè)計(jì)
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 1602數(shù)字萬(wàn)年歷單片機(jī)課程設(shè)計(jì)
- 單片機(jī)萬(wàn)年歷系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的測(cè)溫萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的數(shù)字萬(wàn)年歷設(shè)計(jì)
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì).doc
- 51單片機(jī)萬(wàn)年歷畢業(yè)設(shè)計(jì)論文
- 51基于單片機(jī)的電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論