标题1:数码管控制的两个关键要素—位选寄存器、段选寄存器。
标题2:位选寄存器。
标题3:段选寄存器。
标题4:具体使用。
标题5:实验总结。
数码管控制的两个关键要素—位选寄存器、段选寄存器:
如图所示DS1、DS2数码管的控制共有12个引脚组成,“8+4”的引脚分别为8个段选引脚:A1、B1...DP1,4个位选引脚COM1..COM4,需要注意的是位选优先,在段选之前先做好位选,如下图为段选引脚控制:
段选寄存器:
需要通过P2口的38译码器打开Y7寄存器,不知道P2口38译码器的同学可以看我的http://t.csdnimg.cn/BEYBp文章,里面有介绍。而其中每个单独的数码管a、b...dp所控制的段如下图:
0为选中该段为亮, 而一些常见的数字字母的表示如下:
位选引脚的选择由74HC573译码器来翻译:
位选寄存器:
需要打开Y6寄存器来操作,1为选中状态如P0=0x01,为只有COM1数码管被选中。
以下为数码管的简单使用:
具体使用:
code unsigned char tab[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
void Nixie(unsigned char pos,num)
{
P2=(P2&0x1f)|0xc0; //打开位选寄存器
P0=0x01<<(pos-1); //0000 0001 打开COM1,pos=1时为0000 0001 ,pos=2表示打开COM2为0000
//0010
P2&=0x1f;
P2=(P2&0x1f)|0xe0; //打开段选寄存器
P0=tab[num];
P2&=0x1f;
Delay(500); //这里没有写Delay函数同学们自己在stc-isp软件里有这个函数,本身头文件是没有的噢
P0=0xff; //数码管消抖,因为有显示的数码管对没有显示的数码管有影响,可能会产生阴影
}
实验总结:在产生使用一些元器件的想法时先去研究其原理图,在原理图上找其控制引脚、控制引脚所需的寄存器等,在清楚其使用后再进行一些具体操作。