【数码管/定时器/中断】一个定时器控制数码管显示

两种方式实现

/*用定时器以间隔500MS在6位数码管上

依次显示0、1、2、3….C、D、E、F,重复。*/

/*轮流在每一位数码管上显示*/

-----------------------------------------------------①--------------------------------------------------------------------- 


/*利用一个定时器实现数码管从左到右每位依次显示数字,且数字由0变到F再变到0,循环。*/
#include<reg52.h>
#define ui unsigned int
#define uc unsigned char
void init();
sbit we=P2^7;
sbit du=P2^6;
/*数码管段码表*/
uc code tabledu[]=		   //段码表
{
/*0   1    2    3*/
0x3f,0x06,0x5b,0x4f,
/*4   5    6    7*/
0x66,0x6d,0x7d,0x07,
/*8   9    A    B*/
0x7f,0x6f,0x77,0x7c,
/*C   D    E    F 不显示*/
0x39,0x5e,0x79,0x71,0
};
/*数码管位码表*/
uc code tablewe[]=		 //位码表(从高位到低位)
{
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f 
};
ui i;
uc numdu=0;
uc numwe=0;
uc flag=0;
void main()
{
	init();	 //初始化定时器0
	i=0;
	
	we=1;
	P0=tablewe[0]; //显示第一位数码管;
	we=0;
	du=1;
	P0=tabledu[0];
	du=0;
	while(1)
	{	
		if(i==20)
		{
			i=0;
			numdu++;
			numwe++;
			if(numdu==16)
				
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值