蓝桥杯开发板(CT107D)学习记录————3.双数码管显示

题目要求:模拟十字路口的两位信号灯显示计数(00-99),数字间隔时间不做特殊要求。采用软件延时方法。

#include"reg52.h"//可以添加<STC15F2K60S2.H>,读者自行百度如何添加此头文件,因为CT107D用的就是stc15f2k60s2芯片
#include"intrins.h"//软件延时需要
#define uchar unsigned char
#define sw 0x40
#define gw 0x80
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管编码表
void Delay10ms()		//@11.0592MHz,软件延迟10ms,可以由STC烧录软件生成
{
	unsigned char i, j;
	i = 108;
	j = 145;
	do
	{
		while (--j);
	} while (--i);
}
void init()//初始化开发板
{
	P2=0xa0;P0=0x00;P2=0x00;//关掉蜂鸣器
	P2=0x80;P0=0xff;P2=0x00;//灭led灯
}
void main()
{
	uchar num=0,k;
	init();
	while(1)
	{
		for(k=0;k<10;k++)//这里加个循环,让一个数字显示十次,因为显示一次才延时20ms太快了,这里叠加十次,显得自然。
		{		//显示十位
			  P2=0xc0;P0=sw;P2=0x00;//位选,选择亮那个数码管
			  P2=0xe0;P0=table[num/10];P2=0x00;//段选,给p0赋值先显示对应的数字
			  Delay10ms();
			  	
			  P2=0xc0;P0=gw;P2=0x00;//同理,位选
			  P2=0xe0;P0=table[num%10];P2=0x00;//同理段选。
			  Delay10ms();
		}
			num++;//显示数字加一
		  if(num==100)//数字等于100时归零
			  num=0;
	}
}

这里,用到一些并口的知识,P0口的寄存器和P2口的。其次要理解数码管的显示原理,每次只能显示一位,人眼的残留才看起来是都显示的。
共阳数码管的编码表,比赛中例程中又共阴的,可以取反得到同样效果。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值