动态数码管显示

//--------------------------------------------------------------------
// 版本:     V1.0
// 作者:     wei
// 时间:     2015.8.27
// 程序说明: 采用4位共阳数码管.
//           数码管的1-4位分别由P1.4-P1.7控制.当P1.4-P1.7的某位设置为
//           低电平时,则相应的位选通点亮.
//           数码管的7段分别由P2.0-P2.7控制,当P1.4-P1.7相应的位选通时,
//           设置P2.0-P2.7的某位为低,则数码管相应的段位点亮.
//           本实验是将数码管的4位全部点亮,并显示数字0-7循环.
// 注意事项: 数码管的短路帽必须插上
//--------------------------------------------------------------------
#include<reg52.h>
#define  uchar unsigned char
#define shu P2  //0-9
#define wei P1  //    4-7
uchar data disdat[]={0,1,2,3,4,5,6,7};
uchar code distrl[]={0xef,0xdf,0xbf,0x7f,0xef,0xdf,0xbf,0x7f}; //1110,1101,1011,0111,
uchar code ledcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // 0-9
unsigned int i=250;
uchar data WCnt;
void main(void)
{
   WCnt=0;
   while(1)
   {
 shu=0xff; //熄灭,以防拖尾;
 wei=distrl[WCnt];
 shu=ledcode[disdat[WCnt]];
 WCnt++;
 WCnt=WCnt%8; //将数值控制在0-7之间;
 while(i--); //延时的参数类型,直接影响到延时的长短;
   }
}

 /* 
#include<reg52.h>


unsigned char wei[] = {0xff,0xef,0xdf,0xbf,0x7f,0x0f};          //数码管位控制码
unsigned char duan[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //数码管的数字表,分别为数字0-9


//--------------------------------------------------------------------
//延时函数,延时时间由cnt决定
//--------------------------------------------------------------------
void delay(unsigned long cnt)
{
    while(cnt--);
}


void main(void)
{
    unsigned char i;
i = 0;
    while(1)
{
        P2 = 0xff;           //去鬼影
        P1 = wei[5];        //控制数码管的位,4位全部点亮
   P2 = duan[i++];      //控制数码管的段
if(i > 9) i = 0;     //显示数字0-9,超过9时,显示数字0
delay(8000);
}
}
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值