永发信息网

单片机八位数码管动态显示,做电子时钟显示时_分_秒,, 用四个按键调节要求当调节时程序闪烁,,按

答案:2  悬赏:0  手机版
解决时间 2021-03-06 03:59
单片机八位数码管动态显示,做电子时钟显示时_分_秒,,
用四个按键调节要求当调节时程序闪烁,,按第一个键切换时分秒,,按第二第三个键增加或减少,,,,第四个键确定键

只写出按键调节程序就行c语言谢谢了
最佳答案
unsigned char DisplayFlag;
unsigned char H,M,S;
unsigned char H_Old,M_Old,S_Old;

void key1()
{
    if(DisplayFlag==4) {DisplayFlag=1;}
    else {DisplayFlag++;}
}

void key2()//+
{
    switch(DisplayFlag)
    { 
        case 1:
           if(H==24) {H_Old=0;}
           else {H_Old=H+1;}
        break;

        case 2:
           if(M==60) {M_Old=0;}
           else {M_Old=M+1;}  
        break;

        case 3:
           if(S==60) {S_Old=0;}
           else {S_Old=S+1;}  
        break;
}

void key3()//-
{
    switch(DisplayFlag)
    { 
        case 1:
           if(H==255) {H_Old=23;}
           else {H_Old=H-1;}
        break;

        case 2:
           if(M==255) {M_Old=59;}
           else {M_Old=M-1;}  
        break;

        case 3:
           if(S==255) {S_Old=59;}
           else {S_Old=S-1;}  
        break;
}

void key4()
{
    H=H_Old;
    M=M_Old;
    S=S_Old;
    H_Old=0;
    M_Old=0;
    S_Old=0;
}
全部回答
#include <reg51.h> #include <intrins.h> unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char data dis_buf[8]; unsigned char data dis_index; unsigned char hour,min,sec; unsigned char sec100; sbit k1 = p1^0; sbit k2 = p1^1; bit scan_key(); void proc_key(); void inc_sec(); void inc_min(); void inc_hour(); void display(); void delayms(unsigned char ms); void main(void) { p0 = 0xff; p3 = 0xff; tmod = 0x11; // 定时器0, 1工作模式1, 16位定时方式 th1 = 0xdc; tl1 = 0; th0 = 0xfc; tl0 = 0x17; hour = 12; min = 00; sec = 00; sec100 = 0; dis_buf[0] = dis_code[hour / 10]; // 时十位 dis_buf[1] = dis_code[hour % 10]; // 时个位 dis_buf[3] = dis_code[min / 10]; // 分十位 dis_buf[4] = dis_code[min % 10]; // 分个位 dis_buf[6] = dis_code[sec / 10]; // 秒十位 dis_buf[7] = dis_code[sec % 10]; // 秒个位 dis_buf[2] = 0xbf; // 显示"-" dis_buf[5] = 0xbf; // 显示"-" dis_digit = 0xfe; dis_index = 0; tcon = 0x01; ie = 0x8a; // 使能timer0,1 中断 tr0 = 1; tr1 = 1; key_v = 0x03; while(1) { if(scan_key()) { delayms(10); if(scan_key()) { key_v = key_s; proc_key(); } } } } bit scan_key() { key_s = 0x00; key_s |= k2; key_s <<= 1; key_s |= k1; return(key_s ^ key_v); } void proc_key() { ea = 0; if((key_v & 0x01) == 0) // k1 { inc_hour(); // jj=1; } else if((key_v & 0x02) == 0) // k2 { min++; // jj=0; if(min > 59) { min = 0; } dis_buf[3] = dis_code[min / 10]; // 分十位 dis_buf[4] = dis_code[min % 10]; // 分个位 } ea = 1; } void timer0() interrupt 1 // 定时器0中断服务程序, 用于数码管的动态扫描 // dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量 // dis_digit --- 位选通值, 传送到p2口用于选通当前数码管的数值, 如等于0xfe时, // 选通p2.0口数码管 // dis_buf --- 显于缓冲区基地址 { th0 = 0xfc; tl0 = 0x17; p3 = 0xff; // 先关闭所有数码管 p0 = dis_buf[dis_index]; // 显示代码传送到p0口 p3 = dis_digit; // dis_digit = _crol_(dis_digit,1); // 位选通值左移, 下次中断时选通下一位数码管 dis_index++; // dis_index &= 0x07; // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描 } void timer1() interrupt 3 { th1 = 0xdc; sec100++; if(sec100 >= 100) { sec100 = 0; inc_sec(); } } void inc_sec() { sec++; if(sec > 59) { sec = 0; inc_min(); } dis_buf[6] = dis_code[sec / 10]; // 秒十位 dis_buf[7] = dis_code[sec % 10]; // 秒个位 } void inc_min() { min++; if(min > 59) { min = 0; inc_hour(); } dis_buf[3] = dis_code[min / 10]; // 分十位 dis_buf[4] = dis_code[min % 10]; // 分个位 } void inc_hour() { hour++; if(hour > 23) { hour = 0; } if(hour > 9) dis_buf[0] = dis_code[hour / 10]; // 时十位 else dis_buf[0] = 0xff; // 当小时的十位为0时不显示 dis_buf[1] = dis_code[hour % 10]; // 时个位 } void delayms(unsigned char ms) // 延时子程序 { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } } //大家都不容易,把分给我吧!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蓝旗奶食风干牛肉在哪里啊,我有事要去这个地
word表格不能编辑的原因,怎么解决
to make it the best ever games咋翻译喃?
很多事情为什么我心里想得到,而无法用语言来
多扶酒厂西充直销点(汉街店)地址在哪,我要去
将如图所示装置放在光照充足、温度适宜的环境
日语动词中的自五,他下一,カ变等,都是什么意
iphone水货是什么意思 山寨的吗
怎样区别公办与民办学校标志?
开发商把新房的钥匙弄丢了,我不在场的情况下
馨叶名茶在哪里啊,我有事要去这个地方
今年烤烟没卖完怎么保存明年才不会变色
林俊杰哥哥毕业哪所大学
柿子和凉粉可以一起吃吗?
志邦广告雕刻工厂在哪里啊,我有事要去这个地
推荐资讯
冬日暖阳,心如寒冰,是什么意思
现在学什么技术最好赚钱
最是一年春好处,决胜烟柳满皇都.
有过江地铁到阳逻吗
头发要多久才能涨长
西安远东2中什么时候报名
要使细胞膜仅具有扩散而不具有主动转运的运输
如何分辨真假烟
买的进口橄榄油生产日期能擦掉是假的吗
跟延年益寿形式一样的成语
产后两年要怎么减肥?生完孩子都有两年了,太
国美电器从化店这个地址在什么地方,我要处理
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?