[新手也能学习单片机01]利用Protues 仿真C51单片机8位数码管

[学习单片机01]利用Protues 仿真C51单片机8位数码管

我找了许多有关模拟数码管的文章,但是大多数对新手都不太友好(可能是我理解能力不太好吧,哈哈),所以我开始尝试用博客来写笔记,话不多说,开始吧。

让我们找到元件

1. AT89C51芯片

  • XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
  • XTAL2:来自反向振荡器的输出。
  • RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

2. 74HC573寄存器

  • 保存收到的电位

3. CRYSTAL和两个CAP电容组成的晶体振荡器

  • 晶体振荡器:提供系统所需的时钟频率
  • CRYSTAL :晶体
  • CAP:普通电容

4. RESPACK-8排阻(上拉电阻)

  • P0端八个引脚输出电流太小 上拉电阻起到拉高电平的作用

5. 7SEG-MPX8-CC

  • 8位7段码数码管,左面8个引脚分别是a 、b、 c 、d 、e、 f 、g 、dp(小数点),右面是8个数码管的位选端。例“1”号脚为正电位(共阳极),第一个数字显示7段码表示的数。

6. CAP-ELEC

  • CAP-elec 电解电容,空心为正极,斜线填充为负极

7. RES电阻

  • 就是普通的电阻

8.电源和接地线

  • 点击这个图标
  • 找到电源POWER 和接地线 GROUND
  • 在这里插入图片描述

原理图

在这里插入图片描述

代码附上

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit wela = P2^7;
uchar num;

uchar code table[]={
 0xc0,0xf9,0xa4,0xb0,//0~3 
 0x99,0x92,0x82,0xf8,//4~7 
 0x80,0x90,0x88,0x83,//8~b 
 0xc6,0xa1,0x86,0x8e //c~f 
};  

void delay()//延时函数
{
 uint i = 0;
 uint j = 0;
 for(;i<9000;i++)
 {
  for(;j<20000;j++)
  {}
 }
}
void main()
{
 wela = 1;//打开位选
 P0 = 0xff;
 //选择要亮的数码管 0xff = 11111111  即8个数码管全亮 
 //P0 = 0xa0 = 10100000 即只有第一个和第三个亮
 wela = 0;//关闭位选 锁存器右端电位保持不变
 
 while(1)
 {
  for(num=0;num<16;num++)//从0到f循环
  {
   d1 = 1;
   P0 = table[num];
   delay();
  }
 }
}
发布了1 篇原创文章 · 获赞 1 · 访问量 17

猜你喜欢

转载自blog.csdn.net/qq_45408440/article/details/105423138