找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5528|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

電子表程序設(shè)計(jì) 帶實(shí)驗(yàn)報(bào)告源程序等

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
大家一起學(xué)習(xí)學(xué)習(xí)吧

鍵盤功能控制
鍵名
KEY1秒表鍵
KEY2模式鍵
KEY3加鍵
KEY4減鍵
  
  
  
顯示秒鐘
調(diào)分
分加,59后為0
分減,059

調(diào)時(shí)
時(shí)加,23后為0
時(shí)減,023

鬧鐘分鐘
分加,59后為0
分減,059

鬧鐘小時(shí)
時(shí)加,23后為0
時(shí)減,023


顯示鬧鐘時(shí)間
鬧鈴時(shí)停止鬧鈴



鬧鈴開關(guān)

正常狀態(tài):顯示時(shí)分;
按下KEY1鍵顯示秒鐘,松開恢復(fù)顯示時(shí)分。
KEY2鍵:按下進(jìn)入模式選擇(亮度變暗):
1、   按下KEY1鍵,亮度恢復(fù)正常,調(diào)整時(shí)間;
①      按KEY3鍵,分鐘加,按KEY4鍵,分鐘減。
②      按下KEY2鍵,再按KEY3鍵,小時(shí)加,按下KEY4鍵,小時(shí)減。
③      按下KEY1鍵,退出。
2、  按下KEY2鍵,亮度恢復(fù)正常,鬧鐘時(shí)間設(shè)定;
①    按KEY3鍵,分鐘加,按KEY4鍵,分鐘減。
②      按下KEY1鍵,再按KEY3鍵,小時(shí)加,按下KEY4鍵,小時(shí)減。
③      按下KEY2鍵,退出。

KEY3鍵:正常狀態(tài)時(shí),按下顯示鬧鐘時(shí)間。

KEY4鍵:①鬧鐘開關(guān)鍵;
                   ②鬧鈴響時(shí)關(guān)閉鬧鈴。

單片機(jī)電子表實(shí)驗(yàn)報(bào)告,源碼下載:
電子表.zip (51.06 KB, 下載次數(shù): 35)

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2017-2-27 00:40 | 只看該作者
樓主的程序源碼:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit w1=P2^0;
  5. sbit w2=P2^1;
  6. sbit w3=P2^2;
  7. sbit w4=P2^3;
  8. sbit key1=P3^2;
  9. sbit Mod_key=P3^3;
  10. sbit Up_key=P3^4;
  11. sbit Down_key=P3^5;
  12. sbit D1=P2^5;

  13. uchar flag,alarm_flag,Buzzer_flag,back,aa,bb,minutes,seconds,hours,hours_alarm,minutes_alarm,t0,Hourshi,Hourge,Minuteshi,Minutege,Secondshi,Secondge;

  14. uchar code table[]={
  15. 0xc0,0xf9,0xa4,0xb0,0x99,
  16. 0x92,0x82,0xf8,0x80,0x90,
  17. 0xbf,0xff};

  18. uchar code tablehours[]={          //小時(shí)的個(gè)位單獨(dú)一個(gè)數(shù)組,因?yàn)樾枰恢北3诛@示小數(shù)點(diǎn)
  19. 0x40,0x79,0x24,0x30,0x19,
  20. 0x12,0x02,0x78,0x00,0x10};

  21. void init();                //初始化函數(shù)
  22. void delay(uint z);                 //延時(shí)函數(shù)
  23. void display(uchar hours,uchar minutes);                 //正常顯示函數(shù)
  24. void display_seconds(uchar aa,uchar Secondshi,uchar Secondge,uchar bb);                   //顯示秒鐘函數(shù)
  25. void keyscan();                           //鍵盤掃描函數(shù)
  26. void Buzzer();                           //蜂鳴器開關(guān)函數(shù)

  27. void main()
  28. {
  29.         init();
  30.         while(1)
  31.         {
  32.                 keyscan();
  33.                 Buzzer();
  34.                 if(flag==1)
  35.                         display_seconds(10,Secondshi,Secondge,10);                               
  36.                 if(alarm_flag==1)
  37.                         display(hours_alarm,minutes_alarm);
  38.                 if(flag!=1&&alarm_flag!=1)
  39.                         display(hours,minutes);       
  40.         }
  41. }

  42. void init()                                //初始化函數(shù)
  43. {
  44.         flag=0;
  45.         alarm_flag=0;
  46.         Buzzer_flag=1;                 //蜂鳴器初始化時(shí)默認(rèn)關(guān)閉
  47.         back=0;
  48.         hours_alarm=0;
  49.         minutes_alarm=0;
  50.         hours=0;
  51.         minutes=0;
  52.         seconds=0;
  53.         Hourshi=0;
  54.         Hourge=0;
  55.         Minuteshi=0;
  56.         Minutege=0;
  57.         Secondshi=0;
  58.         Secondge=0;
  59.         t0=0;
  60.         TMOD=0x01;
  61.         TH0=(65536-50000)/256;
  62.         TL0=(65536-50000)%256;
  63.         EA=1;
  64.         ET0=1;
  65.         TR0=1;
  66. }

  67. void delay(uint z)                  //延時(shí)函數(shù)
  68. {
  69.         uint x,y;
  70.         for(x=z;x>0;x--)
  71.                 for(y=110;y>0;y--);
  72. }

  73. void display(uchar hours,uchar minutes)                   //正常顯示函數(shù)
  74. {
  75.         P0=0xff;
  76.         w1=0;
  77.         P0=table[hours/10];
  78.         w1=1;
  79.         delay(1);

  80.         P0=0xff;
  81.         w2=0;
  82.         P0=tablehours[hours%10];
  83.         w2=1;
  84.         delay(1);

  85.         P0=0xff;
  86.         w3=0;
  87.         P0=table[minutes/10];
  88.         w3=1;
  89.         delay(1);

  90.         P0=0xff;
  91.         w4=0;
  92.         P0=table[minutes%10];
  93.         w4=1;
  94.         delay(1);
  95. }

  96. void display_seconds(uchar aa,uchar Secondshi,uchar Secondge,uchar bb)           //顯示秒鐘函數(shù)
  97. {
  98.         P0=0xff;
  99.         w1=0;
  100.         P0=table[aa];
  101.         w1=1;
  102.         delay(1);

  103.         P0=0xff;
  104.         w2=0;
  105.         P0=table[Secondshi];
  106.         w2=1;
  107.         delay(1);

  108.         P0=0xff;
  109.         w3=0;
  110.         P0=table[Secondge];
  111.         w3=1;
  112.         delay(1);

  113.         P0=0xff;
  114.         w4=0;
  115.         P0=table[bb];
  116.         w4=1;
  117.         delay(1);
  118. }

  119. void keyscan()                        //鍵盤掃描函數(shù)
  120. {
  121.         if(key1==0)
  122.                 flag=1;
  123.         else
  124.                 flag=0;

  125.         if(Up_key==0)
  126.                 alarm_flag=1;
  127.         else
  128.                 alarm_flag=0;

  129.         if(Down_key==0)
  130.         {
  131.                 while(!Down_key);
  132.                 Buzzer_flag=~Buzzer_flag;
  133.         }
  134.        
  135.         if(Mod_key==0)
  136.         {
  137.                 while(!Mod_key);       
  138.                 while(1)
  139.                 {       
  140.                         display(hours,minutes);
  141.                         delay(50);
  142.                         if(back==1)
  143.                         {
  144.                                 back=0;
  145.                                 break;       
  146.                         }
  147.                         if(key1==0)
  148.                         {
  149.                                 while(!key1);
  150.                                 while(1)
  151.                                 {
  152.                                         display(hours,minutes);
  153.                                         if(Up_key==0)
  154.                                         {
  155.                                                 while(!Up_key);
  156.                                                 minutes++;
  157.                                                 if(minutes==60)
  158.                                                         minutes=0;
  159.                                         }
  160.                                
  161.                                         if(Down_key==0)
  162.                                         {
  163.                                                 while(!Down_key);
  164.                                                 minutes--;
  165.                                                 if(minutes==-1)
  166.                                                         minutes=59;
  167.                                         }

  168.                                         if(back==1)
  169.                                         {
  170.                                                 back==1;
  171.                                                 break;
  172.                                         }
  173.                                                
  174.                                         if(Mod_key==0)
  175.                                         {
  176.                                                 while(!Mod_key);
  177.                                                 while(1)
  178.                                                 {
  179.                                                         display(hours,minutes);
  180.                                                         if(Up_key==0)
  181.                                                         {
  182.                                                                 while(!Up_key);       
  183.                                                                 hours++;
  184.                                                                 if(hours==24)
  185.                                                                         hours=0;
  186.        
  187.                                                         }

  188.                                                         if(Down_key==0)
  189.                                                         {
  190.                                                                 while(!Down_key);               
  191.                                                                 hours--;
  192.                                                                 if(hours==-1)
  193.                                                                         hours=23;               
  194.                                                         }

  195.                                                         if(key1==0)
  196.                                                         {
  197.                                                                 while(!key1);
  198.                                                                 back=1;
  199.                                                                 break;
  200.                                                         }
  201.                                                 }
  202.                                         }
  203.                                 }
  204.                         }

  205.                         if(Mod_key==0)
  206.                         {
  207.                                 while(!Mod_key);
  208.                                 while(1)
  209.                                 {
  210.                                         display(hours_alarm,minutes_alarm);
  211.                                         if(Up_key==0)
  212.                                         {
  213.                                                 while(!Up_key);
  214.                                                 minutes_alarm++;
  215.                                                 if(minutes_alarm==60)
  216.                                                         minutes_alarm=0;
  217.                                         }
  218.                
  219.                                         if(Down_key==0)
  220.                                         {                                               
  221.                                                 while(!Down_key)
  222.                                                 minutes_alarm--;
  223.                                                 if(minutes_alarm==-1)
  224.                                                         minutes_alarm=59;
  225.                                         }

  226.                                         if(back==1)
  227.                                         {
  228.                                                 back==1;
  229.                                                 break;
  230.                                         }
  231.                                
  232.                                         if(key1==0)
  233.                                         {
  234.                                                 while(!key1);
  235.                                                 while(1)
  236.                                                 {
  237.                                                         display(hours_alarm,minutes_alarm);
  238.                                                         if(Up_key==0)
  239.                                                         {
  240.                                                                 while(!Up_key);
  241.                                                                 hours_alarm++;
  242.                                                                 if(hours_alarm==24)
  243.                                                                         hours_alarm=0;
  244.                                                         }

  245.                                                         if(Down_key==0)
  246.                                                         {
  247.                                                                 while(!Down_key);
  248.                                                                 hours_alarm--;
  249.                                                                 if(hours_alarm==-1)
  250.                                                                         hours_alarm=23;                                       
  251.                                                         }

  252.                                                         if(Mod_key==0)
  253.                                                         {                                                       
  254.                                                                 while(!Mod_key);
  255.                                                                 back=1;
  256.                                                                 Buzzer_flag=0;           //設(shè)定鬧鐘時(shí)間后自動(dòng)開啟蜂鳴器
  257.                                                                 break;
  258.                                                         }
  259.        
  260.                                                 }
  261.                                         }
  262.                                 }
  263.                         }
  264.                 }
  265.         }
  266. }


  267. void Buzzer()                         //蜂鳴器開關(guān)函數(shù)
  268. {
  269.         if(hours==hours_alarm&&minutes==minutes_alarm)
  270.         {
  271.                 if(Buzzer_flag==0)
  272.                         D1=0;
  273.                 else
  274.                         D1=1;
  275.         }
  276.         else
  277.                 D1=1;  
  278. }
  279.   
  280. void timer0() interrupt 1
  281. {
  282.         TH0=(65536-50000)/256;
  283.         TL0=(65536-50000)%256;
  284.         t0++;
  285.         if(t0==20)
  286.         {
  287.                 t0=0;
  288.                 seconds++;
  289.                 Secondshi=seconds/10;
  290.                 Secondge=seconds%10;
  291.                 if(seconds==60)
  292.                 {
  293.                         seconds=0;
  294.                         minutes++;
  295.                         Minuteshi=minutes/10;
  296.                         Minutege=minutes%10;
  297.                         if(minutes==60)
  298.                         {       
  299.                                 minutes=0;
  300.                                 hours++;
  301.                                 Hourshi=hours/10;
  302.                                 Hourge=hours%10;
  303.                                 if(hours==24)
  304.                                         hours==0;
  305.                         }
  306.                        
  307.                 }
  308.                        
  309.         }       
  310. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:51533 發(fā)表于 2017-2-27 17:42 | 只看該作者
謝謝大師
回復(fù)

使用道具 舉報(bào)

地板
ID:164834 發(fā)表于 2017-2-27 23:18 | 只看該作者
很好的教程!
回復(fù)

使用道具 舉報(bào)

5#
ID:169188 發(fā)表于 2017-3-22 23:10 | 只看該作者
感謝分享,謝謝了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表