目录
0.引言
Q0:题目意义?
A0:平常用的数码管都是别人封装好的直接用即可,并不需要关心内部如何实现。而这个题目就是自己模仿了数码管的数字0-9显示功能,便于理解数码管的显示构造和基本原理。
Q1:为什么想做这个题?
A1:当然是因为hh老师对学生的期望了(bushi)。
Q2:如何实现?
A2:首先,用7个led显示数字(以及1个led显示小数点,在该题中常亮即可),其实就是将数字0-9的显示通过7个点的采样表示(如下图)。通过同时点亮不同的点,达到显示不同的数字。
Q3:前置知识?
A3:电路(需要会在仿真电路中点亮多个led,共阴极或共阳极皆可)、数字逻辑(真值表与逻辑表达式,用于优化电路)。
1.演示视频
51单片机仿真_用LED模拟数码管显示数字
2.代码
#include<reg51.h>
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit led5=P0^4;
sbit led6=P0^5;
sbit led7=P0^6;
sbit led8=P0^7;
sbit led9=P2^0;
sbit led10=P2^1;
void delay(void)
{
unsigned int i;
for(i=0;i<40000;i++);
}
int main(void)
{
while(1)
{
unsigned char led,a,b;
led=0xfe;
while(1)
{
led1=0; delay(); led1=1;
led2=0; delay(); led2=1;
led3=0; delay(); led3=1;
led4=0; delay(); led4=1;
led5=0; delay(); led5=1;
led6=0; delay(); led6=1;
led7=0; delay(); led7=1;
led8=0; delay(); led8=1;
led9=0; delay(); led9=1;
led10=0; delay(); led10=1;
}
}
}
3.Proteus文件(包含项目文件和代码)
下载路径
链接:https://pan.quark.cn/s/f67b34c27953
提取码:xj3u
Proteus版本:Proteus 8 Professional
打开工程,选择文件num8_suc_bus.pdsprj
若LED无法正常跳动显示数字,请将Proteus以管理员身份运行