数码管展示
文章目录文章目录1.数码管显示6个91.1 效果图展示1.2 代码2.数码管显示2个72.1 效果图展示2.2 代码3.数码管轮播显示6位3.1 效果图展示3.2 代码4.数码管轮播显示2位4.1 效果图展示4.2 代码5.数码管显示0-55.1 效果图展示6.思考题6.1如何显示数码管1-6轮播6.1.1 效果图展示6.1.2 代码6.2数码管0-5轮播6.2.2 代码7. 6位数码管显示13.14.15效果图展示代码文章目录1.数码管显示6个91.1 效果图展示1.2 代码#includereg52.h// 锁存器控制引脚sbit dulaP3^4;// 段选锁存sbit welaP1^6;// 位选锁存// 共阴极数码管段码表下标对应数字0-9unsignedcharcode seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};voidmain(){// 1. 位选保持前3个数码管点亮wela1;P00x80;// 1100 0000前3位低电平选中wela0;// 2. 段选修改这里的下标就能切换显示的数字dula1;P0seg_code[9];// 把9改成0-9的任意数字就显示对应数字dula0;while(1);}2.数码管显示2个72.1 效果图展示2.2 代码#includereg52.h// 锁存器控制引脚sbit dulaP3^4;// 段选锁存sbit welaP1^6;// 位选锁存// 共阴极数码管段码表下标对应数字0-9unsignedcharcode seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};voidmain(){// 1. 位选保持前3个数码管点亮wela1;P00xDE;// 1100 0000前3位低电平选中wela0;// 2. 段选修改这里的下标就能切换显示的数字dula1;P0seg_code[7];// 把7改成0-9的任意数字就显示对应数字dula0;while(1);}3.数码管轮播显示6位3.1 效果图展示3.2 代码#includereg52.h// 锁存器控制引脚sbit dulaP3^4;// 段选锁存sbit welaP1^6;// 位选锁存// 共阴极数码管段码表下标对应数字0-9unsignedcharcode seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};voiddelay(unsignedintms){unsignedinti,j;for(ims;i0;i--)for(j110;j0;j--);}voidmain(){unsignedcharnum0;// 要显示的数字while(1){// 位选只打开 中间两位第4、第5位 wela1;P00x80;// 二进制 1110 0111 → 仅中间两位亮wela0;// 段选显示数字 dula1;P0seg_code[num];dula0;delay(500);// 切换速度num;// 数字1if(num9)num0;// 到9后回到0}}4.数码管轮播显示2位4.1 效果图展示4.2 代码#includereg52.h// 锁存器控制引脚sbit dulaP3^4;// 段选锁存sbit welaP1^6;// 位选锁存// 共阴极数码管段码表下标对应数字0-9unsignedcharcode seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};voiddelay(unsignedintms){unsignedinti,j;for(ims;i0;i--)for(j110;j0;j--);}voidmain(){unsignedcharnum0;// 要显示的数字while(1){// 位选只打开 中间两位第4、第5位 wela1;P00xF3;// 二进制 1110 0111 → 仅中间两位亮wela0;// 段选显示数字 dula1;P0seg_code[num];dula0;delay(500);// 切换速度num;// 数字1if(num9)num0;// 到9后回到0}}5.数码管显示0-55.1 效果图展示#includereg52.h#defineucharunsignedchar#defineuintunsignedint// 锁存器控制引脚sbit dulaP3^4;// 段选锁存器sbit welaP1^6;// 位选锁存器// 数码管段码 0~9uchar code TableDula[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 6位数码管位码共阴极低电平选中// 二进制转16进制111111100xFE, 111111010xFD...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;// 消影// 输出位选P0TableWela[i];wela1;wela0;// 输出段选P0TableDula[i];//i1显示1-6dula1;dula0;delay(2);}}}6.思考题6.1如何显示数码管1-6轮播6.1.1 效果图展示6.1.2 代码#includereg52.h// 头文件 c#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个数码管需要将2进制转换成16进制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];// 先送位码依次选中1-6位数码管wela1;// 锁存位码wela0;P0TableDula[i1];// 再送段码第1个数码管显示0第2个数码管显示1...dula1;// 锁存段码dula0;delay(255);// 保持一段时间}}}6.2数码管0-5轮播6.2.2 代码#includereg52.h// 头文件 c#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个数码管需要将2进制转换成16进制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];// 先送位码依次选中1-6位数码管wela1;// 锁存位码wela0;P0TableDula[i];// 再送段码第1个数码管显示0第2个数码管显示1...dula1;// 锁存段码dula0;delay(255);// 保持一段时间}}}7. 6位数码管显示13.14.15效果图展示代码#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbit dulaP3^4;sbit welaP1^6;// 只改这里带小数点的段码uchar code TableDula[]{0x3F,// 00x06,// 10x5B,// 20x4F|0x80,// 3 带小数点0x66|0x80,// 4 带小数点0x6D,// 50x7D,0x07,0x7F,0x6F};uchar code TableWela[]{0xFE,// 10xFD,// 20xFB,// 30xF7,// 40xEF,// 50xDF// 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[(i0||i2||i4)?1:(i1?3:(i3?4:5))];dula1;dula0;delay(2);}}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2503634.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!