news 2026/5/11 1:28:58

作业4:独立按键+数码管实操

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
作业4:独立按键+数码管实操

文章目录

  • 1.测试代码视频
  • 2.流水灯视频
  • 3.独立按键视频(点亮四个灯)
  • 4.独立按键视频(思考题点亮8个灯)
  • 5.数码管显示“111111”
  • 6.数码管显示“123456”
  • 7.数码管显示“11.12.13”
  • 8.数码管显示“HH8800.”

1.测试代码视频

测试

2.流水灯视频

流水灯

#include <reg51.h> // 包含51单片机的特殊功能寄存器定义 #define uchar unsigned char // 定义 uchar 为 unsigned char 类型,方便使用 uchar a; // 定义全局变量 a,用来保存当前灯的状态 // ------------------------------ // 函数:delay() // 作用:实现简单的延时 // ------------------------------ void delay(unsigned int time) { unsigned int i, j; for (i = 0; i < time; i++) { for (j = 0; j < 120; j++); } } // ------------------------------ // 主函数:main() // 作用:以移位方式控制 P0 口实现流水灯 // ------------------------------ void main() { P1 = 0xfe; // 初始化:P0 = 1111 1110(二进制),点亮第一个灯(假设低电平点亮) while (1) { a = P1; // 读取当前P0口的灯状态,1111 1110保存到变量a中 a = a << 1; // 左移一位,灯光往左移。例如:(1111 1110 << 1) = 1111 1100 a = a | 0x01; // 将最低位强制置为1,防止全0。例如:1111 1100 | 0000 0001 = 1111 1101 delay(300); // 延时一段时间,实现灯的停留视觉效果 if (a == 0xff) // 如果所有灯都亮了(1111 1111),表示移到了尽头 { a = 0xfe; // 重置为初始值:1111 1110(只点亮第一个灯) } P1 = a; // 输出新的灯状态到P0口 } }

3.独立按键视频(点亮四个灯)

4个灯

#include <REGX51.H> sbit KEY1 = P3^4; // 按键连接 sbit KEY2 = P3^5; sbit KEY3 = P3^6; sbit KEY4 = P3^7; sbit LED1 = P1^0; // LED连接 sbit LED2 = P1^1; sbit LED3 = P1^2; sbit LED4 = P1^3; sbit LED5 = P1^4; sbit LED6 = P1^5; sbit LED7 = P1^6; sbit LED8 = P1^7; // 延时函数 void delay_ms(unsigned int ms) { unsigned int i, j; for(i = 0; i < ms; i++) for(j = 0; j < 123; j++); } void main() { P0 = 0xFF; // 初始所有LED熄灭(因低电平点亮) while(1) { if(KEY1 == 0){ delay_ms(10); if(KEY1 == 0) { while(!KEY1); LED1=~LED1; } } if(KEY2 == 0){ delay_ms(10); if(KEY2 == 0) { while(!KEY2); LED3=~LED3; } } if(KEY3 == 0){ delay_ms(10); if(KEY3 == 0) { while(!KEY3); LED5=~LED5; } } if(KEY4 == 0){ delay_ms(10); if(KEY4 == 0) { while(!KEY4); LED7=~LED7; } } } }

4.独立按键视频(思考题点亮8个灯)

8个灯

5.数码管显示“111111”

111111

6.数码管显示“123456”

123456

7.数码管显示“11.12.13”

11.12.13

8.数码管显示“HH8800.”

IMG_3607

#include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit dula = P2^6; // 段选锁存器 sbit wela = P2^7; // 位选锁存器 // 数码管的段码表(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 0x76 }; // 数码管段码表(0~9,带小数点) uchar code TableDulaPoint[] = { 0xbf, // 0. => 10111111 // 补充代码 0x86,// 1. => 10000110 0xdb,// 2. => 11011011 0xcf,// 3. => 11001111 0xe6,// 4. => 11100110 0xed,// 5. => 11101101 0xfd,// 6. => 11111101 0x87,// 7. => 10000111 0xff,// 8. => 11111111 0xef,// 9. => 11101111 0xf6 }; // 数码管显示位码,对应第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位数码管 }; // 延时函数 void delay(uchar x) { uchar j; while(x--) { for(j = 0; j < 125; j++); } } void main() { uchar i; // 显示数据:对应的数字内容 uchar displayData[6] = {10, 10, 8, 8, 0, 0}; // 小数点标志位:1表示该位需要小数点 uchar pointFlag[6] = {0, 0, 0, 0, 0, 1}; // 第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/5/11 1:28:57

kasetto:用SQL思维操作本地CSV/JSON文件的命令行利器

1. 项目概述&#xff1a;一个被低估的本地化数据管理利器如果你经常需要在本地处理一些结构化的数据&#xff0c;比如从网页上抓取的信息、日常记账的记录、项目进度的跟踪&#xff0c;或者只是想把一些零散的笔记整理成表格&#xff0c;你可能会面临一个选择&#xff1a;是用E…

作者头像 李华
网站建设 2026/5/11 1:25:34

AI代码助手评测体系构建:从原理到实践的完整指南

1. 项目概述&#xff1a;AI代码助手评测&#xff0c;到底在测什么&#xff1f;最近在GitHub上看到一个挺有意思的项目&#xff0c;叫ameerkhan9394/ide-ai-benchmark。光看名字&#xff0c;你大概能猜到&#xff0c;这是一个给集成开发环境&#xff08;IDE&#xff09;里的AI助…

作者头像 李华
网站建设 2026/5/11 1:23:57

PCB前期构思:用AI绘制元器件布局与排布参考简图的实操教程

在PCB设计的前期构思阶段&#xff0c;用AI文生图模型快速绘制元器件布局参考简图&#xff0c;能帮助硬件工程师在进入EDA工具之前就理清空间排布思路。GPT-Image-2能够根据文字描述生成元件排列示意图、功能分区图和空间布局参考图&#xff0c;适合在方案评审、团队讨论和设计预…

作者头像 李华
网站建设 2026/5/11 1:21:31

开源 AI 智能体 OpenClaw 完整部署指南 小白零基础适配

2026 年热度走高的开源 AI 智能体 OpenClaw&#xff08;昵称小龙虾&#xff09;&#xff0c;GitHub 星标突破 28 万&#xff0c;凭借本地运行 零代码配置 自动任务处理三大特点收获大量用户认可&#xff01; 本文面向新手小白整理完整实操教程&#xff0c;搭配自制一键部署安…

作者头像 李华
网站建设 2026/5/11 1:19:33

在 Claude Code 中配置 Taotoken 作为替代 API 提供方

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在 Claude Code 中配置 Taotoken 作为替代 API 提供方 对于使用 Claude Code 进行开发的用户而言&#xff0c;直接接入一个稳定、可…

作者头像 李华