news 2026/5/2 2:58:31

作业2 案例5_4: 6位数码管轮播0-9【静态显示】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
作业2 案例5_4: 6位数码管轮播0-9【静态显示】

文章目录

  • 1、数码管显示6个9
    • 1.1效果图截屏
    • 1.2代码
  • 2、数码管显示两个7(一头一尾)
    • 2.1效果图截屏
    • 2.2代码
  • 3、数码管轮播显示6位
    • 3.1效果图截屏
    • 3.2代码
  • 4、数码管轮播显示两位
    • 4.1效果图截屏
    • 4.2代码
  • 5、使数码管依次显示1-6
    • 5.1效果图截屏
    • 5.2代码
  • 6、六位数码管显示“13.14.15”
    • 6.1效果图截屏
    • 6.2代码

1、数码管显示6个9

1.1效果图截屏

1.2代码

#include<reg52.h>// 头文件// 定义锁存器控制引脚sbit dula=P3^4;// 锁存器U2(段选)sbit wela=P1^6;// 锁存器U2(位选)// 主函数voidmain(){// 1.位选控制wela=1;// 打开位选P0=0xc0;// 位选6个数码管wela=0;// 关闭位选// 2.段选控制dula=1;// 打开段选P0=0x6f;// 数码管显示“9”dula=0;// 关闭段选// 3.保持while(1);}

2、数码管显示两个7(一头一尾)

2.1效果图截屏

2.2代码

#include<reg52.h>// 头文件// 定义锁存器控制引脚sbit dula=P3^4;// 锁存器U2(段选)sbit wela=P1^6;// 锁存器U2(位选)// 主函数voidmain(){// 1.位选控制wela=1;// 打开位选P0=0xde;// 位选第1个和第6个数码管wela=0;// 关闭位选// 2.段选控制dula=1;// 打开段选P0=0x07;// 数码管显示“7”dula=0;// 关闭段选// 3.保持while(1);}

3、数码管轮播显示6位

3.1效果图截屏

3.2代码

#include<reg52.h>// 头文件#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dula=P3^4;// 锁存器U2(段选)sbit wela=P1^6;// 锁存器U3(位选)// 共阴极数码管段码表uchar code seg_code[]={0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 延时函数voiddelay(uint ms){uint i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}// 数码管展示函数voiddisplay_digit(uchar digit){P0=seg_code[digit];// 发送数字对应的段码dula=1;// 打开段选delay(5);// 稳定信号dula=0;// 关闭段选}// 主函数voidmain(){uchar digit;while(1){// 1.位选控制wela=1;// 打开位选P0=0xc0;// 位选6个数码管 1100 0000wela=0;// 关闭位选// 2.段选控制for(digit=0;digit<10;digit++)// 轮流显示0到9{display_digit(digit);//调用数码管显示函数delay(500);//调用延时函数}}}

4、数码管轮播显示两位

4.1效果图截屏

4.2代码

#include<reg52.h>// 头文件#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dula=P3^4;// 锁存器U2(段选)sbit wela=P1^6;// 锁存器U3(位选)// 共阴极数码管段码表uchar code seg_code[]={0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 延时函数voiddelay(uint ms){uint i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}// 数码管展示函数voiddisplay_digit(uchar digit){P0=seg_code[digit];// 发送数字对应的段码dula=1;// 打开段选delay(5);// 稳定信号dula=0;// 关闭段选}// 主函数voidmain(){uchar digit;while(1){// 1.位选控制wela=1;// 打开位选P0=0xf3;// 位选第3个和第4个数码管 1111 0011wela=0;// 关闭位选// 2.段选控制for(digit=0;digit<10;digit++)// 轮流显示0到9{display_digit(digit);//调用数码管显示函数delay(500);//调用延时函数}}}

5、使数码管依次显示1-6

5.1效果图截屏

5.2代码

#include<reg52.h>// 头文件 ```c#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit dula=P3^4;// 段选锁存器U2sbit wela=P1^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,// 1111 1110 -> 第1位(P0.0 置低,其它为高)=> 选中第1位数码管0xfd,// 1111 1101 -> 第2位(P0.1 置低)=> 选中第2位数码管0xfb,// 1111 1011 -> 第3位(P0.2 置低)=> 选中第3位数码管0xf7,// 1111 0111 -> 第4位(P0.3 置低)=> 选中第4位数码管0xef,// 1110 1111 -> 第5位(P0.4 置低)=> 选中第5位数码管0xdf// 1101 1111 -> 第6位(P0.5 置低)=> 选中第6位数码管};// 延时函数voiddelay(uchar x){uchar j;while(x--){for(j=0;j<125;j++);}}// 主函数voidmain(){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[i+1];// 再送段码,第1个数码管显示1,第2个数码管显示2...dula=1;// 锁存段码dula=0;delay(2);// 保持一段时间}}}

6、六位数码管显示“13.14.15”

6.1效果图截屏

6.2代码

#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbit dula=P3^4;// 段选锁存器sbit wela=P1^6;// 位选锁存器// 数码管的段码表(0~9)uchar code TableDula[]={0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 数码管段码表(0~9,带小数点)uchar code TableDulaPoint[]={0xBF,// 0. => 10111111// 补充代码0x86,// 1. => 100001100xdb,// 2. => 110110110xcf,// 3. => 110011110xe6,// 4. => 111001100xed,// 5. => 111011010xfd,// 6. => 111111010x87,// 7. => 100001110xff,// 8. => 111111110xdf// 9. => 11101111};// 数码管显示位码,对应第1到第6个数码管uchar code TableWela[]={0xfe,// 1111 1110 -> 第1位(P0.0 置低,其它为高)=> 选中第1位数码管0xfd,// 1111 1101 -> 第2位(P0.1 置低)=> 选中第2位数码管0xfb,// 1111 1011 -> 第3位(P0.2 置低)=> 选中第3位数码管0xf7,// 1111 0111 -> 第4位(P0.3 置低)=> 选中第4位数码管0xef,// 1110 1111 -> 第5位(P0.4 置低)=> 选中第5位数码管0xdf// 1101 1111 -> 第6位(P0.5 置低)=> 选中第6位数码管};// 延时函数voiddelay(uchar x){uchar j;while(x--){for(j=0;j<125;j++);}}voidmain(){uchar i;// 显示数据:对应的数字内容uchar displayData[6]={1,3,1,4,1,5};// 小数点标志位:1表示该位需要小数点uchar pointFlag[6]={0,1,0,1,0,0};// 第2位和第4位显示带小数点while(1){for(i=0;i<6;i++){P0=0x00;// 清除显示dula=0;wela=0;// 位选P0=TableWela[i];wela=1;wela=0;// 段码:判断是否需要小数点if(pointFlag[i]==1){P0=TableDulaPoint[displayData[i]];}else{P0=TableDula[displayData[i]];}dula=1;dula=0;delay(2);// 稍作延时}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 1:04:59

单片机实训作业2

文章目录1.6个9显示2.两位输出73.0_9循环显示4.两位循环0_95.123456显示6.13.14.15静态显示1.6个9显示 #include<reg52.h> sbit dulaP3^4; sbit welaP1^6; void main() {wela1; P00xc0; wela0; dula1; P00x6f; dula0; while(1);2.两位输出7 #include<reg52.h> …

作者头像 李华
网站建设 2026/4/12 1:06:08

终极宝可梦随机化器ZX:重新定义七代游戏的个性化冒险体验

终极宝可梦随机化器ZX&#xff1a;重新定义七代游戏的个性化冒险体验 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-pokemon-random…

作者头像 李华
网站建设 2026/4/10 22:06:12

如何解决Windows下Hadoop运行难题:winutils实战指南

如何解决Windows下Hadoop运行难题&#xff1a;winutils实战指南 【免费下载链接】winutils Windows binaries for Hadoop versions (built from the git commit ID used for the ASF relase) 项目地址: https://gitcode.com/gh_mirrors/wi/winutils 你是否在Windows系统…

作者头像 李华