找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2820|回复: 3
收起左侧

求按键控制数码管定时器定时显示的程序,我实在想不通按键怎么控制定时器?

[复制链接]
ID:223880 发表于 2018-10-20 12:38 | 显示全部楼层 |阅读模式
求按键控制数码管用定时器定时显示的程序,我实在想不通按键怎么控制数码管,例子也成
回复

使用道具 举报

ID:223880 发表于 2018-10-20 15:46 | 显示全部楼层
不用了,我已经做出来了,谢谢
回复

使用道具 举报

ID:223880 发表于 2018-10-20 15:53 | 显示全部楼层
不用了,已经做出来了谢谢 (PS 审核:不用发出去了)
回复

使用道具 举报

ID:164602 发表于 2018-10-20 16:43 | 显示全部楼层
我有一个电子秒表的程序,就是用按键控制的哦。
//上电待令,按键计时开始,再按计时停止,再按清0,周而复始。
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;//连接译码器,选择点亮的数码管
sbit k3=P3^2;
uchar code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};
uchar Cntus=0,Cnt100ms,Cnt1s=0;//中断计时变量
bit zantin=0;                                        //暂停标志


/***********定时器初始化程序****************/
void Timer0Init(void)                //2500微秒@12.000MHz
{
        TMOD= 0x01;                //设置定时器模式
        TL0 = 0x3C;                //设置定时初值
        TH0 = 0xF6;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        EA=1;                        //开总中断
        ET0=1;                //开定时器0中断
}
/***********按键扫描程序****************/
void keyscan()        
{
        static uint count2=0,count1=0;        //计数变量                        
        static bit key_sign=0;                                //按键状态标志
        if(k3==0)                                //检测输入如果为0
        {
                count1++;                                        //计数延时消抖
                if((count1>=500)&&(key_sign==0))//检测按键如果为0
                {                        
                        key_sign=1;                //按键状态标志置1,防止重复响应
                        count2++;
                        if(count2>=3)
                                count2=0;
                        switch(count2)
                        {
                                case 0:        Cntus=0;
                                                Cnt100ms=0;
                                                Cnt1s=0;        break;//清0
                                case 1:        zantin=1;   break;//计时
                                case 2:        zantin=0;        break;//暂停
                        }               
                }
        }
        else
        {
                count1=0;                                //计数变量清0
                key_sign=0;                                //按键状态标志清0
        }
}
void display()//显示程序
{
        static uchar  i=0;
        P0=0x00;//消隐
        switch(i)
        {
                case(0):
                LSA=0;LSB=1;LSC=1;P0=table[Cnt1s/10];i++; break;//显示第5位
                case(1):
                LSA=1;LSB=0;LSC=1;P0=table[Cnt1s%10]|0x80;i++; break;//显示第6位
                case(2):
                LSA=0;LSB=0;LSC=1;P0=table[Cnt100ms];i=0; break;//显示第7位
        }
}
/***************主程序****************/
void main()
{
        Timer0Init();                                //定时器初始化
        while(1)
        {
                keyscan();                                //按键扫描
        }
}
/**************中断服务程序*****************/
void timer0() interrupt        1//2500微秒@11.0592MHz
{
        TL0 = 0x00;                //设置定时初值
        TH0 = 0xF7;                //设置定时初值
        Cntus++;                                        //中断变量Cntus自+1
        if(Cntus>=40)                                //10ms
        {
                Cntus=0;                                //清0
                if(zantin==1)                        //暂停/启动
                        Cnt100ms++;                        //毫秒计数
                if(Cnt100ms>=10)
                {
                        Cnt100ms=0;
                        Cnt1s++;                                //秒计数
                        if(Cnt1s>=60)
                                Cnt1s=0;
                }
        }
        display();                                        //显示程序
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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