六位数码管显示
#includereg52.h // 锁存器控制引脚保持不变 sbit dulaP3^4; // 段选锁存 sbit welaP1^6; // 位选锁存 // 共阴极数码管段码数字 9 的段码 #define NUM_9 0x6F void main() { // 1. 打开位选选中 6 个数码管全部点亮 wela 1; P0 0xC0; // 1100 0000 → 6个数码管全选 wela 0; // 关闭位选锁存 // 2. 打开段选输出数字 9 的段码 dula 1; P0 NUM_9; // 显示数字 9 dula 0; // 关闭段选锁存 // 保持显示 while(1); }2.数码管显示2个7#includereg52.h // 锁存器控制引脚 sbit dulaP3^4; // 段选锁存 sbit welaP1^6; // 位选锁存 // 共阴极数码管段码 #define NUM_7 0x07 void main() { // 选中第1位和第6位数码管 wela 1; P0 0x1E; // 00011110选中两端 wela 0; // 输出数字7的段码 dula 1; P0 NUM_7; // 显示数字 7 dula 0; // 保持显示 while(1); }3.数码管轮播显示六位#includereg52.h // 头文件 #define uchar unsigned char #define uint unsigned int // 定义锁存器控制引脚 sbit dulaP3^4; // 锁存器U2段选 sbit welaP1^6; // 锁存器U3位选 // 共阴极数码管段码表 0-9 uchar code seg_code[] { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 }; // 延时函数 void delay(uint ms) { uint i, j; for(i ms; i 0; i--) for(j 110; j 0; j--); } // 数码管展示函数 void display_digit(uchar digit) { P0 seg_code[digit]; // 发送数字对应的段码 dula1; // 打开段选锁存 delay(1); // 短延时稳定信号 dula0; // 关闭段选锁存 } // 主函数 void main() { uchar digit; while(1) { // 1.位选控制选中所有6个数码管0xC0 1100 0000 wela1; P00xc0; wela0; // 2.段选控制0-9循环显示 for(digit 0; digit 10; digit) { display_digit(digit); // 显示当前数字 delay(500); // 延时500ms控制切换速度 } } }4.数码管轮播显示2位#includereg52.h // 头文件 #define uchar unsigned char #define uint unsigned int // 定义锁存器控制引脚 sbit dulaP3^4; // 锁存器U2段选 sbit welaP1^6; // 锁存器U3位选 // 共阴极数码管段码表 0-9 uchar code seg_code[] { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 }; // 延时函数 void delay(uint ms) { uint i, j; for(i ms; i 0; i--) for(j 110; j 0; j--); } // 数码管展示函数 void display_digit(uchar digit) { P0 seg_code[digit]; // 发送数字对应的段码 dula1; // 打开段选锁存 delay(1); dula0; // 关闭段选锁存 } // 主函数 void main() { uchar digit; while(1) { // 关键修改 // 只点亮 第3位 第4位 数码管 wela1; P00x33; // 0011 0011 → 仅第3、4位亮 wela0; // // 0~9 循环轮播 for(digit 0; digit 10; digit) { display_digit(digit); delay(500); } } }5.数码管显示数字1-6#include reg52.h // 头文件 c #define uchar unsigned char #define uint unsigned int // 定义锁存器控制引脚 sbit dula P3^4; // 段选锁存器U2 sbit wela P1^6; // 位选锁存器U3 // 数码管的段码表(定义0-9的段码) uchar code TableDula[] { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 }; // 数码管显示位码对应第1到第6个数码管需要将2进制转换成16进制 uchar code TableWela[] { // 补充代码 // 1111 1110 - 第1位P0.0 置低其它为高 选中第1位数码管 0xFE, // 1111 1101 - 第2位P0.1 置低 选中第2位数码管 0xFD, // 1111 1011 - 第3位P0.2 置低 选中第3位数码管 0xFB, // 1111 0111 - 第4位P0.3 置低 选中第4位数码管 0xF7, // 1110 1111 - 第5位P0.4 置低 选中第5位数码管 0xEF, // 1101 1111 - 第6位P0.5 置低 选中第6位数码管 0xDF }; // 延时函数 void delay(uchar x) { uchar j; while(x--) { for(j0;j125;j); } } // 主函数 void main() { uchar i; while(1) { for(i 0; i 6; i) { P0 0x00; // 清空之前的输出 dula 0; wela 0; P0 TableWela[i]; // 先送位码依次选中1-6位数码管 wela 1; // 锁存位码 wela 0; P0 TableDula[i1]; // 再送段码第1个数码管显示0第2个数码管显示1... dula 1; // 锁存段码 dula 0; delay(2); // 保持一段时间 } } }6.显示13.14.15#include reg52.h #define uchar unsigned char #define uint unsigned int // 定义锁存器控制引脚 sbit dula P3^4; sbit wela P1^6; // 数码管段码 uchar code TableDula[] { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 }; // 位选 uchar code TableWela[] { 0xFE, // 第1位 0xFD, // 第2位 0xFB, // 第3位 0xF7, // 第4位 0xEF, // 第5位 0xDF // 第6位 }; void delay(uchar x) { uchar j; while(x--) { for(j0;j125;j); } } void main() { uchar i; while(1) { for(i 0; i 6; i) { P0 0x00; dula 0; wela 0; P0 TableWela[i]; // 选中第 i 个数码管 wela 1; wela 0; P0 TableDula[i1]; // 显示 1 2 3 4 5 6 dula 1; dula 0; delay(2); } } }