数码管程序设计
一、原理分析
开发板原理图
上面四个图分别为数码管原理图,段选锁存器,位选锁存器,译码器。
编写数码管程序时,首先利用译码器选择数码管的位选锁存器,给P0赋值。
然后选择数码管的段选锁存器,给P0赋值(设置显示的字符)。
其中不同位选的值以及不同段选的值可用数组来表示。具体设置方式如图。
位选同理,
注意,每次设置不同数码管时要延时2毫秒
二、例程
#include<stc15f2k60s2.h>
#include<intrins.h>
#define uchar unsigned char
uchar wei_tab[]={0xff,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位选从0到8依次为全选,1号管到八、8号管
uchar duan_tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xbf}; //段选从0到10依次为,0到9以及‘-’
void Delay1ms();
void dispaly(uchar wei,uchar duan)
{
P2=0xc0; //1100 0000,译码器输出Y6,选择位选锁存器
P0=wei_tab[wei];
P2=0xff;
P0=duan_tab[duan];
Delay1ms();
}
void all_init()
{
P2=0x80; //译码器输出选择Y4 ,p27,p27,p25控制译码器输出
P0=0x00;
P2=0xa0; //ULN2003
P0=0x00; //主要是想关了蜂鸣器
}
void main(void)
{
all_init();
while(1)
{
dispaly(1,9);
dispaly(2,8);
dispaly(3,7);
dispaly(4,6);
dispaly(5,5);
dispaly(6,4);
dispaly(7,3);
dispaly(8,2);
}
}
三、注意
显示函数要写在while里