六位数码管静态动态显示

张开发
2026/4/19 2:38:04 15 分钟阅读

分享文章

六位数码管静态动态显示
文章目录1、数码管显示6个91.1效果图截图1.2代码2、数码管显示2个7一头一尾2.1效果图截图2.2代码3、数码管轮播显示6位3.1效果图截图3.2代码4、数码管轮播显示2位4.1 效果图截屏6.1代码6.1 效果图截屏6.2 效果图截屏6.2代码1、数码管显示6个91.1效果图截图1.2代码#includereg52.h // 头文件 // 定义锁存器控制引脚 sbit dulaP3^4; // 锁存器U2段选 sbit welaP1^6; // 锁存器U2位选 // 主函数 void main() { // 1.位选控制 wela1; // 打开位选 P00x00; // 位选3个数码管 1111 1000 wela0; // 关闭位选 // 2.段选控制 dula1; // 打开段选 P00x6f; // 数码管显示“0” 0011 1111 dula0; // 关闭段选 // 3.保持 while(1); }2、数码管显示2个7一头一尾2.1效果图截图2.2代码#includereg52.h // 头文件 // 定义锁存器控制引脚 sbit dulaP3^4; // 锁存器U2段选 sbit welaP1^6; // 锁存器U2位选 // 主函数 void main() { // 1.位选控制 wela1; // 打开位选 P00xDE; // 位选3个数码管 1111 1000 wela0; // 关闭位选 // 2.段选控制 dula1; // 打开段选 P00x07; // 数码管显示“0” 0011 1111 dula0; // 关闭段选 // 3.保持 while(1); }3、数码管轮播显示6位3.1效果图截图3.2代码#includereg52.h // 头文件 #define uchar unsigned char #define uint unsigned int // 定义锁存器控制引脚 sbit dulaP3^4; // 锁存器U2段选 sbit welaP1^6; // 锁存器U3位选 // 共阴极数码管段码表 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(5); // 稳定信号 dula0; // 关闭段选 } // 主函数 void main() { uchar digit; while(1) { // 1.位选控制 wela1; // 打开位选 P00xc0; // 位选6个数码管 1100 0000 wela0; // 关闭位选 // 2.段选控制 for(digit 0; digit 10; digit) // 轮流显示0到9 { display_digit(digit); // 显示当前数字 delay(500); // 适当延时以便观察每个数字 } } }4、数码管轮播显示2位4.1 效果图截屏6.1代码6.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(uint x)// 把 uchar 改成 uint{uint i,j;for(ix;i0;i--)for(j123;j0;j--);}// 主函数voidmain(){uchar i;while(1){for(i0;i6;i){P00x00;dula0;wela0;P0TableWela[i];wela1;wela0;P0TableDula[i1];// 显示 1、2、3、4、5、6dula1;dula0;delay(500);// 延时加长慢速显示}}}6.2 效果图截屏6.2代码#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个数码管 uchar code TableWela[] { 0xFE, // 第1位 0xFD, // 第2位 0xFB, // 第3位 0xF7, // 第4位 0xEF, // 第5位 0xDF // 第6位 }; // 慢速延时函数大幅放慢速度 void delay(uint x) // 把 uchar 改成 uint { uint i,j; for(ix;i0;i--) for(j123;j0;j--); } // 主函数 void main() { uchar i; while(1) { for(i 0; i 6; i) { P0 0x00; dula 0; wela 0; P0 TableWela[i]; wela 1; wela 0; P0 TableDula[i1]; // 显示 1、2、3、4、5、6 dula 1; dula 0; delay(500); // 延时加长慢速显示 } } }

更多文章