1.数码管原理图解释
位选:
左边这个原理图是数码管位选的原理图,在蓝桥杯单片机中共有八个位,其中seg_wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}分别为com1,com2….从下往上的选择,如0000 0001选中P00口开启,其余口关闭。
段选:
右边这个是数码管段选的原理图,数码管有共阳极数码管、共阴极数码管,共阳极数码管0为亮,编码顺序 :dp g f e d c b a,为abcd efgdp 的倒序,常见段码:code unsigned char tab[] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xFF};,分别表示0、1、2..不显示。
锁存器选择段选、位选:
原理如下:74HC138译码器通过P2口中的P25、P26、P27三口控制Y0、Y1...Y7八个模块的启动与关闭。
控制位选:
为Y6,即P27=1,P26=1,P25=0,则其P2口代码为:P2=(P2&0x1f)|0xc0;
控制段选:
为Y7,即P27=1,P26=1,P25=1,则其P2口代码为:P2=(P2&0x1f)|0xe0;
拓展:
控制led为Y4,蜂鸣器为Y5...
代码模块:
Seg.c代码:
#include <Seg.h>code unsigned char Seg_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xFF}; //共阳极段选
code unsigned char Seg_wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位选void Seg_Disp(unsigned char wei,duan,point)
{//消隐(段选)P2=(P2&0x1f)|0xe0;P0=0xff;P2&=0x1f;//位选P2=(P2&0x1f)|0xc0;P0=Seg_wei[wei];P2&=0x1f;//段选P2=(P2&0x1f)|0xe0;P0=Seg_duan[duan];//处理小数if(point)P0&=0x7f;P2&=0x1f;
}
Seg.h代码:
#include <STC15F2K60S2.H>void Seg_Disp(unsigned char wela,dula,point);