單片機(jī)課程設(shè)計(jì)---倒數(shù)計(jì)數(shù)器_第1頁(yè)
已閱讀1頁(yè),還剩11頁(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>  1引言</b></p><p>  本設(shè)計(jì)利用AT89C51單片機(jī)結(jié)合字符型LCD顯示器設(shè)計(jì)一個(gè)簡(jiǎn)易的倒數(shù)計(jì)數(shù)器,可用來(lái)煮方便面、煮開(kāi)水或小睡片刻等。做一小段時(shí)間倒計(jì)數(shù),當(dāng)?shù)褂?jì)數(shù)為0時(shí),則發(fā)出一段音樂(lè)聲響,通知倒計(jì)數(shù)終了。</p><p><b>  2設(shè)計(jì)方案及原理</b></p><p>

2、  設(shè)計(jì)一個(gè)簡(jiǎn)易的倒數(shù)計(jì)數(shù)器。當(dāng)鍵盤(pán)按鍵有按下時(shí),調(diào)整計(jì)數(shù)器值,LCD顯示新值。當(dāng)復(fù)位鍵有按下時(shí),計(jì)數(shù)器復(fù)位為初值,重新倒計(jì)數(shù)。當(dāng)計(jì)數(shù)器值倒計(jì)為0時(shí),蜂鳴器發(fā)出聲音,計(jì)數(shù)器停止倒計(jì),程序結(jié)束。</p><p>  具體過(guò)程:按K1鍵,則在LCD上顯示出設(shè)置畫(huà)面。此時(shí),若:</p><p>  (1) 按K2鍵---增加倒計(jì)數(shù)的時(shí)間1分鐘。</p><p>  (2

3、) 按K3鍵---減少倒計(jì)數(shù)的時(shí)間1分鐘。</p><p>  (3) 按K4鍵---設(shè)置完成。</p><p><b>  3硬件設(shè)計(jì)</b></p><p><b>  3.1 設(shè)計(jì)說(shuō)明</b></p><p>  設(shè)計(jì)的功能:輸出時(shí)間,按下鍵就開(kāi)始計(jì)時(shí),并將時(shí)間顯示在LCD1602顯示器上。當(dāng)

4、倒計(jì)數(shù)為0時(shí),蜂鳴器就發(fā)出音樂(lè)聲響。該計(jì)數(shù)器系統(tǒng)主要由計(jì)數(shù)器模塊、LCD顯示器模塊、蜂鳴器模塊、鍵盤(pán)模塊、復(fù)位模塊等部分組成。總體設(shè)計(jì)方框圖如圖所示。</p><p>  圖1 總體設(shè)計(jì)方框圖</p><p><b>  3.2電路原理圖</b></p><p>  電路原理圖連接如圖2所示</p><p><b&

5、gt;  圖1 電路原理圖</b></p><p><b>  4軟件設(shè)計(jì)</b></p><p>  音樂(lè)倒數(shù)計(jì)數(shù)器程序流程圖包括主程序流程圖,LCD顯示流程圖以及按鍵流程圖,各流程圖如圖2,圖3,圖4所示。</p><p><b>  圖2 主程序流程圖</b></p><p>  

6、圖3 LCD顯示流程圖 圖4 按鍵流程圖 </p><p><b>  5系統(tǒng)的仿真與調(diào)試</b></p><p>  本課程設(shè)計(jì)調(diào)試結(jié)果詳見(jiàn)附錄</p><p><b>  6總結(jié)</b></p><p>  經(jīng)過(guò)設(shè)計(jì),簡(jiǎn)

7、單帶有LCD顯示的音樂(lè)倒數(shù)計(jì)數(shù)器完成,系統(tǒng)基本功能基本實(shí)現(xiàn),測(cè)試運(yùn)行也正常。該系統(tǒng)完成了計(jì)數(shù)與報(bào)警的功能。</p><p>  當(dāng)然這個(gè)系統(tǒng)還存在許多有待完善的地方:</p><p>  (1) 功能相對(duì)較少,有待于添加,如時(shí)鐘與鬧鐘功能。</p><p>  (2) 界面設(shè)計(jì)不夠精致完美。</p><p><b>  參考文獻(xiàn)&l

8、t;/b></p><p>  [1] 康華光.陳大欽.電子技術(shù)基礎(chǔ)—模擬部分[M].北京:高等教育出版社,2005.</p><p>  [2] 李朝青.單片機(jī)原理及接口技術(shù)[M].北京:航空航天大學(xué)出版社,2005.</p><p>  [3] 蘭吉昌.51單片機(jī)應(yīng)用設(shè)計(jì)百例[M].北京:化學(xué)工業(yè)出版社,2009.</p><p>

9、<b>  附錄</b></p><p><b>  1調(diào)試結(jié)果圖</b></p><p><b>  圖2調(diào)試結(jié)果圖</b></p><p>  2 程序關(guān)鍵問(wèn)題的部分代碼</p><p>  #include<reg52.h></p><p&

10、gt;  #include<intrins.h></p><p>  #define time 100</p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uint t,flag,flag0,flag1,flag2,

11、flag3,flag4,flag5,minute,second=60;</p><p>  uchar num,j,i,k=0;</p><p>  uchar code table[]="TIME 00:00";</p><p>  uint code table1[]={64580,64684,64777,64820,64898,6496

12、8,65030};</p><p>  sbit key1=P1^0;</p><p>  sbit key2=P1^1;</p><p>  sbit key3=P1^2;</p><p>  sbit key4=P1^3;</p><p>  sbit key5=P1^4;</p><p>

13、  sbit P1_5=P1^5;</p><p>  sbit RS=P2^0;</p><p>  sbit RW=P2^1;</p><p>  sbit E=P2^2;</p><p>  sbit led_red=P2^3;</p><p>  void write_time(uint addr,uint d

14、ate);</p><p>  /////////延時(shí)函數(shù)///////</p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0

15、;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  ///////延時(shí)1S////////////</p><p>  void delay1(void)</p><p><b>  {</b&g

16、t;</p><p>  uchar a,b,c;</p><p>  for(c=13;c>0;c--)</p><p>  for(b=247;b>0;b--)</p><p>  for(a=142;a>0;a--);</p><p><b>  _nop_;</b><

17、;/p><p><b>  }</b></p><p>  ////////1602寫(xiě)命令函數(shù)//////</p><p>  void write_com(uchar com)</p><p><b>  {</b></p><p><b>  RS=0;</b

18、></p><p><b>  P3=com;</b></p><p><b>  delay(5);</b></p><p><b>  E=1;</b></p><p>  delay(10);</p><p><b>  E=0;&

19、lt;/b></p><p><b>  }</b></p><p>  //////1602寫(xiě)數(shù)據(jù)函數(shù)//////</p><p>  void write_date(uchar date)</p><p><b>  {</b></p><p><b> 

20、 RS=1;</b></p><p><b>  P3=date;</b></p><p><b>  delay(5);</b></p><p><b>  E=1;</b></p><p>  delay(10);</p><p><

21、;b>  E=0;</b></p><p><b>  }</b></p><p>  //////按鍵1處理函數(shù)///////</p><p>  void KEY1()</p><p><b>  {</b></p><p>  while(flag1)

22、</p><p><b>  {</b></p><p>  if(key2==0)</p><p><b>  {</b></p><p>  delay(time);</p><p>  if(key2==0)</p><p><b> 

23、 { </b></p><p>  if(minute<=60)</p><p>  minute=minute+1;</p><p>  write_time(7,minute);</p><p><b>  }</b></p><p><b>  }</b&

24、gt;</p><p>  if(key3==0)</p><p><b>  {</b></p><p>  delay(time);</p><p>  if(key3==0)</p><p><b>  {</b></p><p>  if(mi

25、nute>0)</p><p>  minute=minute-1;</p><p>  write_time(7,minute);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key4==0||key5==

26、0)</p><p><b>  {</b></p><p>  delay(150);</p><p>  if(key4==0||key5==0)</p><p><b>  {</b></p><p><b>  flag1=0;</b></

27、p><p><b>  flag =1;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b&g

28、t;</p><p><b>  }</b></p><p>  void write_time(uint addr,uint date)</p><p><b>  {</b></p><p>  uint ge,shi;</p><p>  ge=date%10;<

29、/p><p>  shi=date/10;</p><p>  write_com(0x80+addr);</p><p>  write_date(0x30+shi);</p><p>  write_date(0x30+ge);</p><p>  if(addr==7&&date==0)</p&

30、gt;<p><b>  j=1;</b></p><p>  if(j==1&&addr==10&&date==0)</p><p><b>  {</b></p><p><b>  flag0=1;</b></p><p>&

31、lt;b>  TR0=0;</b></p><p><b>  TR1=1;</b></p><p><b>  flag5=1;</b></p><p><b>  }</b></p><p><b>  }</b></p>

32、<p>  //////初始化函數(shù)//////</p><p>  void init()</p><p><b>  { </b></p><p><b>  P1=0xff;</b></p><p><b>  RW=0;</b></p><

33、;p>  write_com(0x38);</p><p>  write_com(0x0c);</p><p>  write_com(0x06);</p><p>  write_com(0x80);</p><p>  TMOD=0x11;</p><p>  TH0=(65536-50000)/256;&

34、lt;/p><p>  TL0=(65536-50000)%256;</p><p><b>  TH1=0xfc;</b></p><p><b>  TL1=0x44;</b></p><p><b>  ET1=1;</b></p><p><b

35、>  ET0=1;</b></p><p><b>  //TR1=1;</b></p><p><b>  //TR0=1;</b></p><p><b>  EA=1;</b></p><p><b>  flag0=1;</b>

36、;</p><p>  for(num=0;num<12;num++)</p><p><b>  {</b></p><p>  write_date(table[num]);</p><p>  delay(20);</p><p><b>  }</b></

37、p><p><b>  }</b></p><p>  void write_time0()</p><p><b>  {</b></p><p>  minute=minute-1;</p><p>  write_time(7,minute);</p><

38、;p>  write_time(10,59);</p><p>  flag=0; </p><p><b>  }</b></p><p>  void counter()</p><p><b>  {</b></p><p><b>  if(t=

39、=20)</b></p><p><b>  {</b></p><p>  led_red=led_red^1;</p><p>  if(flag==1)</p><p>  write_time0();</p><p><b>  t=0;</b></

40、p><p>  second=second-1;</p><p>  write_time(10,second); </p><p>  if(k==1&&second==59)</p><p><b>  {</b></p><p>  if(minute>0) <

41、/p><p>  minute=minute-1;</p><p>  write_time(7,minute);</p><p><b>  }</b></p><p>  if(second==0)</p><p><b>  {</b></p><p&

42、gt;<b>  k=1;</b></p><p>  second=60;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  int mai

43、n()</p><p><b>  {</b></p><p><b>  init();</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  while(fla

44、g0)</p><p><b>  start();</b></p><p>  counter();</p><p>  while(flag5)</p><p><b>  {</b></p><p><b>  delay1();</b></

45、p><p><b>  i++;</b></p><p><b>  if(i>7)</b></p><p><b>  i=0;</b></p><p><b>  }</b></p><p><b>  }</

46、b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  void inter0() interrupt 1</p><p><b>  {</b></p><p>  TH0=(6

47、5536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  t++;</b></p><p><b>  }</b></p><p>  void initer1() interrupt 3</p><p>

48、<b>  {</b></p><p>  TH1=table1[i]/256;</p><p>  TL1=table1[i]%256;</p><p>  P1_5=~P1_5;</p><p>  if(key5==0)</p><p><b>  {</b></

49、p><p>  delay(100);</p><p>  if(key5==0)</p><p><b>  {</b></p><p><b>  TR1=0;</b></p><p><b>  flag5=0;</b></p><

溫馨提示

  • 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)論