【单片机】实战篇:Keil+Proteus数码管计数99

大家好!我是皮皮猫。
每文一言: 当你选择成为别人时,你将失去你自己。


本篇文章:

主要内容:静态点亮数码管显示数字99、动态点亮数码管显示12345678(8位数码管)。
功能一:静态点亮数码管显示数字99(2位数码管)
功能二:动态点亮数码管显示12345678(8位数码管)

正文如下:
一、静态点亮数码管
1)Proteus绘图

第一步:根据给定元器件进行绘图
如果不知如何绘图,(新手请看:https://blog.csdn.net/qq_44366571/article/details/107053338
在这里插入图片描述
注:遇到新知识:
在这里插入图片描述
注:点击出现,属性赋值工具
在这里插入图片描述
自定义名字:
在这里插入图片描述
注意: 一般的话,框中输入NET=P1#(#表示的意思是:0-9),点击圆圈即可命名。
例如: NET=A1#,点击之后依次显示:A10、A11、A12、A13…
作用: 可以减少连线,名字相同的两个圈,默认是已经连接上线了。我们绘制的图中,左数码管已经和P0引脚相连,右数码管已经和P1引脚相连
第二步:
绘图完成,进行Keil代码

2)Keil代码

第一步:创建一个单片机工程
如果不知如何创建单片机工程,(新手请看:)
第二步:根据Proteus绘制,代码实现数码管点亮:
数码管器件: 数码管分为共阴极和共阳极,如果是共阴极的话,我们需要在连接的引脚输入高电平才可以点亮数码管;如果数码管是共阳极的话,我们需要在连接的引脚输入低电平才可以。
数码管:
在这里插入图片描述
在这里插入图片描述

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define smg_r P1
#define smg_l P0
code uchar date[10]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
//延时函数
void delay(unsigned int x) //延时 x ms
{
	uint i,j;
	for(i=x;i>0;i--)
	for(j=110;j>0;j--);
}

void main(){
	uint i, ge, shi;
	while(1){
		i=0;
		//数码管从00显示到99
		for(i = 0; i < 100; i++){
			ge = i%10;
			shi = i/10;
			smg_l = date[shi];
			smg_r = date[ge];
			delay(1000);
		}
}
}

到这里,静态的数码管显示就实现了,我们来看看如何实现动态数码管。

二、动态点亮数码管
1)Proteus绘图

绘图元器件:
下图左方即绘图所需元器件,按照改图绘制即可。
在这里插入图片描述
提示:
点击工具,选择自动连线,操作如下,双击即可实现
在这里插入图片描述
在这里插入图片描述
提示:
名字相同的就是连接到一起的意思。
绘图完成,进行代码部分。

2)Keil代码部分
#include<reg51.h>
#include<intrins.h>
 
#define uchar unsigned char
#define uint  unsigned int

uchar code Discode[]={0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0xc0};	  //共阳极数码管

void delay(uint t)							   //毫秒级延时函数
{
	uchar i;
	while(t--)
	{
	for(i=0;i<120;i++);
	}											
}
void main()
{
  uchar i,j=0x80;
	P0=0xff;								  //先关闭数码管
	P2=0x00;								  
	while(1)
	{
		for(i=0;i<8;i++)
		{
				P2=0x00;						//显示一次关闭一次位选端,去除重影的作用
			j=_crol_(j,1);   			//10000000——00000001
			P2=j;							 		//每次选通一个位选端口
			P0=Discode[i];						  //段码送P0口
			
			delay(5);
		}
	}
}

效果展示:
在这里插入图片描述


完结,撒花…

本篇文章主要是单片机数码管的使用,更多Keil+proteus项目,持续学习中…

作者:皮皮猫吖


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值