6位数码管静态显示

张开发
2026/6/8 22:59:01 15 分钟阅读
6位数码管静态显示
文章目录1.预览图1.六个92.第一位第六位73.六位轮播4.中间两位轮播5.使第一个数码管显示数字0第二个数码管显示数字1…以此类推第六个数码管显示数字56.显示13.14.152.代码六个9代码第一位第六位7代码六位轮播中间两位轮播使第一个数码管显示数字0第二个数码管显示数字1…以此类推第六个数码管显示数字56.显示13.14.151.预览图1.六个92.第一位第六位73.六位轮播4.中间两位轮播5.使第一个数码管显示数字0第二个数码管显示数字1…以此类推第六个数码管显示数字56.显示13.14.152.代码六个9代码#includereg52.h// 头文件// 定义锁存器控制引脚sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U2位选// 主函数voidmain(){// 1.位选控制wela1;// 打开位选P00xc0;// 位选3个数码管 1111 1000wela0;// 关闭位选// 2.段选控制dula1;// 打开段选P00x6f;// 数码管显示“0” 0011 1111dula0;// 关闭段选// 3.保持while(1);}第一位第六位7代码#includereg52.h// 头文件// 定义锁存器控制引脚sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U2位选// 主函数voidmain(){// 1.位选控制wela1;// 打开位选P00xDE;// 位选3个数码管 1111 1000wela0;// 关闭位选// 2.段选控制dula1;// 打开段选P00x07;// 数码管显示“0” 0011 1111dula0;// 关闭段选// 3.保持while(1);}六位轮播#includereg52.h// 头文件#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U3位选// 共阴极数码管段码表uchar code seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 延时函数voiddelay(uint ms){uint i,j;for(ims;i0;i--)for(j110;j0;j--);}// 主函数voidmain(){uchar digit;while(1){// 1.位选控制一直选中6个数码管wela1;P00xc0;// 1100 0000wela0;// 2.段选控制0-9轮播for(digit0;digit10;digit){dula1;P0seg_code[digit];// 显示当前数字dula0;delay(500);// 每个数字停留500ms}}}中间两位轮播#includereg52.h// 头文件#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U3位选// 共阴极数码管段码表uchar code seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 延时函数voiddelay(uint ms){uint i,j;for(ims;i0;i--)for(j110;j0;j--);}// 主函数voidmain(){uchar digit;while(1){// 1.位选控制一直选中6个数码管wela1;P00xF3;// 1100 0000wela0;// 2.段选控制0-9轮播for(digit0;digit10;digit){dula1;P0seg_code[digit];// 显示当前数字dula0;delay(500);// 每个数字停留500ms}}}使第一个数码管显示数字0第二个数码管显示数字1…以此类推第六个数码管显示数字5#includereg52.h// 头文件 c#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dulaP3^4;// 段选锁存器U2sbit welaP1^6;// 位选锁存器U3// 数码管的段码表(定义0-9的段码)uchar code TableDula[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 数码管显示位码对应第1到第6个数码管需要将2进制转换成16进制uchar code TableWela[]{// 补充代码// 1111 1110 - 第1位P0.0 置低其它为高 选中第1位数码管// 1111 1101 - 第2位P0.1 置低 选中第2位数码管// 1111 1011 - 第3位P0.2 置低 选中第3位数码管// 1111 0111 - 第4位P0.3 置低 选中第4位数码管// 1110 1111 - 第5位P0.4 置低 选中第5位数码管// 1101 1111 - 第6位P0.5 置低 选中第6位数码管};// 延时函数voiddelay(uchar x){uchar j;while(x--){for(j0;j125;j);}}// 主函数voidmain(){uchar i;while(1){for(i0;i6;i){P00x00;// 清空之前的输出dula0;wela0;P0TableWela[i];// 先送位码依次选中1-6位数码管wela1;// 锁存位码wela0;P0TableDula[i];// 再送段码第1个数码管显示0第2个数码管显示1...dula1;// 锁存段码dula0;delay(2);// 保持一段时间}}}6.显示13.14.15#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbit dulaP3^4;sbit welaP1^6;// 共阴极段码表带小数点uchar code TableDula[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F,// 90xCF,// 3. 带小数点0xE6// 4. 带小数点};uchar code TableWela[]{0xFE,// 第1位0xFD,// 第2位0xFB,// 第3位0xF7,// 第4位0xEF,// 第5位0xDF// 第6位};voiddelay(uchar x){uchar j;while(x--){for(j0;j125;j);}}voidmain(){uchar i;while(1){for(i0;i6;i){P00x00;dula0;wela0;P0TableWela[i];wela1;wela0;// 显示1 3. 1 4. 1 5if(i0)P0TableDula[1];// 1if(i1)P0TableDula[10];// 3.if(i2)P0TableDula[1];// 1if(i3)P0TableDula[11];// 4.if(i4)P0TableDula[1];// 1if(i5)P0TableDula[5];// 5dula1;dula0;delay(2);}}}

更多文章