找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机共阳极数码管显示0~99.99

[复制链接]
跳转到指定楼层
楼主
ID:356227 发表于 2018-8-29 00:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P2^0;
sbit key2=P2^1;
uint num=0;                                           //变量unm为要显示的数、
//共阳极数码管字段码
uchar code a[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
//位选码
uchar code b[4]={0Xfe,0Xfd,0xfb,0xf7};
//延时函数
void delay(uint x)
{
    uint y;
        for(;x>0;x--)
            for(y=600;y>0;y--);

}
//定时器T0初始化函数
void initT0()
{
      TMOD=0x01;                             //定时器T0工作方式一,工作在定时模式
          TH0=(65536-10000)/256;                 //给定时器T0的高八位赋初值
          TL0=(65536-10000)%256;                 //给定时器T0的低八位赋初值
          EA=1;                                  //开关中断
          ET0=1;                                 //定时器T0中断允许
          TR0=1;                                                                  //启动定时器T0

}
//主函数
void main()
{        
        initT0();                                 //调用定时器T0初始化函数
        num=0;
        if(key1==0)
        
        while(1)
        {
                P0=a[num%10];                       //送字段码
                P1=b[0];                                                        //送位选码
                delay(1);                                                        
               
                P0=a[num/10%10];
                P1=b[1];
                delay(1);
        
                P0=a[num/100%10]&0x7f;
                P1=b[2];
                delay(1);
               
                P0=a[num/1000%100];
                P1=b[3];
                delay(1);

                if(key2==0)
                TR0=0;

                if(key1==0)
                TR0=1;
               
                if(num>9999|key1==0)                         //显示数清零
                        num=0;
                }
        }

//定时器T0中断服务函数
void T0int()interrupt 1
{
   TH0=(65536-10000)/256;                 //给定时器T0的高八位赋初值
   TL0=(65536-10000)%256;                                  //给定时器T0的低八位赋初值
   num++;
}

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

使用道具 举报

沙发
ID:1 发表于 2018-8-29 02:05 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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