欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      LCD電子鐘程序(廣工單片機(jī)課程設(shè)計(jì))

      時(shí)間:2019-05-14 17:23:52下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《LCD電子鐘程序(廣工單片機(jī)課程設(shè)計(jì))》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《LCD電子鐘程序(廣工單片機(jī)課程設(shè)計(jì))》。

      第一篇:LCD電子鐘程序(廣工單片機(jī)課程設(shè)計(jì))

      #include

      #define uchar unsigned char

      #define uint unsigned int

      #define KEY_IO P3

      #define LCD_IO P0

      sbit LCD_RS = P2^0;

      sbit LCD_RW = P2^1;

      sbit LCD_EN = P2^2;

      sbit SPK = P1^2;

      sbit LED = P2^4;

      sbit KEY_0 = P3^7;

      sbit KEY_1 = P3^6;

      sbit KEY_2 = P3^5;

      sbit KEY_3 = P3^4;

      bit new_s, modify = 0;

      char t0, sec = 0, min = 0, hour = 0;

      char code LCD_line1[] = “I LOVE U”;

      char code LCD_line2[] = “Timer: 00:00:00 ”;char Timer_buf[] = “00:00:00”;

      char a,b,c,k = 0;

      //--------------------void delay(uint z)

      {

      uintx, y;

      for(x = z;x > 0;x--)

      for(y = 100;y > 0;y--);

      }//--------------------void W_LCD_Com(uchar com)//寫(xiě)指令 {

      LCD_RS = 0;

      LCD_IO = com;// LCD_RS和R/W都為低電平時(shí),寫(xiě)入指令

      LCD_EN = 1;delay(5);LCD_EN = 0;//用EN輸入一個(gè)高脈沖 }

      //--------------------void W_LCD_Dat(uchar dat)//寫(xiě)數(shù)據(jù)

      {LCD_RS = 1;LCD_IO = dat;// LCD_RS為高、R/W為低時(shí),寫(xiě)入數(shù)據(jù)LCD_EN = 1;delay(5);LCD_EN = 0;//用EN輸入一個(gè)高脈沖 }

      //--------------------void W_LCD_STR(uchar *s)//寫(xiě)字符串 {while(*s)W_LCD_Dat(*s++);}

      //--------------------

      void W_BUFF(void)//填寫(xiě)顯示緩沖區(qū)

      {Timer_buf[7] = sec % 10 + 48;Timer_buf[6] = sec / 10 + 48;Timer_buf[4] = min % 10 + 48;Timer_buf[3] = min / 10 + 48;Timer_buf[1] = hour % 10 + 48;Timer_buf[0] = hour / 10 + 48;W_LCD_STR(Timer_buf);}

      //--------------------

      uchar read_key(void){ucharx1, x2;KEY_IO = 255;x1 = KEY_IO;if(x1!= 255){delay(100);x2 = KEY_IO;if(x1!= x2)return 255;while(x2!= 255)x2 = KEY_IO;if else if(x1 == 0xbf)return 1;else if(x1 == 0xdf)return 2;else if(x1 == 0xef)return 3;else if(x1 == 0xf7)return 4;}return 255;} //--------------------

      void Init(){LCD_RW = 0;W_LCD_Com(0x38);delay(50);W_LCD_Com(0x0c);W_LCD_Com(0x06);W_LCD_Com(0x01);W_LCD_Com(0x80);W_LCD_STR(LCD_line1);W_LCD_STR(LCD_line2);

      TMOD = 0x01;//T0定時(shí)方式1TH0 = 0x4c;TR0 = 1;//啟動(dòng)T0

      PT0 = 1;//高優(yōu)先級(jí), 以保證定時(shí)精度

      ET0 = 1;EA = 1;}

      //--------------------

      void main(){uint i, j;uchar Key;Init();while(1){//

      if(new_s){ //如果出現(xiàn)了新的一秒, 修改時(shí)間

      new_s = 0;sec++;sec %= 60;if(!sec){min++;min %= 60;if(!min){ hour++;hour %= 24;}}W_BUFF();//寫(xiě)顯示

      W_LCD_Com(0xc0 + 7);(x1 == 0x7f)return 0;W_LCD_Com(0xC0);

      //

      if(!sec &&!min){ //整點(diǎn)報(bào)時(shí)

      for(i = 0;i < 200;i++){SPK = 0;for(j = 0;j < 100;j++);SPK = 1;for(j = 0;j < 100;j++);} }} //Key = read_key();//讀出按鍵

      switch(Key){//分別處理四個(gè)按鍵

      case0: if(KEY_0){min++;min %= 60;W_BUFF();break;}case1: if(KEY_1){hour++;hour %= 24;W_BUFF();break;}case2: if(KEY_2){ a=sec;b=min;c=hour;sec = 0, min = 0, hour = 0;}case3: if(KEY_3){sec=a+sec;if(sec>60){sec=sec-60;min++;}min=b+min;if(min>60){min=min-60;hour++;}hour=c+hour;if(hour>24){hour=hour-24;} }} }} //--------------------

      void timer0(void)interrupt 1//T0中斷函數(shù), 50ms執(zhí)行一次{TH0 = 0x4c;t0++;t0 %= 20;//20, 一秒鐘if(t0 == 0){new_s = 1;LED = ~LED;}if(modify)LED = 0;} K0分加一 K1時(shí)加一 K2秒表開(kāi)始

      K3秒表結(jié)束,恢復(fù)正常時(shí)間!

      第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)電子鐘

      課程設(shè)計(jì)任務(wù)書(shū)

      (指導(dǎo)教師填寫(xiě))

      課程設(shè)計(jì)名稱電子技術(shù)課程設(shè)計(jì)學(xué)生姓名專業(yè)班級(jí)設(shè)計(jì)題目數(shù)字鐘

      一、課程設(shè)計(jì)的任務(wù)和目的任務(wù):設(shè)計(jì)一臺(tái)能顯示“時(shí)”、“分”、“秒”的數(shù)字鐘,周期為24小時(shí);具有校時(shí)、正點(diǎn)報(bào)時(shí)功能。

      目的:培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)的能力,綜合設(shè)計(jì)能力,培養(yǎng)動(dòng)手能力及分析問(wèn)題、解決問(wèn)題的能力。

      二、設(shè)計(jì)內(nèi)容、技術(shù)條件和要求

      1.數(shù)字鐘可顯示“時(shí)”、“分”、“秒”,且“時(shí)”、“分”、“秒”分別用兩個(gè)數(shù)碼管顯示,計(jì)滿23小時(shí)60分鐘60秒,則全部清零。

      2.具有校時(shí)功能,時(shí)、分校時(shí)用1HZ的信號(hào)進(jìn)行,而秒較時(shí)用2HZ時(shí)鐘信號(hào)進(jìn)行。

      3.整點(diǎn)能自動(dòng)報(bào)時(shí)。要求報(bào)時(shí)聲響為四低一高,最后一響為整點(diǎn),前四聲用500HZ信號(hào)讓喇叭發(fā)聲,最后一聲用1000HZ信號(hào)。

      4.根據(jù)上述要求,畫(huà)出電路總框圖,簡(jiǎn)述各部分工作原理。

      5.進(jìn)行各部分電路的設(shè)計(jì),要求有分析過(guò)程、原理圖表示。

      6.對(duì)原理圖進(jìn)行仿真。

      7.在實(shí)驗(yàn)箱上組裝、調(diào)試。

      8.撰寫(xiě)設(shè)計(jì)總結(jié)報(bào)告。

      三、時(shí)間進(jìn)度安排

      第一周:理論設(shè)計(jì)。

      周一上午布置設(shè)計(jì)任務(wù),講解設(shè)計(jì)要求,安排答疑、實(shí)驗(yàn)時(shí)間;

      周三、周四下午課程設(shè)計(jì)答疑,其他時(shí)間學(xué)生查資料,做初步理論設(shè)計(jì);

      周五交設(shè)計(jì)初稿,由指導(dǎo)教師審查;

      第二周:仿真和安裝調(diào)試、撰寫(xiě)設(shè)計(jì)總結(jié)報(bào)告

      周一、二學(xué)生進(jìn)實(shí)驗(yàn)室做仿真實(shí)驗(yàn),并根據(jù)實(shí)驗(yàn)情況修正設(shè)計(jì)圖;

      周三至周五做插接線實(shí)驗(yàn),最后根據(jù)實(shí)驗(yàn)情況總結(jié)、撰寫(xiě)設(shè)計(jì)說(shuō)明書(shū)。

      四、主要參考文獻(xiàn)

      1.各種版本的數(shù)字電子技術(shù)基礎(chǔ)教材

      2.各種版本的電子技術(shù)課程設(shè)計(jì)指導(dǎo)書(shū)

      3.集成電路手冊(cè)

      指導(dǎo)教師簽字:年月日

      第三篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)-電子鐘-完整

      單片機(jī)課程設(shè)計(jì)

      題目

      專業(yè) 通信工程 班級(jí) 11級(jí)1班 學(xué)號(hào) 姓名

      電 子 鐘 設(shè) 計(jì)

      單片機(jī)原理與應(yīng)用課程設(shè)計(jì)

      電子鐘設(shè)計(jì)

      功能要求:

      1、設(shè)計(jì)一個(gè)電子時(shí)鐘,要求可以顯示時(shí)、分、秒,用戶可以設(shè)置時(shí)間。

      2、實(shí)現(xiàn)秒表功能。

      功能描述

      (1)

      時(shí)鐘。初始界面是時(shí)鐘顯示,按鍵S1是調(diào)時(shí)選位,按鍵S2是加數(shù)。根據(jù)不同的閃爍位置進(jìn)行調(diào)節(jié)。

      (2)

      年與日,星期。在初始狀態(tài)下,按下S2,則跳轉(zhuǎn),顯示年月日,5S后跳回初始界面。若在年月日界面再次按下S2,則再次跳轉(zhuǎn),顯示星期,幾秒后跳轉(zhuǎn)回初始界面。

      (3)

      秒表。在初始界面下,按下S3,則跳轉(zhuǎn),進(jìn)入秒表。秒表功能鍵如下:S1 退出秒表;S2 停止開(kāi)始計(jì)時(shí);S3 秒表清零。

      (4)

      鬧鐘。在設(shè)置中設(shè)置好時(shí)間,最高位設(shè)為“1”則打開(kāi)鬧鐘。最高位設(shè)為“0”則關(guān)閉鬧鐘。在鬧鐘響是,按S3進(jìn)行關(guān)鬧鐘。

      工作原理 ? 硬件

      采用80C51系列單片機(jī)作為CPU,P0口作為數(shù)據(jù)線,通過(guò)鎖存器進(jìn)行段選和位選,是數(shù)碼管不斷地顯示數(shù)字。數(shù)碼管的顯示是掃描式。(1)

      本電子鐘用的單片機(jī)型號(hào)是STC89C516RD+。P0口作為段選和位選的數(shù)據(jù)線。P10口為段選寄存器的使能端。P11口為位選寄存器的使能端。晶振采用的12MHz晶振。要求頻率穩(wěn)定。

      (2)

      本電子鐘用的是共陰極數(shù)碼管。從左到右,第1,2位是秒位;第4,5位是分位;第7,8位是時(shí)位。第3,6位是“--”。

      (3)

      通過(guò)單片機(jī)的P0口,先對(duì)數(shù)碼管進(jìn)行位選,即在位鎖存器使能是將P0口數(shù)據(jù)進(jìn)行鎖存。再通過(guò)段鎖存器將P0口送來(lái)的段數(shù)據(jù)進(jìn)行鎖存。此時(shí)數(shù)碼管的第一位顯示數(shù)字。同樣的步驟進(jìn)行第二位顯示。以非常快的速度進(jìn)行,由于人眼的余輝效應(yīng),會(huì)看到8位數(shù)碼管一起亮。即可以顯示時(shí)間。通過(guò)單片機(jī)的內(nèi)部TO,T1的計(jì)數(shù)。即可以實(shí)現(xiàn)時(shí)鐘,秒表等功能。(4)電路圖如下:

      ? 軟件

      程序代碼包括三部分:1.bujian(部件庫(kù))2.main(主函數(shù))3.H(頭文件庫(kù))。一 .bujian(部件庫(kù))(1)xianshi.c #include #include #define m 2 Unsigned char code t[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void led_s(unsigned int s){ p10=1;p10=0;p11=1;P0=0x7f;

      //數(shù)碼管秒個(gè)位

      P0=t[s%10];p11=0;P0=0xff;delay(m);p10=1;p10=0;p11=1;P0=0xbf;p11=0;

      //消隱

      P0=t[s/10];

      //消隱 //數(shù)碼管秒十位

      P0=0xff;delay(m);} void led_f(unsigned int s){ p10=1;// P0=t[s%10];p10=0;p11=1;P0=0xef;

      p11=0;

      P0=0xff;delay(m);p10=1;

      P0=t[s/10];p10=0;p11=1;P0=0xf7;p11=0;

      P0=0xff;delay(m);} void led_h(unsigned int s){

      // p10=1;P0=t[s%10];p10=0;p11=1;P0=0xfd;

      p11=0;// P0=0xff;delay(m);p10=1;

      P0=t[s/10];p10=0;p11=1;P0=0xfe;p11=0;

      數(shù)碼管分個(gè)位 //消隱

      //數(shù)碼管分十位

      //消隱

      數(shù)碼管時(shí)個(gè)位

      消隱

      //數(shù)碼管時(shí)十位

      //消隱

      P0=0xff;delay(m);}

      void line(void){ p10=1;P0=0x40;p10=0;p11=1;P0=0xfb;delay(m);p11=0;

      p10=1;P0=0x40;p10=0;p11=1;P0=0xdf;p11=0;delay(m);}

      //消隱

      P0=0xff;

      //數(shù)碼管“---”

      //消隱

      P0=0xff;

      //數(shù)碼管“---”

      (2)miaobiao.c #include #include

      #include extern mms,ms,mf,ss;void miaobiao(void){ TR1=1;while(1){ led_s(mms);led_f(ms);line();led_h(mf);if(s2==0){ while(!s2){led_s(mms);led_f(ms);line();led_h(mf);} if(ss==1){TR1=0;ss=!ss;}else {TR1=1;ss=!ss;} } if(s1==0){ while(!s1){led_s(mms);led_f(ms);line();led_h(mf);} TR1=0;break;} if(s3==0)

      { while(!s3){led_s(mms);led_f(ms);line();led_h(mf);} TR1=0;mms=0;ms=0;mf=0;} } }

      (3)Delay.c #include

      void delay(unsigned int a)

      { unsigned char l;

      while(a--)

      {for(l=0;l<100;l++);} }

      (4)gongneng.c #include

      #include #include extern h,f,s,n,y,r,nian,xing;extern ns,nf,nh;void gongneng(){ unsigned int aa=0,shanshuo=0,x=1,bb;

      if(s2==0){ delay(3);if(s2==0)while(!s2){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);}

      // while(1){ led_s(r);delay(2);led_f(y);delay(2);line();led_h(nian);delay(2);aa++;if(s2==0)

      { while(!s2)

      {

      led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);}

      //星期顯示

      while(1)

      {led_f(xing);delay(2);

      bb++;

      if(bb==100){bb=0;break;}

      日期顯示 }

      }

      if(aa==100)

      line();led_f(y);delay(1);led_h(nian);delay(1);

      } } if(s1==0){ delay(3);if(s1==0){

      switch(x){ case 1 : if(shanshuo==1){led_s(s);} line();led_f(f);delay(2);led_h(h);delay(2);break;case 2 :led_s(s);if(shanshuo==1){led_f(f);} delay(2);line();led_h(h);delay(2);break;case 3 : led_s(s);led_f(f);delay(2);line();if(shanshuo==1){led_h(h);} delay(2);break;case 4 : if(shanshuo==1){led_s(r);} led_f(y);delay(2);line();led_h(nian);delay(2);break;case 5 : led_s(r);if(shanshuo==1){led_f(y);} delay(2);line();led_h(nian);delay(2);break;case 6 :led_s(r);led_f(y);delay(2);line();if(shanshuo==1){led_h(nian);} delay(2);break;case 7 :if(shanshuo==1){led_f(xing);delay(5);} break;case 8 :if(shanshuo==1){led_s(nf);} line();led_f(nh);delay(2);led_h(ns);delay(2);break;case 9 :led_s(nf);if(shanshuo==1){led_f(nh);} delay(2);line();led_h(ns);delay(2);break;case 10:led_s(nf);led_f(nh);delay(2);line();if(shanshuo==1){led_h(ns);} delay(2);break;default : break;}

      aa++;if(s2==0){ while(!s2){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }

      switch(x)

      { case 1 : s++;if(s>59)s=0;break;

      while(!s1);while(1)

      { if(x==1||x==2||x==3)TR0=0;else TR0=1;if(aa==20){shanshuo=!shanshuo;aa=0;}

      { break;} { led_s(r);delay(1);

      } if(s1==0)

      case 2 :

      }

      f++;if(f>59)f=0;break;

      case 3 : h++;if(h>23)h=0;break;case 4 : r++;if(r>31)r=1;break;case 5 : y++;if(y>12)y=1;break;case 6 : case 7 :

      nian++;if(nian>20)nian=10;break;xing++;if(xing>7)xing=1;break;

      case 8 : nf++;if(nf>59)nf=0;break;case 9 : nh++;if(nh>23)nh=0;break;case 10: ns=!ns;break;

      default: break;{while(!s1){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }

      x++;if(x>10){ x=0;TR0=1;break;} } } } } } } 二.H(頭文件庫(kù))(1)Delay.h #ifndef _DELAY_H__

      void led_s(unsigned int s);void led_h(unsigned int s);#define _DELAY_H__ void delay(unsigned int a);#endif(2)xianshi.h #ifndef _XIANSHI_H__ #define _XIANSHI_H__

      void led_f(unsigned int s);void line(void);#endif(3)gongneng.h

      #ifndef _DONGNENG_H__ #define _GONGNENG_H__ void gongneng(void);#endif(4)miaobiao.h

      #ifndef _MIAOBIAO_H__ #define _MIAOBIAO_H__ void miaobiao(void);#endif(5)dingyi.h #ifndef _DINGYI_H__ #define _DINGYI_H__ sbit s1=P2^4;

      sbit s2=P2^5;

      sbit s3=P2^6;sbit p10=P1^0;sbit p11=P1^1;sbit p12=P1^2;#endif

      //流水燈使能端 //按鍵1 //按鍵2 //按鍵3 sbit p37=P3^7;//蜂鳴器時(shí)能

      三.Main(主函數(shù))(1)main.c #include #include #include #include #include unsigned int h,m,f,s,n,y=10,r=12,nian=13,xing=2,mms,ms,mf;unsigned int ns=0,nf,nh,ll=0;unsigned int ss=1;void main(){ P0=0xff;p12=0;TMOD=0x12;EA=1;

      ET0=1;TH0=6;TR0=1;

      //關(guān)閉流水燈

      ET1=1;TH1=(65535-5000)/256;TL1=(65535-5000)%256;TR1=0;while(1){ if((s3==0)&&(ns==0)){while(!s3);miaobiao();} if(s1==0||s2==0)gongneng();else { led_s(s);line();led_f(f);line();led_h(h);} if((f==nf)&&(h==nh)&&(ns==1))ll=1;else ll=0;} } void zhongduan(void)interrupt 1 {

      if((ll==1)&&(ns==1))

      { p37=!p37;if((s3==0)&&(ns==1)){ while(!s3)ns=0;p37=1;} } n++;if(n==5000){n=0;s++;if(s==60){ s=0;f++;} if(f==60){ f=0;h++;}

      if(h==24){ h=0;r++;xing++;} switch(r){ case 29 : if(nian/4==0){if(y==2)r=0;} y++;case 31 : if(y==4||y==6||y==9||y==11){ } if(xing>7)xing=1;if(y==13){ y=1;nian++;} } } default : break;

      break;case 30 : if((nian/4)!=0){if(y==2){ r=0;y++;}} break;

      r=0;y++;} break;case 32 : if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){r=0;y++;} break;void zhongduan1(void)interrupt 3

      {

      TH1=(65535-5000)/256;

      m++;TL1=(65535-5000)%256;if(m==2){mms++;m=0;if(mms>=100){ mms=0;ms++;} if(ms==60){ ms=0;mf++;} if(mf==60){ mf=0;} } }

      參考文獻(xiàn):

      單片機(jī)中級(jí)教程(第2版)、單片機(jī)語(yǔ)言C51程序設(shè)計(jì)(趙文博)感想: 這次課程設(shè)計(jì)整體來(lái)說(shuō)是成功的,但我也發(fā)現(xiàn)了自己許多錯(cuò)漏和不足之處。譬如,最簡(jiǎn)單的程序沒(méi)寫(xiě)好就想著寫(xiě)更復(fù)雜的程序,做事還是缺乏耐性和細(xì)心,當(dāng)有時(shí)遇到問(wèn)題時(shí),總覺(jué)得無(wú)從下手,對(duì)于課本上的知識(shí)不能很好的組織起來(lái)。在編寫(xiě)各功能程序時(shí),特別是后來(lái)增添的比較復(fù)雜的程序

      第四篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)電子鐘源程序

      ORG0000H

      LJMPMAIN

      ORG001BH

      LJMPLOOP

      ORG0100H

      MAIN:MOV21H,#17H

      MOV22H,#3AH

      MOV23H,#00H;設(shè)定時(shí)間初值

      MOV36H,#10

      MOV39H,#10

      MOVR7,#14H;循環(huán)20次50*20=1000msMOVDPTR,#0F003H

      MOVA,#10000000B;8255命令口地址MOVX@DPTR,A

      MOVTMOD,#10H

      MOVTH1,#3CH

      MOVTL1,#0B0H;設(shè)定計(jì)時(shí)初值

      MOVIE,#88H;設(shè)定中斷運(yùn)行位

      SETBTR1

      LOP:LCALLSTART

      LCALLDSN;調(diào)用顯示程序

      LJMPLOP

      LOOP:MOVTH1,#3CH;重裝時(shí)間初值

      MOVTL1,#0B0H

      DJNZR7,LOOP1;循環(huán)結(jié)束

      MOVR7,#14H

      INC23H

      MOVA,23H

      CJNEA,#3CH,LOOP1

      MOV23H,#00H

      INC22H

      MOVA,22H

      CJNEA,#3CH,LOOP1

      MOV22H,#00H

      INC21H

      MOVA,21H

      CJNEA,#18H,LOOP1

      MOV21H,#00H

      MOV22H,#00H

      MOV23H,#00H

      LOOP1: RETI

      START: MOVR1,#21H;將小時(shí)放在兩個(gè)位地址中MOVA,@R1

      MOVB,#0AH

      DIVAB

      MOV3BH,A

      MOV3AH,B

      INCR1

      MOVA,@R1

      MOVB,#0AH

      DIVAB

      MOV38H,A

      MOV37H,B

      INCR1

      MOVA,@R1

      MOVB,#0AH

      DIVAB

      MOV35H,A

      MOV34H,B

      RET

      DSN:MOVR0,#34H;顯示子程序;顯示數(shù)據(jù)緩沖區(qū)首址送R0

      MOVR3,#7FH;使顯示器最左邊位亮

      LP1:MOVDPTR,#0F000H;數(shù)據(jù)指針指向A口

      MOVA,R3

      MOVX@DPTR,A;送掃描值

      INCDPTR;數(shù)據(jù)指針指向B口MOVA,@R0;取欲顯示數(shù)據(jù)的字形碼表位

      PUSHDPH

      PUSHDPL;顯示查表指令地址偏移量

      MOVDPTR,#TAB

      MOVCA,@A+DPTR;取出字形碼

      POPDPL

      POPDPH

      MOVX@DPTR,A;送出顯示

      ACALLDELAY;調(diào)用延時(shí)子程序

      INCR0;指向下一個(gè)顯示緩沖區(qū)地址MOVA,R3

      JNBACC.0,LP2;掃描到第八個(gè)顯示器?

      RRA;未到,掃描碼右移一位

      MOVR3,A

      AJMPLP1

      LP2:RET

      TAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H

      DB0BEH,0E0H,0FEH,0F6H,02H,0DFH

      DELAY: MOVR5,#05H;延時(shí)子程序

      DL1:MOVR6,#0FFH

      DL2:DJNZR6,DL2

      DJNZR5,DL1RET

      END

      第五篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)電子鐘設(shè)計(jì)

      單片機(jī)課程設(shè)計(jì)電子鐘設(shè)計(jì)

      目錄

      一、摘要

      二、設(shè)計(jì)任務(wù)

      三、基本原理

      數(shù)碼管顯示可以用靜態(tài)顯示或動(dòng)態(tài)顯示方法。靜態(tài)顯示需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜,時(shí)鐘顯示用四個(gè)數(shù)碼管。動(dòng)態(tài)顯示相對(duì)簡(jiǎn)單,但需動(dòng)態(tài)掃描,掃描頻率要大于人視覺(jué)暫留頻率,信息看起來(lái)才穩(wěn)定。譯碼方式可分為軟件譯碼和硬件譯碼,軟件譯碼通過(guò)譯碼程序查的顯示信息的字段碼;硬件譯碼通過(guò)硬件譯碼器得到顯示信息的字段碼,實(shí)際中通常采用軟件譯碼。

      在具體處理時(shí),定時(shí)器計(jì)數(shù)器采用中斷方式工作,對(duì)時(shí)鐘的形成在中斷服務(wù)程序中實(shí)現(xiàn)。在主程序中只需對(duì)定時(shí)器計(jì)數(shù)器初始化、調(diào)用顯示子程序和控制子程序。另外,為了使用便,設(shè)計(jì)了簡(jiǎn)單的按鍵,可以通過(guò)按鍵實(shí)現(xiàn)時(shí)、分的調(diào)整,這樣在主程序中就加入了按鍵設(shè)置子程序。

      四、編程算法思路

      五、程序流程圖

      六、硬件單元設(shè)計(jì)

      七、軟件單元設(shè)計(jì)

      八、調(diào)試結(jié)果分析

      九、設(shè)計(jì)總結(jié)及心得體會(huì)

      十、參考文獻(xiàn)

      一設(shè)計(jì)任務(wù)

      1、基本任務(wù):利用定時(shí)器/計(jì)數(shù)器中斷和靜態(tài)顯示或動(dòng)態(tài)顯示,實(shí)現(xiàn)電子時(shí)鐘的時(shí)分秒精確走時(shí)和校準(zhǔn)

      。時(shí)間顯示用四個(gè)數(shù)碼管分別顯示時(shí)、分、秒用點(diǎn)表示,在時(shí)和分的中間閃動(dòng),時(shí)間顯示格式(18:49)

      時(shí)間校準(zhǔn)用2個(gè)鍵實(shí)現(xiàn):一個(gè)鍵K1作移位選擇(選中要修改的位,選中的位用閃爍指示),一個(gè)鍵K2做加1(對(duì)選中的位進(jìn)行加1修改)。

      2、功能增強(qiáng)型任務(wù):在基本任務(wù)的基礎(chǔ)上加上日歷功能、準(zhǔn)時(shí)報(bào)時(shí)功能和跑表功能

      (1)日歷功能:能實(shí)現(xiàn)時(shí)、分、秒和年、月、日計(jì)時(shí),增加1個(gè)按鍵控制分3屏例如顯開(kāi)始的第1屏默認(rèn)顯示“時(shí)、分、秒”四位+秒點(diǎn),按下K3鍵顯示“月和日”四位,再按下課K3鍵顯示“年份”四位,再按下K3鍵顯示“時(shí)、分、秒”,依次類推。程序要能處理閏年、閏月功能。

      (2)準(zhǔn)點(diǎn)報(bào)時(shí)功能:可以在增加一個(gè)按鍵K4設(shè)計(jì)具有鬧鐘功能,實(shí)現(xiàn)定點(diǎn)報(bào)時(shí)。具體操作是:按下

      K4鍵,進(jìn)入鬧鐘設(shè)置功能,再通過(guò)K1、K2鍵來(lái)完成定點(diǎn)報(bào)警時(shí)間的設(shè)置。

      (3)跑表功能:再增加一個(gè)按鍵K5設(shè)計(jì)跑表功能,實(shí)現(xiàn)啟動(dòng)毫秒計(jì)數(shù),相當(dāng)與田徑運(yùn)動(dòng)比賽的跑

      表工作。

      三基本原理

      軟件時(shí)鐘時(shí)利用單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器來(lái)實(shí)現(xiàn)的,它的過(guò)程如下:首先定單片機(jī)內(nèi)部的一個(gè)定時(shí)器/計(jì)數(shù)器工作于定時(shí)方式,對(duì)機(jī)器周期形成基準(zhǔn)時(shí)間,然后用另一個(gè)定時(shí)器/計(jì)數(shù)器或軟件計(jì)數(shù)的方法對(duì)基準(zhǔn)時(shí)間計(jì)數(shù)形成秒,秒計(jì)60次形成分,分計(jì)60次形成小時(shí),小時(shí)計(jì)24次則計(jì)滿一天。然后通過(guò)數(shù)碼管把它們的內(nèi)容在相應(yīng)位置顯示出來(lái)即可。

      四編程算法思路

      1、主程序的設(shè)計(jì):串行口工作方式0,定時(shí)器/計(jì)數(shù)器1工作在方式1進(jìn)行初始化,然后通過(guò)循環(huán)(調(diào)用顯示子程序)等待定時(shí)中斷的到來(lái)。

      2、按鍵的控制:KEY1控制時(shí)的調(diào)節(jié),kEY2控制分的調(diào)節(jié),KEY3控制時(shí)、分定型

      3、中斷服務(wù)程序的設(shè)計(jì):中斷服務(wù)程序主要功能是實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)處理。

      4、時(shí)、分、秒計(jì)時(shí)的實(shí)現(xiàn):秒計(jì)時(shí)時(shí)采用中斷方式進(jìn)行溢出次數(shù)的累計(jì)得到的。從秒到分,從分到時(shí)可通過(guò)軟件的累加和比較到位方法來(lái)實(shí)現(xiàn)。要求每滿1秒,則“秒”單元中的內(nèi)容加1;“秒”單元每滿60,則“秒”單元清0,同時(shí)“分”單元中的內(nèi)容加1;“分”單元每滿60,則“分”單元清0,同時(shí)“時(shí)”單元加1?!皶r(shí)”單元每滿24,則將“時(shí)”單元清0。

      5、顯示子程序:采用數(shù)碼管靜態(tài)顯示來(lái)顯示時(shí)鐘的走動(dòng)

      6,延時(shí)子程序:用來(lái)實(shí)現(xiàn)按鍵操控延時(shí)和實(shí)現(xiàn)整點(diǎn)12時(shí)報(bào)時(shí)

      五程序流程圖

      六硬件單元設(shè)計(jì)

      1、電路總設(shè)計(jì)圖

      2、AT89C51芯片

      七軟件單元設(shè)計(jì)

      1、資源分配:定時(shí)器T1,P1.6為調(diào)整時(shí)鐘,P1.5為調(diào)整分鐘,P1.4為控制調(diào)整

      30H秒顯示單元,31H分顯示單元,32H時(shí)顯示單元,08H放分調(diào)整標(biāo)

      志,09H放時(shí)調(diào)整標(biāo)志,0AH放閃爍標(biāo)志

      2、程序清單(加注釋)

      八調(diào)試結(jié)果分析

      在實(shí)驗(yàn)操作過(guò)程中,將所寫(xiě)好的程序打入計(jì)算機(jī)內(nèi),通過(guò)編譯檢查其是否有錯(cuò)誤,如有錯(cuò)誤將其改正,直至無(wú)誤后下載仿真器,實(shí)現(xiàn)運(yùn)行。觀察實(shí)驗(yàn)箱上的數(shù)碼管顯示,判斷其是否為所需結(jié)果,如果與所要求的有差別,需繼續(xù)調(diào)試,重新修改程序,檢查硬件設(shè)施不斷地調(diào)試,不斷地檢查直至得到所要的結(jié)果。在調(diào)試過(guò)程中,開(kāi)始運(yùn)行時(shí)能夠?qū)崿F(xiàn)時(shí)鐘的顯示,但是無(wú)法實(shí)現(xiàn)其閃爍功能,后經(jīng)不斷調(diào)試修改及同學(xué)的幫助最終實(shí)現(xiàn)該功能,能夠達(dá)到時(shí)鐘顯示調(diào)節(jié)的基本要求,還可以實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)。但在增加其功能顯示年月時(shí)又出現(xiàn)一定的問(wèn)題,未能實(shí)現(xiàn)該功能,程序存在一定的不足性,需繼續(xù)完善,實(shí)現(xiàn)更多的功能

      九設(shè)計(jì)總結(jié)及心得體會(huì)

      經(jīng)過(guò)兩天的單片機(jī)課程設(shè)計(jì),終于完成了我的電子時(shí)鐘的設(shè)計(jì),雖然沒(méi)有完全達(dá)到設(shè)計(jì)要求,但從心底里說(shuō),還是高興的,畢竟這次設(shè)計(jì)把一些基本功能都做了出來(lái),只是一些增強(qiáng)型功能未能實(shí)現(xiàn)。

      在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題,雖然以前還做過(guò)一些實(shí)驗(yàn)但這次設(shè)計(jì)真的讓我長(zhǎng)進(jìn)了很多單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫(xiě)過(guò)幾次程序,但我覺(jué)的寫(xiě)好一個(gè)程序并不是一件簡(jiǎn)單的事,要有通篇的全局思想考慮問(wèn)題。在操作的過(guò)程中,出現(xiàn)許多錯(cuò)誤,都是在連接處不能夠上下連貫正確運(yùn)行,還需繼續(xù)努力。有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。

      從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫(xiě)與讀的過(guò)程中才能提高,這就是我在課程設(shè)計(jì)中的最大收獲,同時(shí),要把所學(xué)只是靈活應(yīng)用才能真正領(lǐng)悟其中的意義,加深對(duì)它的理解與掌握。還有,通過(guò)此次的操作也使我的實(shí)踐操作能力得到了進(jìn)一步的提高。

      十參考文獻(xiàn)

      【1】張毅剛,彭喜元,董繼成。單片機(jī)原理及應(yīng)用。北京:高等教育出版社,2003

      【2】周航慈。單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù)(修訂版)。北京:北京航空航天大學(xué)出版社,2002

      【3】萬(wàn)光毅等。單片機(jī)實(shí)驗(yàn)與實(shí)踐教程。北京:北京航空航天大學(xué)出版社,2003

      【4】何立民,I2C總線應(yīng)用系統(tǒng)設(shè)計(jì)。北京:北京航空航天大學(xué)出版社,2002

      【5】周航慈,朱兆優(yōu),李躍忠。智能儀器原理與設(shè)計(jì)。北京:北航大學(xué)出版社,2005

      下載LCD電子鐘程序(廣工單片機(jī)課程設(shè)計(jì))word格式文檔
      下載LCD電子鐘程序(廣工單片機(jī)課程設(shè)計(jì)).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦