找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4442|回复: 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 单片机教程网

快速回复 返回顶部 返回列表