找回密码
 立即注册

QQ登录

只需一步,快速开始

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

跑表程序设计

[复制链接]
跳转到指定楼层
楼主
/*数码管前三位显示一个跑表,三个独立键盘实现按下第一个时计时停止,
按下第二个时计时开始,按下第三个是计数值清零从头开始。*/

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit w1=P2^0;
sbit w2=P2^1;
sbit w3=P2^2;

uchar num,t0,bai,shi,ge,flag;
uint shu;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};

void delay(uint z);
void init();
void display(uchar bai,uchar shi,uchar ge);
void keyscan();

void main()
{
        init();
        while(1)
        {
                keyscan();
                if(flag==0)
                        display(bai,shi,ge);       
                else               
                        display(0,0,0);               
        }
}

void init()
{
        shu=0;
        t0=0;
        flag=0;
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
}
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void timer0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        t0++;
        if(t0==3)
        {
                t0=0;
                shu++;
                bai=shu/100;
                shi=shu%100/10;
                ge=shu%10;
                if(shu==1000)
                        shu=0;
        }
}

void display(uchar bai,uchar shi,uchar ge)
{
         P0=0xff;
         w1=0;
         P0=table[bai];
         w1=1;
         delay(1);

         P0=0xff;
         w2=0;
         P0=table[shi];
         w2=1;
         delay(1);

         P0=0xff;
         w3=0;
         P0=table[ge];
         w3=1;
         delay(1);

}

void keyscan()
{
         if(key1==0)
         {
                 while(!key1);
                TR0=0;
         }                          
       
         if(key2==0)
         {
                 while(!key2);
                flag=0;
                  TR0=1;
         }
         
         if(key3==0)       
         {
                while(!key3);
                shu=0;
                flag=1;
                TR0=0;
         }
         
}



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

使用道具 举报

沙发
ID:1 发表于 2017-2-27 00:41 | 只看该作者
楼主能分享一下该程序的电路原理图吗?
回复

使用道具 举报

板凳
ID:162469 发表于 2017-3-2 09:55 | 只看该作者
admin 发表于 2017-2-27 00:41
楼主能分享一下该程序的电路原理图吗?

这是基于开发板KR-51所写的程序。。
回复

使用道具 举报

地板
ID:162469 发表于 2017-3-2 09:57 | 只看该作者
原理图如下

捕获.PNG (77.15 KB, 下载次数: 44)

捕获.PNG

独立按键.PNG (9.65 KB, 下载次数: 51)

独立按键.PNG

数码管显示电路.PNG (28.78 KB, 下载次数: 58)

数码管显示电路.PNG
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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