久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6203|回復: 2
打印 上一主題 下一主題
收起左側

DS1302與數碼管設計的單片機電子表課程設計

[復制鏈接]
跳轉到指定樓層
樓主
你們可以看看,我也做的不太哈

課程設計任務書

課程名稱:單片機原理與應用
設計題目C51系列單片機時()
               
業:電子信息工程班級:
學生姓名::
起迄日期:
指導教師: 劉國亮

Protues仿真電路
電子鐘功能
日期顯示
鬧鐘顯示及鬧鐘開關顯示位  右側1為鬧鈴開  0為關
四個獨立按鍵實現功能切換及各功能設置  設置時設置位閃爍



4.課程設計工作進度計劃:
序號
起 迄 日 期
工  作  內  容

1

16日至17日

方案的論證和選擇

2

18日至19日

構思設計整體框架

3

20日

電路設計

4

21日至25日

根據設計的電路寫程序

5

26日至29日

調試程序并且用設計好的電路仿真

29日

驗收

主指導教師簽名

日期:

         年     月    日




單片機源程序如下:
  1. #include
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define play P0
  5. sbit LSA=P1^0;
  6. sbit LSB=P1^1;
  7. sbit LSC=P1^2;
  8. sbit led=P2^2; //鬧鐘檢測
  9. sbit k1=P2^7;//        功能切換
  10. sbit k2=P2^6;//設置加
  11. sbit k3=P2^5;//         設置減  
  12. sbit k4=P2^4; //設置位選
  13. sbit beet=P1^5; //蜂鳴器輸出口
  14. uchar y;//按鍵松開
  15. uchar kai;//鬧鐘開啟標志
  16. uchar she;//設置標志
  17. uchar t;//時間計數
  18. uchar num;//功能切換
  19. uchar fen;
  20. uchar shi;
  21. uchar miao;
  22. uchar yue;
  23. uchar nian;
  24. uchar ri;
  25. uchar shijian[8];
  26. uchar  shi1; //鬧鈴時
  27. uchar fen1;         //鬧鈴分
  28. unsigned char code shuma[12]={
  29. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,                  //數碼管顯示數組0到9
  30. 0x7f,0x6f,0x40,0x00};
  31. uchar brunyue[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  32. uchar runyue[12]={31,29,31,30,31,30,31,31,30,31,30,31};
  33. void zhongshe();
  34. void qishe();
  35. void naoshe();
  36. void shezhi();
  37. void delay10ms(void)   //誤差 0us
  38. {
  39.     unsigned char a,b,c;
  40.     for(c=1;c>0;c--)
  41.         for(b=38;b>0;b--)
  42.             for(a=130;a>0;a--);
  43. }
  44. void naozhong()
  45. {   uint a,m;  
  46.         if((shi1==shi)&&(fen1==fen)&&(kai%2))
  47.           {                 for(m=20;m>0;m--)
  48.                for(a=10;a>0;a--)
  49.                    if((k1==0)||(k2==0)||(k3==0)||(k4==0))
  50.                   { kai=0;break;  }
  51.                     else
  52.                      beet=~beet;         
  53.            }
  54. }
  55. void plays()                          //輸出顯示
  56. {
  57.         unsigned char i;
  58.         unsigned int j;
  59.         for(i=0;i<8;i++)
  60.         {
  61.                 switch(i)         //位選,選擇點亮的數碼管,
  62.                 {
  63.                         case(0):
  64.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  65.                         case(1):
  66.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  67.                         case(2):
  68.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  69.                         case(3):
  70.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  71.                         case(4):
  72.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  73.                         case(5):
  74.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  75.                         case(6):
  76.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  77.                         case(7):
  78.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位        
  79.                 }
  80.                  play=shuma[shijian[i]];
  81.                  if(t>50)
  82.         {                 switch(she)
  83.                 {  
  84.                   case(3):
  85.                  if((i==0)||(i==1))
  86.                   play=0x00; break;
  87.                   case(2):
  88.                    if((i==3)||(i==4))
  89.                   play=0x00; break;
  90.                   case(1):
  91.                    if((i==6)||(i==7))
  92.                   play=0x00; break;
  93.                 }
  94.      }
  95.                  j=10;                                                 //掃描間隔時間設定
  96.                 while(j--);        
  97.                 play=0x00;//消隱
  98.         }
  99. }
  100. void nao()                                //鬧鐘賦值
  101. {  shijian[7]=kai;
  102.    shijian[6]=11;
  103.    shijian[5]=11;
  104.    shijian[4]=fen1%10;
  105.    shijian[3]=fen1/10;
  106.    shijian[2]=10;
  107.    shijian[1]=shi1%10;
  108.    shijian[0]=shi1/10;

  109. }
  110. void rili()                                 //日期賦值
  111. {  shijian[7]=ri%10;
  112.    shijian[6]=ri/10;
  113.    shijian[5]=10;
  114.    shijian[4]=yue%10;
  115.    shijian[3]=yue/10;
  116.    shijian[2]=10;
  117.    shijian[1]=nian%10;
  118.    shijian[0]=nian/10;
  119. }
  120. void zhong()                                //電子鐘賦值
  121. { shijian[7]=miao%10;
  122.           shijian[6]=miao/10;
  123.           shijian[5]=10;
  124.           shijian[4]=fen%10;
  125.           shijian[3]=fen/10;
  126.           shijian[2]=10;
  127.           shijian[1]=shi%10;
  128.           shijian[0]=shi/10;
  129. }
  130. void InitTimer0(void)
  131. {
  132.      TMOD = 0x01;
  133.     TH0 = 0x0D8;
  134.     TL0 = 0x0F0;
  135.     EA = 1;
  136.     ET0 = 1;
  137.     TR0 = 1;
  138. }
  139. void shezhi()                                //功能設置函數
  140. {  if((she!=0)&&((k2==0)||(k3==0)))  
  141.    {  delay10ms();
  142.    if((she!=0)&&((k2==0)||(k3==0)))
  143.          {
  144.            switch(num)
  145.                  { case(0):   
  146.                                     zhongshe(); break;
  147.                    case(1):
  148.                           qishe(); break;
  149.                    case(2):
  150.                                      naoshe();break;
  151.                  }
  152.          }
  153.    }
  154. }
  155. void main()
  156. {         
  157.     num=0;kai=1;she=0;        
  158.         fen1=59;shi1=23;
  159.         miao=0;fen=58;        shi=23;
  160.     ri=19;        yue=12;        nian=13;
  161.     InitTimer0();
  162.         while(1)
  163.         {  
  164.         if(k1==0)
  165.            {delay10ms();
  166.                     if(k1==0)
  167.                          {num=(num+4)%3;
  168.                           she=0;}
  169.                          led=~led;
  170.                          while(!k1) ;}
  171.          if(k4==0)
  172.            {delay10ms();
  173.                     if(k4==0)
  174.                   she=(she+5)%4;
  175.                   while(!k4) ;
  176.            }
  177.      shezhi();
  178.          naozhong();
  179.                  plays();         
  180.          
  181.         }
  182. }
  183. void Timer0Interrupt(void) interrupt 1
  184. {
  185.     TH0 = 0x0D8;
  186.     TL0 = 0x0F0;
  187.           t++;
  188.           if(t==100)
  189.                 { t=0;
  190.                   miao++;        
  191.                   if(miao>59)
  192.                   { miao=0;
  193.                           fen++;
  194.                           if(fen>59)
  195.                           {
  196.                             fen=0;
  197.                             shi++;        
  198.                               if(shi>23)
  199.                                    {
  200.                                     shi=0;
  201.                                         ri++;
  202.                                                 if(nian%4==0)
  203.                                                 { if(ri>runyue[yue-1])
  204.                                                         {   ri=1;
  205.                                    yue++;  }
  206.                                                         if(yue>12)
  207.                                                           {  yue=1;
  208.                                                                 nian++;        }        
  209.                                                  }
  210.                                                  else
  211.                                                  {if(ri>brunyue[yue-1])
  212.                                                       {
  213.                                                                ri=0;
  214.                                                                      yue++;  
  215.                                                          }
  216.                                                                   if(yue>12)
  217.                                                                   {
  218.                                                                    yue=0;
  219.                                                                    nian++ ;
  220.                                                                    }

  221.                                                    }
  222.                           }
  223.                      }
  224.                 }
  225.         }
  226.         switch(num)
  227.         {  
  228.            case(0):
  229.            zhong();break;
  230.            case(1):
  231.            rili();break;
  232.            case(2):
  233.            nao();break;
  234.            default: zhong();
  235.         }
  236. }
  237. void zhongshe()
  238. {         switch(she)
  239.   {        
  240. case(1):
  241.      miao=0;InitTimer0();break;        
  242. case(2):
  243.     if(k2==0)
  244.                         fen=(fen+61)%60;
  245.         else   
  246.                 fen=(fen+59)%60;
  247.         break;
  248. case(3):
  249.         if(k2==0)
  250.                            shi=(shi+25)%24;
  251.         else
  252.                           shi=(shi+23)%24;
  253.                            break;
  254.   }        
  255.   while((!k2)||(!k3)) ;                        
  256. }
  257. void naoshe()
  258. {                 switch(she)
  259.   {        
  260. case(1):
  261.      if(kai==1)
  262.          kai=0;
  263.          else kai=1; break;        
  264. case(2):
  265.     if(k2==0)
  266.                         fen1=(fen1+61)%60;
  267.         else   
  268.                 fen1=(fen1+59)%60;
  269.         break;
  270. case(3):
  271.         if(k2==0)
  272.                            shi1=(shi1+25)%24;
  273.         else
  274.                           shi1=(shi1+23)%24;
  275.                            break;
  276. ……………………

  277. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
電子鐘.zip (174.61 KB, 下載次數: 113)



評分

參與人數 2黑幣 +55 收起 理由
妮妮妮 + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:264178 發表于 2017-12-28 17:30 | 只看該作者
TH0 = 0x0D8;     TL0 = 0x0F0;這個什么意思呀?大神
回復

使用道具 舉報

板凳
ID:444687 發表于 2018-12-12 11:19 | 只看該作者
很好,但就是程序有點亂
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月天国产视频 | 久久成人高清视频 | 亚洲一区二区三区在线 | 久久久久av | 欧美日韩视频在线 | 午夜精品一区二区三区在线视频 | 欧美久久久久久久 | 午夜精品一区二区三区三上悠亚 | 日韩精品一区二 | 日本一区二区在线视频 | 在线一区视频 | 欧美极品一区二区 | 毛片日韩| 天天干天天干 | 日本不卡免费新一二三区 | 香蕉视频91 | 欧美一级黄带 | 精品久久久久一区二区国产 | 黄色一级大片在线免费看产 | 亚洲色图第一页 | 国产午夜精品理论片a大结局 | 亚洲视频欧美视频 | 罗宾被扒开腿做同人网站 | 91国产精品 | 全免费a级毛片免费看视频免 | 亚洲国产精品一区在线观看 | 第四色狠狠 | 欧美精品一区二区在线观看 | 国产精品美女久久久 | аⅴ资源新版在线天堂 | 国产精品一区三区 | 国产乡下妇女做爰 | 亚洲一区欧美一区 | 狠狠操婷婷 | 丁香婷婷成人 | 中文字幕在线一 | 成人免费一区二区三区视频网站 | 亚洲综合天堂网 | se婷婷| 久久99精品久久久久久 | 日本精品一区二区 |