51单片机静态动态数码管显示
通过此实训了解动态数码管的显示原理,掌握编码方法。共阴极和其阴极数码管的不同之处及常用设计方法。
实训设备
这里使用的377锁存器模块控制的数码管下面就是电路图
显示内容
在显示模块的八位 LED 数码上显示数字,显示格式为:“012345678”,单片机 IO 口模拟芯片时序输出。“8”字形 LED 数码管共 10 个引脚,其中两个引脚为公共电极,这两个公共电极在数码管内部已经连在一起。当数码管为共阳极时,公共端接高电位时数码管选通,才具有点亮的条件。当数
码管为共阴极时则接低电位选通。剩下的八个引脚分别对应数码管上的八个段。下图以共阳极型数码为例加以说明。
单片机 P0.7-P0.0 口接显示模块数码管区的 D7-D0,P2.0 接 CS1 为作段选,P2.1 接 CS2作为位选。P2.2 接 WR 作为写入使能
云量:勾云鹏
#include <REGX52.H>
#include<intrins.h>
sbit CS1=P2^5;
sbit CS2=P2^6;
sbit WR_S=P2^7;
unsigned char xian[8];
void Delayus(unsigned int time)
{
unsigned int _y;
for(_y = 0; _y < time; _y++)
_nop_();
}
unsigned char code shuma[]=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF,0xff};
unsigned char code wei[]={
0XFE,
0XFD,
0XFB,
0XF7,
0XEF,
0XDF,
0XBF,
0X7F,
};
void smghs(void)
{static unsigned char j;j++;
if(j==8)j=0;
P0=wei[j];
CS2=1;
P0=shuma[xian[j]];
CS1=0;
WR_S=0;
WR_S=1;
CS1=1;
Delayus(50);
P0=0xff;
CS1=0;
WR_S=0;
WR_S=1;
CS1=1;
}
void main(void)
{
while(1)
{
xian[0]=0;
xian[1]=1;
xian[2]=2;
xian[3]=3;
xian[4]=4;
xian[5]=5;
xian[6]=6;
xian[7]=7;
smghs();
} }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)