首先说一下数码管,其实就是7个led灯,加上一个小数点正好8位,和51单片机的一个端口连接。
使不同的灯亮起,就可以实现显示0到9这几个数字。
以上都是图片,下面把对应的值给到大家,0到9的十六进制值复制粘贴就好了:{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}
下面说一下数码管的静态显示(下一篇说动态显示)
接下来就实际操作一下,打开proteus,如图导入元器件并连线,数码管搜索SEG。
下面就是编写c文件,之后编译,源码和注释看下面:文章来源:https://www.toymoban.com/news/detail-741997.html
#include"reg51.h"
unsigned char dat[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
// 点 g f e d c b a
// 显示0 0 1 1 1 1 1 1 除了点和g不亮其他的灯都亮就是0。 十六进制就是0x3f
// 显示1 0 0 0 0 1 1 0 只有b和c亮,其他的都不亮。 十六进制就是0x06
// 按照上面的方式依次类推得到 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
void delay(unsigned int n){ //延时函数 不是很精确
unsigned int i=0, j=0;
for(i=0; i<n; i++){
for(j=0; j<120; j++);
}
}
void seg(){ // 自己命名的子函数,proteus中数码管叫seg,我这里就取名叫seg好了
unsigned int i;
for(i=0; i<10; i++){ // 循环10次,得到i的值从0到9都能取到
P2=dat[i]; // 51单片机的P2口得到的值就是数组dat中的每一个值,也就是从0到9分别亮
delay(500); // 延时, 由于单片机的运行速度太快,所以要加延时,也就是等一会,不然人眼看不到
}
}
void main(){ // 主函数 加一个无限循环 只调用了子函数seg
while(1){
seg();
}
}
最后打开proteus把生成的hex文件导入,模拟仿真就可以看到从0到9不停地显示数字了文章来源地址https://www.toymoban.com/news/detail-741997.html
到了这里,关于数码管的静态显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!