畢業(yè)設(shè)計--基于單片機(jī)控制1602液晶的萬年歷_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計(論文)</b></p><p>  題 目 單片機(jī)控制1602液晶 的萬年歷</p><p>  學(xué) 院 電氣工程系 </p><p>  專 業(yè) 電子信息工程 </p><p>  年 級

2、 </p><p>  姓 名 </p><p>  指導(dǎo)教師 </p><p> ?。?011 年6 月)</p><p><b>  1</b></p><p>  基于單片機(jī)控制1602液晶的萬年歷</p>&

3、lt;p>  隨著社會主義市場經(jīng)濟(jì)的發(fā)展,人們對時間和溫度可靠性的要求不斷提高;到目前為止,利用先進(jìn)的單片機(jī)技術(shù)、控制技術(shù)以及通訊技術(shù),設(shè)計高性能、高節(jié)能、能適應(yīng)不同領(lǐng)域的產(chǎn)品是必然的趨勢</p><p>  本論文分析單片機(jī)控制1602液晶的原理及系統(tǒng)的組成結(jié)構(gòu),提出不同的控制方案,通過研究和比較,本論文采用液晶實現(xiàn)時鐘和溫度,然后用數(shù)字對系統(tǒng)單片機(jī)的設(shè)計。最后對系統(tǒng)的軟硬件設(shè)計進(jìn)行了詳細(xì)的介紹。本論文設(shè)

4、計與實現(xiàn)通過單片機(jī)控制來實現(xiàn)想要的目的。具體講述了系統(tǒng)的總體設(shè)計與軟件的實現(xiàn),并對系統(tǒng)采取的可靠性措施進(jìn)行了說明。</p><p><b>  目錄</b></p><p>  :緒論.....................................................1</p><p>  1.1單片機(jī)的最小系統(tǒng).....

5、.....................................2</p><p>  :C語言的簡介..............................................4</p><p>  2.1c語言的發(fā)展...........................................4</p><p>  2.2課題研

6、究的對象.............................................7</p><p>  2.3C語言的語句例子.................................8</p><p>  2.4 C語言的特點...........................9</p><p>  2.5 面向?qū)ο蟮某绦蛟O(shè)計語言..

7、................................12</p><p>  :51單片機(jī)的C語言編程設(shè)計.........................................13</p><p>  3.1 51單片機(jī)開發(fā)板...............................................13</p><p> 

8、 3.2 DS1302芯片簡介...........................................15</p><p>  3.3 DS1302的C語言 ...............................................19</p><p>  3.4 DS18B20的C語言...................................

9、......20</p><p>  3.5 1602液晶的C語言 ...........................................20</p><p>  :51單片機(jī)編程實例圖.........................................21</p><p>  4.1DS1302的圖..................

10、..................................21</p><p>  4.2DS18B20的圖.............................................22</p><p>  4.2DS18B20與DS1302的液晶圖....................................22</p><p>

11、;  結(jié)束語..........................................................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),對51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、復(fù)位電路、晶振電路。</p><p>  復(fù)位電路:使用了獨立式鍵盤,單片機(jī)的P1口鍵盤的接口。該設(shè)計要求

13、只需4個鍵對步進(jìn)電機(jī)的狀態(tài)進(jìn)行控制,但考慮到對控制功能的擴(kuò)展,使用了6路獨立式鍵盤。復(fù)位電路采用手動復(fù)位,所謂手動復(fù)位,是指通過接通一按鈕開關(guān),使單片機(jī)進(jìn)入復(fù)位狀態(tài),晶振電路用30PF的電容和一12M晶體振蕩器組成為整個電路提供時鐘頻率。如圖。</p><p>  晶振電路:8051單片機(jī)的時鐘信號通常用兩種電路形式電路得到:內(nèi)部震蕩方式和外部中斷方式。在引腳XTAL1和XTAL2外部接晶振電路器(簡稱晶振)或陶

14、瓷晶振器,就構(gòu)成了內(nèi)部晶振方式。由于單片機(jī)內(nèi)部有一個高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時鐘脈沖。內(nèi)部振蕩方式的外部電路如圖5示。其電容值一般在5~30pf,晶振頻率的典型值為12MHz,采用6MHz的情況也比較多。內(nèi)部振蕩方式所得的時鐘信號比較穩(wěn)定,實用電路實用較多。</p><p> ?。谜Z言的發(fā)展過程 C語言是在 70 年代初問世的。一九七八年由美國電話電報公司(AT&

15、;T)貝爾實驗室正式發(fā)表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為《K&R》,也有人稱之為《K&R》標(biāo)準(zhǔn)。但是,在《K&R》中并沒有定義一個完整的標(biāo)準(zhǔn)C 語言,后來由美國國家標(biāo)準(zhǔn)協(xié)會(American National Standards Institute)在此基礎(chǔ)上制定了一個C 語言標(biāo)準(zhǔn),于一九八三年發(fā)

16、表。通常稱之為ANSI C。1.2 當(dāng)代最優(yōu)秀的程序設(shè)計語言早期的C 語言主要是用于UNIX系統(tǒng)。由于C語言的強(qiáng)大功能和各方面的優(yōu)點逐漸為人們認(rèn)識,到了八十年代,C開始進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計算機(jī)上得到了廣泛的使用,成為當(dāng)代最優(yōu)秀的程序設(shè)計語言之一。1.3 C語言版本 目前最流行的C語言有以下幾種: ?Microsoft C 或稱 MS C ?Borlan

17、d Turbo C 或稱 Turbo C ?</p><p>  對于市面上的大多數(shù)51單片機(jī)開發(fā)板來說。ds1302和ds18b20應(yīng)該是比較常見的兩種外圍芯片。ds1302是具有SPI總線接口的時鐘芯片。ds18b20則是具有單總線接口的數(shù)字溫度傳感器。下面讓我們分別來認(rèn)識并學(xué)會應(yīng)用這兩種芯片。 </p><p>  首先依舊是看DS1302的datasheet中的相關(guān)介紹。&

18、lt;/p><p>  上面是它的一些基本的應(yīng)用介紹。</p><p>  下面是它的引腳的描述</p><p>  下面是DS1302的時鐘寄存器。我們要讀取的時間數(shù)據(jù)就是從下面這些數(shù)據(jù)寄存器中讀取出來的。當(dāng)我們要想調(diào)整時間時,可以把時間數(shù)據(jù)寫入到相應(yīng)的寄存器中就可以了。 </p><p>  這是DS1302內(nèi)部的31個RAM寄存器。在某些應(yīng)

19、用場合我們可以應(yīng)用到。如我們想要做一個帶定時功能的鬧鐘。則可以把鬧鐘的時間寫入到31個RAM寄存器中的任意幾個。當(dāng)單片機(jī)掉電時,只要我們的DS1302的備用電池還能工作,那么保存在其中的鬧鐘數(shù)據(jù)就不會丟失~~ </p><p>  由于對于這些器件的操作基本上按照數(shù)據(jù)手冊上面提供的時序圖和相關(guān)命令字來進(jìn)行操作就可以了。因此在我們應(yīng)用這些器件的時候一定要對照著手冊上面的要求來進(jìn)行操作。如果覺得還不夠放心的話。可以到

20、網(wǎng)上下載一些參考程序。對著手冊看別人的程序,看別人的思路是怎么樣的。 </p><p>  DS1302和單片機(jī)的連接很簡單。只需一根復(fù)位線,一根時鐘線,一根數(shù)據(jù)線即可。同時它本身還需要接一個32.768KHz的晶振來提供時鐘源。對于晶振的兩端可以分別接一個6PF左右的電容以提高晶振的精確度。同時可以在第8腳接上一個3.6V的可充電的電池。當(dāng)系統(tǒng)正常工作時可以對電池進(jìn)行涓流充電。當(dāng)系統(tǒng)掉電時,DS1302由這個電

21、池提供的能量繼續(xù)工作。 </p><p>  下面讓我們來驅(qū)動它。 </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;//時鐘</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};//年周月日時分秒</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ù)傳過去,完成</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_();//不動</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;//保持,因為他比較敏感</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è)置時間</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ù)文件</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ù)我們就可以對DS1302進(jìn)行操作了。當(dāng)我們想要獲取當(dāng)前時間時,只需要調(diào)用v_

50、ClockUpdata_f( void )這個函數(shù)即可。讀取到的時間數(shù)據(jù)保存在CurrentTime這個結(jié)構(gòu)體中。至于如何把時間數(shù)據(jù)在數(shù)碼管或者是液晶屏上顯示出來我相信大家應(yīng)該都會了吧^_^. </p><p>  看看顯示效果如何~~ </p><p>  下面再讓我們看看DS18B20吧。 </p><p>  DS18B20是單總線的數(shù)字溫度傳感器。其與單片機(jī)

51、的接口只需要一根數(shù)據(jù)線即可。當(dāng)然連線簡單意味著軟件處理上可能要麻煩一點。下面來看看它的優(yōu)點</p><p>  看看它的靚照。外形和我們常用的三極管沒有什么兩樣哦。</p><p>  DS18B20的內(nèi)部存儲器分為以下幾部分 </p><p>  ROM:存放該器件的編碼。前8位為單線系列的編碼(DS18B20的編碼是19H)后面48位為芯片的唯一序列號。在出場的

52、時候就已經(jīng)設(shè)置好,用戶無法更改。最后8位是以上56位的CRC碼。 </p><p>  RAM:DS18B20的內(nèi)部暫存器共9個字節(jié)。其中第一個和第二個字節(jié)存放轉(zhuǎn)換后的溫度值。第二個和第三個字節(jié)分別存放高溫和低溫告警值。(可以用RAM指令將其拷貝到EEPROM中)第四個字節(jié)為配置寄存器。第5~7個字節(jié)保留。第9個字節(jié)為前8個字節(jié)的CRC碼。</p><p>  DS18B20的溫度存放如上

53、圖所示。其中S位符號位。當(dāng)溫度值為負(fù)值時,S = 1 ,反之則S = 0 。我們把得到的溫度數(shù)據(jù)乘上對應(yīng)的分辨率即可以得到轉(zhuǎn)換后的溫度值。 </p><p>  DS18B20的通訊協(xié)議: </p><p>  在對DS18B20進(jìn)行讀寫編程時,必須嚴(yán)格保證讀寫的時序。否則將無法讀取測溫結(jié)果。根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個步驟:每一次讀寫之前都

54、要對DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令。這樣才能對DS18B20進(jìn)行預(yù)定的操作。 </p><p>  復(fù)位要求主機(jī)將數(shù)據(jù)線下拉500us,然后釋放,DS18B20收到信號后等待16~160us然后發(fā)出60~240us的</p><p>  存在低脈沖,主機(jī)收到此信號表示復(fù)位成功。</p><p>  上圖即DS18B20的復(fù)位

55、時序圖。 </p><p>  下面是讀操作的時序圖</p><p><b>  這是寫操作的時序圖</b></p><p>  下面讓我們來看看它的驅(qū)動程序如何寫吧。 </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ù)文件</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語言程序設(shè)計</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中去了。至于如何顯示,就不用多說了吧</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é)束語</b></p><p>  我在這一次數(shù)字電子鐘的設(shè)計過程中,很是受益匪淺。通過對自己在兩年時間里所學(xué)的知識的回顧,并充分發(fā)揮對所學(xué)知識的理

106、解和對畢業(yè)設(shè)計的思考及書面表達(dá)能力,最終完成了。這為自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶貴的經(jīng)驗。撰寫論文的過程也是專業(yè)知識的學(xué)習(xí)過程,它使我運(yùn)用已有的專業(yè)基礎(chǔ)知識,對其進(jìn)行設(shè)計,分析和解決一個理論問題或?qū)嶋H問題,把知識轉(zhuǎn)化為能力的實際訓(xùn)練。培養(yǎng)了我運(yùn)用所學(xué)知識解決實際問題的能力。</p><p>  通過這次課程設(shè)計我發(fā)現(xiàn),只有理論水平提高了;才能夠?qū)⒄n本知識與實踐相整合,理論知識服務(wù)于教學(xué)實踐,以增強(qiáng)自己的動

107、手能力。這個實驗十分有意義 我獲得很深刻的經(jīng)驗。通過這次課程設(shè)計,我們知道了理論和實際的距離,也知道了理論和實際想結(jié)合的重要性,,也從中得知了很多書本上無法得知的知識。</p><p>  我們的學(xué)習(xí)不但要立足于書本,以解決理論和實際教學(xué)中的實際問題為目的,還要以實踐相結(jié)合,理論問題即實踐課題,解決問題即課程研究,學(xué)生自己就是一個專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學(xué)習(xí)就應(yīng)該采取理論與實踐結(jié)合的

108、方式,理論的問題,也就是實踐性的課題。這種做法既有助于完成理論知識的鞏固,又有助于帶動實踐,解決實際問題,加強(qiáng)我們的動手能力和解決問題的能力。</p><p><b>  致 謝</b></p><p><b>  畢業(yè)論文致謝</b></p><p>  從開始寫作至本論文最終定稿,總共花費了我一個月以來所有的業(yè)余時間。

109、雖說在繁忙的工作之余要完成這樣一篇論文的確不是一件很輕松的事情,但我內(nèi)心深處卻滿含深深的感激之情。感謝XX學(xué)院為我們提供的這次學(xué)習(xí)機(jī)會,感謝電子信息班所有的任課老師,感謝班主任老師XX老師,是你們讓我能夠靜靜地坐下來,在知識的海洋里吸取更多的營養(yǎng),從而能夠為自己進(jìn)一步地加油充電。通過論文的撰寫,使我能夠更系統(tǒng)、全面地學(xué)習(xí)有關(guān)單片機(jī)、先進(jìn)的前沿理論知識,并得以借鑒眾多學(xué)者的寶貴經(jīng)驗,這對于我今后的工作和我為之服務(wù)的企業(yè),無疑是不可多得的寶

110、貴財富。由于本理論水平比較有限,論文中的有些觀點以及對企業(yè)示例的歸納和闡述難免有疏漏和不足的地方,歡迎老師和評委指正。</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語言程序設(shè)計:1996,</p><p>  [5]陳伯時.液晶模塊資料.北京:機(jī)械工業(yè)出版社,1996</p><p>  [6]岳慶來.單片機(jī)教程.北京:機(jī)械工業(yè)出版社</p><p>  [7]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論