按关键词阅读: 显示 控制 锁存器 数码管 段位
1、8位数码管的(段位锁存器控制)显示单片机最小系统所需要的元器件所需的数码管段位锁存器的链接按键是本人外加的 , 可以省略 。
4*4的按键8数码管显示c语言程序/*-名称:多位数码管动态扫描显示变化数据编写:shifang修改:无内容:多位数码管分别显示不同数字 , 这种扫描显示方式成为动态扫描 , 并不停变化赋值-*/#include /包含头文件 , 一般情况不需要改动 , 头文件包含特殊功能寄存器的定义#define DataPort P0 /定义数据端口 程序中遇到DataPort 则用P0 替换sbit LATCH1=P22;
/定义锁存使能端口 段锁存sbit LATCH2=P23;
/ 位锁存unsigne 。
【数码管|8位数码管的(段位锁存器控制)显示】2、d char code dofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;
/ 显示段码值09unsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;
/分别对应相应的数码管点亮,即位码unsigned char TempData8;
/存储显示值的全局变量void Delay(unsigned int t);
/函数声明void Display(unsigned char FirstBit,unsigned char Num);
/* 。
3、-主函数-*/main()unsigned int num;
unsigned int j;
while(1)j+;
if(j=200) /检测当前数值显示了一小段时间后 , 需要显示的数值加1 , 实现数据显示的变化j=0;
num+;
if(num=1000)/用于显示0999num=0;
TempData0=dofly_DuanManum/100;
/分解显示信息 , 如要显示68 , 则68/10=6 68%10=8 TempData1=dofly_DuanMa(num%100)/10;
TempData2=dofly_DuanMa(num%100)%10;
Display(2,3);
/*-延时函数 , 含有输入参数 un 。
4、signed int t , 无返回值unsigned int 是定义无符号整形变量 , 其值的范围是065535-*/void Delay(unsigned int t)while(-t);
/*-显示函数 , 用于动态扫描数码管输入参数 FirstBit 表示需要显示的第一位 , 如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示 。
Num表示需要显示的位数 , 如需要显示99两位数值则该值输入2-*/void Display(unsigned char FirstBit,unsigned char Num)unsigned char i;
for(i=0;
iNum;
i+) DataPort=0;
/清空数据 , 防止有交替重影LATCH1=1;
/段锁存LATCH1=0;
DataPort=dofly_WeiMai+FirstBit;
/取位码 LATCH2=1;
/位锁存LATCH2=0;
DataPort=TempDatai;
/取显示数据 , 段码LATCH1=1;
/段锁存LATCH1=0;
Delay(200);
/ 扫描间隙延时 , 时间太长会闪烁 , 太短会造成重影 。

稿源:(未知)
【傻大方】网址:/a/2021/0813/0023653735.html
标题:数码管|8位数码管的(段位锁存器控制)显示