案例6_1: 6位数码管依次显示数字0-5【动态显示】

张开发
2026/4/11 23:34:10 15 分钟阅读

分享文章

案例6_1: 6位数码管依次显示数字0-5【动态显示】
文章目录0 要求1.效果图1.2 完整代码2 思考题2.1如何使数码管依次显示1-6代码2.2 需要实现以下效果图代码0 要求完成书中5.1.3 数码管动态显示应用举例P93使用案例5_2的仿真图要求使第一个数码管显示数字0第二个数码管显示数字1…以此类推第六个数码管显示数字51.效果图1.2 完整代码#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[]{// 补充代码0xFE,// 1111 1110 - 第1位P0.0 置低其它为高 选中第1位数码管0xFD,// 1111 1101 - 第2位P0.1 置低 选中第2位数码管0xFB,// 1111 1011 - 第3位P0.2 置低 选中第3位数码管0xF7,// 1111 0111 - 第4位P0.3 置低 选中第4位数码管0xEF,// 1110 1111 - 第5位P0.4 置低 选中第5位数码管0xDF// 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(1);// 保持一段时间}}}2 思考题2.1如何使数码管依次显示1-6效果图代码#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[]{// 补充代码0xFE,// 1111 1110 - 第1位P0.0 置低其它为高 选中第1位数码管0xFD,// 1111 1101 - 第2位P0.1 置低 选中第2位数码管0xFB,// 1111 1011 - 第3位P0.2 置低 选中第3位数码管0xF7,// 1111 0111 - 第4位P0.3 置低 选中第4位数码管0xEF,// 1110 1111 - 第5位P0.4 置低 选中第5位数码管0xDF// 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[i1];// 再送段码第1个数码管显示0第2个数码管显示1...dula1;// 锁存段码dula0;delay(1);// 保持一段时间}}}2.2 需要实现以下效果图只需修改代码中的一个地方代码#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[]{// 补充代码0xFE,// 1111 1110 - 第1位P0.0 置低其它为高 选中第1位数码管0xFD,// 1111 1101 - 第2位P0.1 置低 选中第2位数码管0xFB,// 1111 1011 - 第3位P0.2 置低 选中第3位数码管0xF7,// 1111 0111 - 第4位P0.3 置低 选中第4位数码管0xEF,// 1110 1111 - 第5位P0.4 置低 选中第5位数码管0xDF// 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(1000);// 保持一段时间}}}

更多文章