畢業(yè)設(shè)計(jì)--基于單片機(jī)控制1602液晶的萬(wàn)年歷_第1頁(yè)
已閱讀1頁(yè),還剩26頁(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、<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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論