C51联盟 —— 活泼的数码管

/*****************************************************************************************************
- 文件名:第二讲:数码管.c
- 开发板:普中HC6800-ES V2.0  @STC 89C52RC
- 作者:  C51联盟
- 时间: 2018-12-12
**************************************************************************************************** */
#include<reg52.h>
#include<intrins.h>
#define SEGLED P0

sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;

typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;

u8 code SEG_Content[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数字码
u8 SEG_Buff[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //段码缓冲区

void Delay1ms();   //延时函数
void Scan_SEG();   //数码管显示
void DP_Number(u32 dat); //数据处理

void main()
{
 u32 sec = 99999900;  //初始化计数值
 while(1)
 {
  DP_Number(sec);
  sec++;
  Scan_SEG();
  if(sec>99999999)
   sec = 0;
 }
}

void Scan_SEG()
{
  u8 i;
  for(i=0;i<8;i++)
  {
   switch(i)  
   {
    case(0):
     LSA=0;LSB=0;LSC=0; break;
    case(1):
     LSA=1;LSB=0;LSC=0; break;
    case(2):
     LSA=0;LSB=1;LSC=0; break;
    case(3):
     LSA=1;LSB=1;LSC=0; break;
    case(4):
     LSA=0;LSB=0;LSC=1; break;
    case(5):
     LSA=1;LSB=0;LSC=1; break;
    case(6):
     LSA=0;LSB=1;LSC=1; break;
    case(7):
     LSA=1;LSB=1;LSC=1; break; 
   }
  SEGLED = SEG_Buff[i]; //输出字符
  Delay1ms();
  SEGLED = 0x00; //消隐
 }
}

void Delay1ms()  //@12.000MHz
{
 unsigned char i, j;
 
 i = 2;
 j = 239;
 do
 {
  while (--j);
 } while (--i);
}

void DP_Number(u32 dat)
{
 int i;
 u8 buf[8];
 
 for(i=0;i<8;i++)
 {
  buf[i] = dat % 10; //取余数充当低位
  dat /= 10; //舍弃余数
 }
 for(i=7;i>0;i--)
 {
  if(buf[i] == 0)
   SEG_Buff[i] = 0x00; //高位去零
  else
   break;
 }
 
 for(;i>=0;i--)
 {
   SEG_Buff[i] = SEG_Content[buf[i]];  //填充缓冲区
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值