本节内容的视频讲解,时长18分钟,请在wifi下观看,土豪请随意。
由于视频网站压缩的问题,上传后为标清,高清视频请移步到优酷或文末点击阅读原文观看 http://v.youku.com/v_show/id_XMzI4OTk5ODY2NA==.html?spm=a2hzp.8244740.0.0
以上就是我们的数码管驱动电路,完整版电路图在以前的文章里有提供下载,没看的小伙伴请查看历史文章下载电子时钟高清电路图全网首发(点击直达)。
从电路图可以看出,我们用的数码管是共阳的数码管,位选控制采用的8550三极管控制,段选接510R的限流电阻后接的是单片机的P2口,关于数码管的详细原理,小编在之前的文章也说道过②LED数码管解析(点击直达)
电路很简单,那我们要用程序去控制它,具体该怎么办呢?
下面小编就贴出完整代码:详细的讲解请看以上视频。
#include"STC15.h"
//函数声明
void delay(unsigned int x); //延时函数
void disp_seg1(); //显示函数
void disp_seg2();
void disp_seg3();
//接口定义
sbit seg1=P3^4; //最高位 --最左边一位的位选
sbit seg2=P3^5;
sbit seg3=P3^6;
sbit seg4=P3^7; //最低位 --最右边一位的位选
unsigned char leddata[]={ //共阳数码管段选码
0xC0, //"0"
0xF9, //"1"
0xA4, //"2"
0xB0, //"3"
0x99, //"4"
0x92, //"5"
0x82, //"6"
0xF8, //"7"
0x80, //"8"
0x90, //"9"
};
/////////////////////////////////////////////////////
//函数功能: 主函数
//参数: 无
//作者: 小代
//公众号:单片机技术宅(ID:chuxue_MCU)
//QQ:2463515595 微信:dianzi126
/////////////////////////////////////////////////////
void main(){
while(1){
// disp_seg1(); //显示函数
// delay(10000);
// disp_seg2();
// delay(10000);
disp_seg3();
// delay(10000);
}
}
/////////////////////////////////////////////////////
//函数功能: 点亮数码管的一位
//参数: 无
//作者: 小代
//公众号:单片机技术宅(ID:chuxue_MCU)
//QQ:2463515595 微信:dianzi126
/////////////////////////////////////////////////////
void disp_seg1(){
P2=0xf0;
seg1=0;
delay(5000);
}
/////////////////////////////////////////////////////
//函数功能: 数码管流水灯
//参数: 无
//作者: 小代
//公众号:单片机技术宅(ID:chuxue_MCU)
//QQ:2463515595 微信:dianzi126
/////////////////////////////////////////////////////
void disp_seg2(){
unsignedchar i,j;
j=0xfe;
for(i=0;i<8;i++){
P2=j;
seg1=0;
delay(2000);
j=(j<<1)|0x01;
}
}
/////////////////////////////////////////////////////
//函数功能: 数码管轮流显示0-9
//参数: 无
//作者: 小代
//公众号:单片机技术宅(ID:chuxue_MCU)
//QQ:2463515595 微信:dianzi126
/////////////////////////////////////////////////////
void disp_seg3(){
unsignedchar i;
for(i=0;i<10;i++){
P2=leddata[i];
seg1=0;
delay(3000);
}
}
/////////////////////////////////////////////////////
//函数功能:延时函数
//参数: X 取值0-65535 X越大延时时间越长
//作者: 小代
//公众号:单片机技术宅(ID:chuxue_MCU)
//QQ:2463515595 微信:dianzi126
/////////////////////////////////////////////////////
void delay(unsigned int x){
unsignedint a,b;
for(a=0;a<x;a++){
for(b=0;b<150;b++){
;
}
}
}
需要下载高清视频和本节资料的小伙伴请关注微信公众号:单片机技术宅,在回复框回复180104获取。