本次暂时只写了共阴极数码管的实现。
一、显示数字从0-9。
(注:图片有点问题,之前写的时候·没注意,现在下边的代码已经更正了。代码是正确的。)
锁存器。锁存器就是把当前的状态锁存起来,使CPU 送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。
#include "reg52.h"
#include "intrins.h"
#define DWM P0
typedef unsigned int u8;
typedef unsigned char u16;
sbit P2_2=P2^2;
u16 code Duanma[]={0x3f,0x06,0x56,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//段码
void delay(u8 t) //延时函数
{
while(--t);
}
void main()
{
u8 i;
i=0;
while(1)
{
DWM = Duanma[i]; //取段码
P2_2 = 1;
delay(200);
j++;
if(j==10)
j=0;
}
}
二、显示0到F的实现
这个跟上边的0到9的差别只是,数码管的段码加上了A到F的BCD码。
(注:图片有点问题,之前写的时候·没注意,现在下边的代码已经更正了。代码是正确的。) 文章来源:https://www.toymoban.com/news/detail-510340.html
动态扫描。由于任一时刻只能显示一种数字,当需要多位数码管显示多位数据的时候就需要动态扫描。动态扫描时间上执行的是动态显示,由于动态速度很快,人眼分辨不出,所以看上去是静态显示。(因为这次用的是是·一位数码管,自然也没有用到动态扫描了,浅凑一下篇幅)文章来源地址https://www.toymoban.com/news/detail-510340.html
#include "reg52.h"
#include "intrins.h"
#define DWM P0
typedef unsigned int u8;
typedef unsigned char u16;
sbit P2_2=P2^2;
u16 code Duanma[]={0x3f,0x06,0x56,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0X77,0X7c,0X39,0X5e,0x79,0x71};
//段码
void delay(u8 t) //延时函数
{
while(--t);
}
void main()
{
u8 i;
i=0;
while(1)
{
DWM = Duanma[i]; //取段码
P2_2 = 1;
delay(200);
j++;
if(j==16)
j=0;
}
}
到了这里,关于利用单片机实现数码管依次显示数字0到9以及0到F的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!