proteus入门,数码管循环显示静态数字详解

问题:我一开始使用共阳极的数码管调试时,显示的数字很乱,发现它把蓝色当成了高电平,红色当成低电平。不知道怎么回事。后来把数码管换成共阴极才正常显示。

此篇文章不仅提供解决此问题的方法。还写一些新手摸索的坑。
代码写好了之后,打算在proteus中调试,由于第一次使用,实在是很多都不知道,弄了很久很久。现在把这次摸索的经历写下,以帮助更多刚刚入门proteus的小伙伴。

现在开始!!!!!!!!!!!!!!!!!!!!!

一开始连电路连接都不知道怎么做,在网上找了几个连接的实例看了就开始动手连接了。以下是数码管显示keil的C语言代码。是跟着郭天祥老师的课程学习的。

#include<reg52.h>
#define uint unsigned int  
#define uchar unsigned char 
sbit dula=P2^6;//段选(选择该数码管的第几段亮)
sbit wela=P2^7;//位选(选择哪几个数码管亮)


uchar num;
//code 放在数据存储器中,不然就会放在随机存储器中
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delay(uint z); 

void main() 
{
	EA=1;//打开总中断
	EX0=1;//打开外部中断0
	
	//IT0=1;
	TCON=0x01;//直接对寄存器中某一位操作
	
	wela=1; 
	P1=0xc0;//让全部数码管亮二进制为11000000,让1,3,5亮--11101010
	wela=0;

	
  while(1)
	{
		for(num=0;num<16;num++)
		{
			//d1=1;
			
			dula=1;
			P1=table[num];
			dula=0;
			
			delay(1000);//延迟1s
		}
	}
}


void delay(uint z) 
{
  uint x,y;
	for(x = z;x > 0;x--) 
	  for(y = 110;y > 0;y--) ;
}

选的是P1这块,所以在proteus中也要连接P1部分。(这是数码管-选段)

图中红、蓝色小方块表示该地方的电平,(红代表高电平,蓝代表低电平)
例如:下图中正好显示4数字,红蓝方块代表的意思是(DP G F E D C B A=01100110=0x66),因为数码管中DP是高位。看到这里不懂得同学建议看一下数码管得显示原理。

在这里插入图片描述
在这里插入图片描述

数码管右边这部分相当于公共部分,(一般CC是共阴极,CA是共阳极)。
如果是共阴极数码管(下图我选的7SEG-MPX6-CC-BLUE),则数码管这部分应该连接地,是不是不知道接地符号在哪里?在左栏部分(见下面)。
在这里插入图片描述
在这里插入图片描述

如果选择共阳极数码管,则数码管右边部分,下图仅供参考。123456直接顺序连接P2的接口。
在这里插入图片描述
总结:通过这次摸索,更加深入理解了郭老师的代码,也加强了对Proteus软件的使用能力。希望之后的单片机学习能够继续保持探索实践之心。
会一直更新此后学习动态问题的。
加油!

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值