
文章目录一.数码管显示6个91.1代码1.2 效果图二.头尾显示72.1代码2.2效果图三.轮播0-93.1代码3.2效果图四.中间轮播数字4.1代码4.2效果图五.顺序显示1-65.1代码5.2效果图六.闪烁显示0-56.1代码6.2效果图七 显示12.13.147.1代码7.2效果图一.数码管显示6个91.1代码#includereg52.h// 头文件// 定义锁存器控制引脚与你的截图完全一致sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U2位选// 主函数voidmain(){// 1. 位选控制保持不变选中全部6个数码管wela1;// 打开位选锁存P00xC0;// 6个位全选wela0;// 关闭位选锁存// 2. 段选控制显示数字 9dula1;// 打开段选锁存P00x6F;// 【只改这里】数字9的段码dula0;// 关闭段选锁存// 3. 保持显示while(1);}1.2 效果图二.头尾显示72.1代码#includereg52.h// 头文件// 定义锁存器控制引脚与你的截图完全一致sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U2位选// 主函数voidmain(){// 1. 位选控制保持不变选中全部6个数码管wela1;// 打开位选锁存P00xDE;// 6个位全选wela0;// 关闭位选锁存// 2. 段选控制显示数字 9dula1;// 打开段选锁存P00x07;// 【只改这里】数字9的段码dula0;// 关闭段选锁存// 3. 保持显示while(1);}2.2效果图三.轮播0-93.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--);}// 数码管展示函数voiddisplay_digit(uchar digit){P0seg_code[digit];// 发送数字对应的段码dula1;// 打开段选delay(500);// 稳定信号dula0;// 关闭段选}// 主函数voidmain(){uchar digit;while(1){// 1.位选控制wela1;// 打开位选P00xC0;// 位选6个数码管 1100 0000wela0;// 关闭位选// 2.段选控制for(digit0;digit10;digit)// 轮流显示0到9{display_digit(digit);}}}3.2效果图四.中间轮播数字4.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--);}// 数码管展示函数voiddisplay_digit(uchar digit){P0seg_code[digit];// 发送数字对应的段码dula1;// 打开段选delay(500);// 稳定信号dula0;// 关闭段选}// 主函数voidmain(){uchar digit;while(1){// 1.位选控制wela1;// 打开位选P00xF3;//wela0;// 关闭位选// 2.段选控制for(digit0;digit10;digit)// 轮流显示0到9{display_digit(digit);}}}4.2效果图五.顺序显示1-65.1代码#includereg52.h// 头文件#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个数码管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){// 送位码选中第i位数码管P0TableWela[i];wela1;wela0;// 送段码显示 1 2 3 4 5 6P0TableDula[i1];// 这里 1 就从1开始显示dula1;dula0;delay(2);}}}5.2效果图六.闪烁显示0-56.1代码#includereg52.h// 头文件#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个数码管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;P0TableDula[i];dula1;dula0;delay(500);// 只改这里2 → 500}}}6.2效果图七 显示12.13.147.1代码#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.0x86,// 1.0xDB,// 2.0xCF,// 3.0xE6,// 4.0xED,// 5.0xFD,// 6.0x87,// 7.0xFF,// 8.0xEF// 9.};// 数码管显示位码对应第1到第6个数码管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;// 这里改成 13.14.15 uchar displayData[6]{1,3,1,4,1,5};uchar pointFlag[6]{0,1,0,1,0,0};// 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);}}}7.2效果图