案例6_2: 6位数码管依次显示数字11.12.13【动态显示】

张开发
2026/4/10 12:49:19 15 分钟阅读

分享文章

案例6_2: 6位数码管依次显示数字11.12.13【动态显示】
文章目录0、文章介绍1、效果图2、不完整代码代码需要补充3、思考题0、文章介绍书中5.1.4 数码管案例目标实现使用案例5_2的仿真图要求六位数码管显示“11.12.13”知识点带小数点的段选转换【代码需要补充完整】1、效果图2、不完整代码代码需要补充此代码与书中95页代码效果相同【效果实现即可不要求代码一样】#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbit dulaP3^4;// 段选锁存器sbit welaP1^6;// 位选锁存器// 数码管的段码表0~9uchar code TableDula[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 数码管段码表0~9带小数点uchar code TableDulaPoint[]{0xBF,// 0. 10111111// 补充代码// 1. 10000110// 2. 11011011// 3. 11001111// 4. 11100110// 5. 11101101// 6. 11111101// 7. 10000111// 8. 11111111// 9. 11101111};// 数码管显示位码对应第1到第6个数码管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;// 显示数据对应的数字内容uchar displayData[6]{1,1,1,2,1,3};// 小数点标志位1表示该位需要小数点uchar pointFlag[6]{0,1,0,1,0,0};// 第2位和第4位显示带小数点while(1){for(i0;i6;i){P00x00;// 清除显示dula0;wela0;// 位选P0TableWela[i];wela1;wela0;// 段码判断是否需要小数点if(pointFlag[i]1){P0TableDulaPoint[displayData[i]];}else{P0TableDula[displayData[i]];}dula1;dula0;delay(2);// 稍作延时}}}3、思考题

更多文章