数码管动态显示字符

利用数码管动态显示字符。间隔之间需要有短暂延时。数码管为共阴极,所以位选送0即可选中。段选即可送1选中需要显示的段a/b/c/d/e/f/g/dp。

程序如下:

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i;
sbit duan=P2^6;
sbit wei=P2^7;
void delay(uchar xms)
{
    uchar i,j;
 for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}

void main()

  while(1)

  {
   wei=1;
   P0=0x3e;//第一个0011 1110
   wei=0;
   duan=1;
   P0=0x65;//  0110 0101  
   duan=0;
   delay(5);

   wei=1;
   P0=0x3d;//第二个0011 1101
   wei=0;
   duan=1;
   P0=0x3e;//0011 1110  
   duan=0;
   delay(5);

   wei=1;
   P0=0x3b;//第三个0011 1011
   wei=0;
   duan=1;
   P0=0x3f;//0011  1111  
   duan=0;
   delay(5);

   wei=1;
   P0=0x37;//第四个0011 0111
   wei=0;
   duan=1;
   P0=0x71;//0111  0001  
   duan=0;
   delay(5);


   wei=1;
   P0=0x2f;//第五个0010 1111
   wei=0;
   duan=1;
   P0=0x79;//0111  1001  
   duan=0;
   delay(5);

   wei=1;
   P0=0x1f;//第六个0001 1111
   wei=0;
   duan=1;
   P0=0x54;//0101 0100  N
   duan=0;
   delay(5);

   wei=1;
   P0=0x3f;//第七个0011 1111
   wei=0;
   duan=1;
   P0=0x65;//  0110 0101  G
   duan=0;
   delay(5);
   }

 


}

 

数码管动态显示861017

 /********************************************/
/**********六个数码管动态显示123456***********/
/***************************2010年2月4日20时*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//uint keynum;
uchar num;
sbit duan=P2^6;
sbit wei=P2^7;
//sbit key=P3^4;
//uchar code wei[]={0x3e,0x3d,0x3b,0x37,0x2f,0x1f}; //数码管对应的位选,选中第一个数码管为0011 1110 0x3e
//uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39 ,0x5e,0x79,0x71};
uchar code table[]={0x3e,0x3d,0x3b,0x37,0x2f,0x1f,0x7f,0x7d,0x06,0x3f,0x06,0x07};//前六个数为位选后六个为数字861017
/******延时XMS************/
void delay(uchar xms)
{
    uchar i,j;
 for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}
/******初始化************/
void init()
{
//  keynum=0;
  wei=1;
  duan=1;
  P0=0;
}

void display()
{
for(num=0;num<6;num++)
{
   P0=0xff;//消隐
   wei=1;
   P0=table[num];
   wei=0;
   duan=1;
   P0=table[num+6];
   duan=0;
   delay(1);//时间足够短让人分辨不出来闪烁的效果
 }
}

void main()
{
  init();
  while(1)
   {
  display();

 }

}

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值