当前位置: 首页 > news >正文

六位数码管显示

#include<reg52.h> // 锁存器控制引脚(保持不变) sbit dula=P3^4; // 段选锁存 sbit wela=P1^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

#include<reg52.h> // 锁存器控制引脚 sbit dula=P3^4; // 段选锁存 sbit wela=P1^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.数码管轮播显示六位

#include<reg52.h> // 头文件 #define uchar unsigned char #define uint unsigned int // 定义锁存器控制引脚 sbit dula=P3^4; // 锁存器U2(段选) sbit wela=P1^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]; // 发送数字对应的段码 dula=1; // 打开段选锁存 delay(1); // 短延时稳定信号 dula=0; // 关闭段选锁存 } // 主函数 void main() { uchar digit; while(1) { // 1.位选控制:选中所有6个数码管(0xC0 = 1100 0000) wela=1; P0=0xc0; wela=0; // 2.段选控制:0-9循环显示 for(digit = 0; digit < 10; digit++) { display_digit(digit); // 显示当前数字 delay(500); // 延时500ms,控制切换速度 } } }

4.数码管轮播显示2位

#include<reg52.h> // 头文件 #define uchar unsigned char #define uint unsigned int // 定义锁存器控制引脚 sbit dula=P3^4; // 锁存器U2(段选) sbit wela=P1^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]; // 发送数字对应的段码 dula=1; // 打开段选锁存 delay(1); dula=0; // 关闭段选锁存 } // 主函数 void main() { uchar digit; while(1) { // ===================== 关键修改 ===================== // 只点亮 第3位 + 第4位 数码管 wela=1; P0=0x33; // 0011 0011 → 仅第3、4位亮 wela=0; // ==================================================== // 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(j=0;j<125;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[i+1]; // 再送段码,第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(j=0;j<125;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[i+1]; // 显示 1 2 3 4 5 6 dula = 1; dula = 0; delay(2); } } }
http://www.jsqmd.com/news/620295/

相关文章:

  • Hyperf方案 API网关统一鉴权
  • 时序数据库选型指南:InfluxDB与TDengine的性能对比与实战安装
  • 高性能无人机飞控系统源码:基于Cesium+Vue3+Vite的三维可视化平台
  • 技术视角:Behdad字体 - 波斯语开源字体的现代化设计与工程实践
  • geoserver修改密码
  • 豆包Trace Ide使用技巧汇总
  • ios开发方向——swift并发进阶核心 @MainActor 与 DispatchQueue.main 解析
  • Hyperf方案 API限流熔断
  • 告别黑壳子DAP!用AT32F403A和CherryUSB自制高速DAPLink V2仿真器(附完整源码)
  • E2E_P01Check 函数笔记
  • 终极宝可梦随机化器ZX:重新定义七代游戏的个性化冒险体验
  • 一条命令搞定OpenClaw部署?PPClaw的便利背后,你得先看清这些代价
  • python学习笔记2
  • OpenClaw 横向评测|对比 AutoGPT、CoPaw、NanoClaw 等主流 AI Agent,谁更适合你?
  • Keyviz:终极免费工具!实时可视化你的键盘鼠标操作,让教学录制更轻松
  • Hyperf方案 API签名验证
  • 第15届省赛蓝桥杯大赛C/C++大学B组
  • C++跨平台性能监控实战:构建CPU、GPU、磁盘与网络一体化探针
  • nav标签适用场景是什么_导航栏语义化写法【方法】
  • 部署成本降60%,响应提速10倍:镜像视界AI视频孪生的工程化价值
  • mysql事务隔离级别切换注意事项_如何保证系统平滑过渡
  • 【传统图像分割算法】- 图像分割之自适应阈值(Adaptive Thresholding)完全解析
  • 嵌入式Linux实战:手把手教你为EC20 4G模块编译GobiNet驱动(附完整Makefile配置)
  • HY-Motion 1.0开源大模型部署教程:支持企业级3D数字人动作生成生产环境
  • 2279 上市公司跨国供应链【存续力】(Sustainability) 指标(2004.07-2026.02)
  • C++ vs .NET 数组原地反转实测:小数组 C++ 碾压,大数组 .NET 反杀?好
  • 蛋白靶点CD49e(整合素α5):细胞黏附机制与抗体药物研发技术解析
  • 《算法题讲解指南:动态规划算法--回文串问题》--35.回文子串,36. 最长回文子串,37.分割回文串 IV,38.分割回文串 II,39.最长回文子序列,40.让字符串成为回文串的最少插入次数
  • 一个拉胯的分库分表方案有多绝望?整个部门都在救火!
  • 茉莉花插件:5步掌握Zotero中文文献管理终极技巧