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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

電子表程序設計 帶實驗報告源程序等

[復制鏈接]
跳轉到指定樓層
樓主
大家一起學習學習吧

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

調時
時加,23后為0
時減,023

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

鬧鐘小時
時加,23后為0
時減,023


顯示鬧鐘時間
鬧鈴時停止鬧鈴



鬧鈴開關

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

KEY3鍵:正常狀態時,按下顯示鬧鐘時間。

KEY4鍵:①鬧鐘開關鍵;
                   ②鬧鈴響時關閉鬧鈴。

單片機電子表實驗報告,源碼下載:
電子表.zip (51.06 KB, 下載次數: 35)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1 發表于 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[]={          //小時的個位單獨一個數組,因為需要一直保持顯示小數點
  19. 0x40,0x79,0x24,0x30,0x19,
  20. 0x12,0x02,0x78,0x00,0x10};

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

  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()                                //初始化函數
  43. {
  44.         flag=0;
  45.         alarm_flag=0;
  46.         Buzzer_flag=1;                 //蜂鳴器初始化時默認關閉
  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)                  //延時函數
  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)                   //正常顯示函數
  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)           //顯示秒鐘函數
  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()                        //鍵盤掃描函數
  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;           //設定鬧鐘時間后自動開啟蜂鳴器
  257.                                                                 break;
  258.                                                         }
  259.        
  260.                                                 }
  261.                                         }
  262.                                 }
  263.                         }
  264.                 }
  265.         }
  266. }


  267. void Buzzer()                         //蜂鳴器開關函數
  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. }
復制代碼
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品成人av | 无毛av| 玖玖久久| 久久久久久久电影 | 91av免费观看| yiren22综合网成人 | 国产亚洲精品美女久久久久久久久久 | 极品销魂美女一区二区 | 精品在线一区二区三区 | 成人av鲁丝片一区二区小说 | 中文字幕一区二区三区精彩视频 | av一级毛片 | 日韩欧美国产成人一区二区 | 美女视频h | 亚洲国产精品成人综合久久久 | 成人片免费看 | 在线亚洲人成电影网站色www | 中文字幕在线免费观看 | 亚洲精品福利在线 | 日韩毛片免费看 | 午夜精品 | 日韩在线观看中文字幕 | 色婷婷综合久久久中文字幕 | 天天操夜夜爽 | 成年人在线观看视频 | 色综合久久天天综合网 | 另类 综合 日韩 欧美 亚洲 | 日日操天天射 | 婷婷激情综合 | 精品一区二区三区四区 | 国产精品久久国产精品 | 精品亚洲一区二区三区 | 久在草| 欧美日本亚洲 | 日韩精品一区二区三区中文字幕 | 中文字幕一二三 | 成人片网址 | 欧美精品成人一区二区三区四区 | 天天夜碰日日摸日日澡 | 中文字幕四虎 | 日韩成人在线视频 |