资讯动态

第五章作业2

发布时间:2026/10/2 6:52:18 来源:尧图企业网站定制
文章目录1、数码管显示6个91.1效果图截屏1.2 代码2、数码管显示2个7一头一尾2.1效果图截屏2.2代码3、数码管轮播显示6位3.1 效果图截屏3.2 代码4、数码管轮播显示2位4.1 效果图截屏4.2 代码5、使用数码管依次显示1到65.1效果图截屏5.2代码6、显示13.14.156.1效果图截屏6.2代码1、数码管显示6个91.1效果图截屏1.2 代码在这里插入代码片在这里插入代码片#includereg52.h// 头文件// 定义锁存器控制引脚sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U2位选// 主函数voidmain(){// 1.位选控制wela1;// 打开位选P00x00;// 选中全部6个数码管wela0;// 关闭位选// 2.段选控制dula1;// 打开段选P00x6F;// 数码管显示“9” 0110 1111dula0;// 关闭段选// 3.保持while(1);}2、数码管显示2个7一头一尾2.1效果图截屏2.2代码在这里插入代码片在这里插入代码片#includereg52.h// 头文件// 定义锁存器控制引脚sbit dulaP3^4;// 锁存器U2段选sbit welaP1^6;// 锁存器U2位选// 主函数voidmain(){// 1.位选控制wela1;// 打开位选P00xDE;// 位选信号选中最左侧和最右侧两个数码管wela0;// 关闭位选// 2.段选控制dula1;// 打开段选P00x07;// 数码管显示“7” 0000 0111dula0;// 关闭段选// 3.保持while(1);}3、数码管轮播显示6位3.1 效果图截屏3.2 代码在这里插入代码片在这里插入代码片#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);// 显示当前数字}}}4、数码管轮播显示2位4.1 效果图截屏4.2 代码在这里插入代码片在这里插入代码片#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;// 选中第3位和第4位wela0;// 关闭位选// 2.段选控制for(digit0;digit10;digit)// 轮流显示0到9{display_digit(digit);// 显示当前数字}}}#5、显示13.14.15##5.1效果图截屏![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/92bc5b07161045c1910ef44cfb1f1ecc.png#pic_center)##5.2代码 c 在这里插入代码片#includereg52.h#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dulaP3^4;// 段选锁存器sbit welaP1^6;// 位选锁存器// 数码管段码表 (0-9)uchar code TableDula[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};// 数码管位码表 (第1位到第6位)uchar code TableWela[]{0xFE,// 1111 1110 第1位0xFD,// 1111 1101 第2位0xFB,// 1111 1011 第3位0xF7,// 1111 0111 第4位0xEF,// 1110 1111 第5位0xDF// 1101 1111 第6位};// 定义要显示的内容// 这里的数值对应 TableDula 的索引带小数点的我们手动计算好// 1 - 索引 1 (0x06)// 3. - 0x4F (3的段码) 0x80 (小数点) 0xCF// 4. - 0x66 (4的段码) 0x80 (小数点) 0xE6uchar code DispCode[]{1,// 第1位显示 10xCF,// 第2位显示 3. (直接放十六进制值因为超过了0-9的范围)1,// 第3位显示 10xE6,// 第4位显示 4.1,// 第5位显示 15// 第6位显示 5};// 简单的延时函数voiddelay_us(uchar x){while(x--);}voidmain(){uchar i;uchar temp_code;while(1){for(i0;i6;i){// 1. 位选选中第 i 个数码管wela1;P0TableWela[i];wela0;// 2. 段选获取要显示的段码// 判断 DispCode[i] 是否大于 9如果大于9说明是直接定义的带小数点的码if(DispCode[i]9){temp_codeDispCode[i];}else{// 否则查表获取普通数字的段码temp_codeTableDula[DispCode[i]];}dula1;P0temp_code;dula0;// 3. 短延时 (动态扫描)delay_us(200);// 4. 消影P00x00;dula1;dula0;}}}5、使用数码管依次显示1到65.1效果图截屏5.2代码在这里插入代码片#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,// 1111 1110 - 第1位最左侧0xFD,// 1111 1101 - 第2位0xFB,// 1111 1011 - 第3位0xF7,// 1111 0111 - 第4位0xEF,// 1110 1111 - 第5位0xDF// 1101 1111 - 第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;// 核心修改从 TableDula[i] 改为 TableDula[i1]// 第1位显示1(TableDula[1])第2位显示2(TableDula[2])...第6位显示6(TableDula[6])P0TableDula[i1];dula1;// 锁存段选dula0;delay(2);// 保持显示利用视觉暂留}}}6、显示13.14.156.1效果图截屏6.2代码在这里插入代码片#includereg52.h#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dulaP3^4;// 段选锁存器sbit welaP1^6;// 位选锁存器// 数码管段码表 (0-9)uchar code TableDula[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};// 数码管位码表 (第1位到第6位)uchar code TableWela[]{0xFE,// 1111 1110 第1位0xFD,// 1111 1101 第2位0xFB,// 1111 1011 第3位0xF7,// 1111 0111 第4位0xEF,// 1110 1111 第5位0xDF// 1101 1111 第6位};// 定义要显示的内容// 这里的数值对应 TableDula 的索引带小数点的我们手动计算好// 1 - 索引 1 (0x06)// 3. - 0x4F (3的段码) 0x80 (小数点) 0xCF// 4. - 0x66 (4的段码) 0x80 (小数点) 0xE6uchar code DispCode[]{1,// 第1位显示 10xCF,// 第2位显示 3. (直接放十六进制值因为超过了0-9的范围)1,// 第3位显示 10xE6,// 第4位显示 4.1,// 第5位显示 15// 第6位显示 5};// 简单的延时函数voiddelay_us(uchar x){while(x--);}voidmain(){uchar i;uchar temp_code;while(1){for(i0;i6;i){// 1. 位选选中第 i 个数码管wela1;P0TableWela[i];wela0;// 2. 段选获取要显示的段码// 判断 DispCode[i] 是否大于 9如果大于9说明是直接定义的带小数点的码if(DispCode[i]9){temp_codeDispCode[i];}else{// 否则查表获取普通数字的段码temp_codeTableDula[DispCode[i]];}dula1;P0temp_code;dula0;// 3. 短延时 (动态扫描)delay_us(200);// 4. 消影P00x00;dula1;dula0;}}}

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑