找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1267|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机数字时钟按键程序设计 求思路

[复制链接]
跳转到指定楼层
楼主
ID:694792 发表于 2020-2-18 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
共阳极数码管 只显示时间不显示日期和星期
一共三个按键  按键1每按一次分别切换时、分、秒闪烁,表示要修改时间的部分,第四次按下则恢复到正常,按键2加时间,按键3减时间
三个按键接口为P3.0 P3.1 P3.2
定时精度要求:每天误差十秒以内

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:694792 发表于 2020-2-18 17:38 | 只看该作者
#include<reg51.h> unsigned char i, disp_buf[6] ={1,2,3,4,5,6},hour,min,sec,k; unsigned char yima[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//十个数 void main(){     TMOD=0X01;  //T0中断,方式一,定时功能         TH0=(65536-2000)/256;         TL0=(65536-2000)%256;         EA=1;ET0=1;TR0=1;            while(1){                }           }           void         T0_INT()interrupt 1{              TH0=(65536-2000)/256;              TL0=(65536-2000)%256;                  if(++i>5)i=0;                  P2=0;                  P0=yima[disp_buf[i] ];                  P2=0x01<<i;                  if(++k==500){  //1second=1000ms                       k=0;                           if(++sec==60){                                sec=0;                                    if(++min==60){                                        min=0;                                    if(++hour==24){                                        hour=0;                                         }                                 }                           }                           disp_buf[0]=hour/10; //时针十位数                           disp_buf[1]=hour%10; //时针个位数                           disp_buf[2]=min/10;  //分钟十位数                           disp_buf[3]=min%10;  //分钟个位数                           disp_buf[4]=sec/10;  //秒钟十位数                           disp_buf[5]=sec%10;  //秒钟个位数                          }                 }
回复

使用道具 举报

板凳
ID:694792 发表于 2020-2-18 17:38 | 只看该作者
部分程序 麻烦哪位大神可以完善一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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