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

【蓝桥杯入门记录】静态数码管例程

目录

一、补充 (code)

二、例程

(1)例程1:数码管显示某一位(某一杠)。以点亮8段数码管最上面的横杠为例。

(2)例程2:数码管的8个段依次点亮(其他保持熄灭)

(3)例程3:数码管显示某一个数值。(本例以点亮8段数码管显示数组“1”为例)

(4)例程4:数码管依次显示0-9、-、全部熄灭,显示间隔为500MS;

(5)例程5:数码管依次显示:0-9、-、全部熄灭,每隔数码管显示间隔500MS;要求数码管码值使用数组,功能函数使用for循环。

(6)例程6:按键控制数码管显示。S7、S6、S5、S4按键分别控制数码管显示1、2、3、4数字。

(7)例程7:按键控制数码管正及时、倒计时。本例以S7按键按下数码管开始0->9正计时、S6按键按下数码管开始9->0倒计时。注意:按键采用松手检测


一、补充 (code)

unsigned char code SEG[] = {0XF0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char SEG[] = {0XF0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};

区别:不写code(程序读取快),代表所创建的数组被单片机从程序存储器中读取,存入单片机的内存中(IM);写code(程序读取较慢,不影响数码管)代表所创建的数组直接存储到程序存储器中,单片机不会把数组存入IM中;但是如果编写点阵等,是推荐写code。

二、例程

(1)例程1:数码管显示某一位(某一杠)。以点亮8段数码管最上面的横杠为例。

//头文件声明区域
#include <STC15F2K60S2.H>//程序主体
void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序P0 = 0XFE;//1111 1110while(1);}

(2)例程2:数码管的8个段依次点亮(其他保持熄灭)

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量声明区域
unsigned char SEG = 0;//函数定义区域
void Delay(unsigned int time)		//@11.0592MHz
{unsigned char i, j;while(time--){_nop_();i = 2;j = 199;do{while (--j);} while (--i);}}}
void SEG_Left(void)
{for(SEG = 0;SEG < 8;SEG++){P0 = ~(0x01<<i);Delay(500);}}//程序主体
void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序while(1){SEG_Left();}}

(3)例程3:数码管显示某一个数值。(本例以点亮8段数码管显示数组“1”为例)

//头文件声明区域
#include <STC15F2K60S2.H>//程序主体
void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序P0 = 0XF9;while(1);}

(4)例程4:数码管依次显示0-9、-、全部熄灭,显示间隔为500MS;

#include <STC15F2K60S2.H>void main()
{P2 = 0XA0;P0 = OX00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序while(1){P0 = 0XC0; Delay(500);//0P0 = 0XF9; Delay(500);//1P0 = 0XA4; Delay(500);//2P0 = 0XB0; Delay(500);//3P0 = 0X99; Delay(500);//4P0 = 0X92; Delay(500);//5P0 = 0X82; Delay(500);//6P0 = 0XF8; Delay(500);//7P0 = 0X80; Delay(500);//8P0 = 0X90; Delay(500);//9P0 = 0XBF; Delay(500);//-P0 = 0XFF; Delay(500);//全部熄灭}}

(5)例程5:数码管依次显示:0-9、-、全部熄灭,每隔数码管显示间隔500MS;要求数码管码值使用数组,功能函数使用for循环。

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量声明区域
unsigned char code SEG[] = {0XF0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned int i = 0;
//函数定义区域
void Delay(unsigned int time)		//@11.0592MHz
{unsigned char i, j;while(time--){_nop_();i = 2;j = 199;do{while (--j);} while (--i);}}//程序主体
void main()
{P2 = 0XA0;P0 = 0X00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序while(1){for(i = 0;i < 11;i++){P0 = SEG[i];Delay(500);}}}

(6)例程6:按键控制数码管显示。S7、S6、S5、S4按键分别控制数码管显示1、2、3、4数字。

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量声明区域
unsigned char code SEG[] = {0XF0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char S7_Flag = 0,S6_Flag = 0,S5_Flag = 0,S4_Flag = 0;
//函数定义区域
void Delay(unsigned int time)		//@11.0592MHz
{unsigned char i, j;while(time--){_nop_();i = 2;j = 199;do{while (--j);} while (--i);}}
//按键扫描函数
void KeyScan(void)
{if(P30 == 0){Delay(10);if(P30 == 0) S7_Flag = 1;while(!P30);}else if(P31 == 0){Delay(10);if(P31 == 0) S6_Flag = 1;while(!P30);}else if(P32 == 0){Delay(10);if(P32 == 0) S5_Flag = 1;while(!P30);}else if(P31 == 0){Delay(10);if(P33 == 0) S4_Flag = 1;while(!P30);}}//程序主体
void main()
{P2 = 0XA0;P0 = 0X00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序while(1){KeyScan();if(P30 == 0) {S7_Flag = 0;P0 = SEG[1];}if(P31 == 0) {S6_Flag = 0;P0 = SEG[2];}if(P32 == 0) {S5_Flag = 0;P0 = SEG[3];}if(P33 == 0) {S4_Flag = 0;P0 = SEG[4];}}}

(7)例程7:按键控制数码管正及时、倒计时。本例以S7按键按下数码管开始0->9正计时、S6按键按下数码管开始9->0倒计时。注意:按键采用松手检测

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量声明区域
unsigned char code SEG[] = {0XF0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char S7_Flag = 0,S6_Flag = 0,S5_Flag = 0,S4_Flag = 0;
unsigned char SEG_Flag = 0;
unsigned int i = 0;
//函数定义区域
void Delay(unsigned int time)		//@11.0592MHz
{unsigned char i, j;while(time--){_nop_();i = 2;j = 199;do{while (--j);} while (--i);}}
//按键扫描函数
void KeyScan(void)
{if(P30 == 0){Delay(10);if(P30 == 0) S7_Flag = 1;while(!P30);}else if(P31 == 0){Delay(10);if(P31 == 0) S6_Flag = 1;while(!P30);}else if(P32 == 0){Delay(10);if(P32 == 0) S5_Flag = 1;while(!P30);}else if(P31 == 0){Delay(10);if(P33 == 0) S4_Flag = 1;while(!P30);}}//程序主体
void main()
{P2 = 0XA0;P0 = 0X00;P2 = 0X80;P0 = 0XFF;//初始化程序P2 = 0XC0;P0 = 0X01;P2 = 0XFF;P0 = 0XFF;//打开第一个数码管程序while(1){KeyScan();if(P30 == 0) {S7_Flag = 0;SEG_Flag = 1;}if(P31 == 0) {S6_Flag = 0;SEG_Flag = 2;}if(SEG_Flag == 1)		//正计时{for(i = 0;i < 10;i++){P0 = SEG[i];Delay(1000);}}if(SEG_Flag == 2)		//倒计时{for(i = 9;i >= 0;i--){P0 = SEG[i];Delay(1000);}}}}

相关文章:

【蓝桥杯入门记录】静态数码管例程

目录 一、补充 &#xff08;code&#xff09; 二、例程 &#xff08;1&#xff09;例程1&#xff1a;数码管显示某一位&#xff08;某一杠&#xff09;。以点亮8段数码管最上面的横杠为例。 &#xff08;2&#xff09;例程2&#xff1a;数码管的8个段依次点亮&#xff08;其他…...

6.openEuler系统服务的配置和管理(二)

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 3.任务管理 任务的概念和相关术语: 当你在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因…...

一招鲜吃遍天!ChatGPT高级咒语揭秘:记忆、洗稿、速写SEO文章(一)

🌟 摘要 🌟 这个专栏系列的初衷是针对特定痛点精心设计GPT提示词,在这篇文章中,我们深入探讨了利用GPT技术解决三个常见挑战:增强记忆力、内容创新、以及SEO文章速写的高级技巧。这些挑战分别对应三个独特的解决策略,我们将逐一详细解析。 首先,解决记忆增强的挑战,我…...

LeetCode 每日一题 2024/2/19-2024/2/25

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/19 590. N 叉树的后序遍历2/20 105. 从前序与中序遍历序列构造二叉树2/21 106. 从中序与后序遍历序列构造二叉树2/22 889. 根据前序和后序遍历构造二叉树2/23 2583. 二叉…...

Javaweb之SpringBootWeb案例之配置优先级的详细解析

1. 配置优先级 在我们前面的课程当中&#xff0c;我们已经讲解了SpringBoot项目当中支持的三类配置文件&#xff1a; application.properties application.yml application.yaml 在SpringBoot项目当中&#xff0c;我们要想配置一个属性&#xff0c;可以通过这三种方式当中…...

GO框架基础 (三)、xorm库

xorm介绍 官网&#xff1a;https://xorm.io/ git文档&#xff1a;https://github.com/go-xorm/xorm xorm 是一个 Go 语言的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它提供了一种简单、高效的方式来将 Go 语言中的结构体与数据库表进行映射&#xff0c;并提供了…...

神经网络系列---回归问题和分类问题

文章目录 回归问题和分类问题回归问题&#xff1a;分类问题&#xff1a;多分类问题&#xff1a;排序问题&#xff1a;自定义损失函数&#xff1a; 回归问题和分类问题 回归问题&#xff1a; 回归问题是一种预测连续数值输出的任务。在这种问题中&#xff0c;模型的目标是根据…...

Jetpack Compose 与 Kotlin 的兼容性对应关系

点击查看&#xff1a;Jetpack Compose 教程 点击查看&#xff1a;Jetpack Compose Kotlin 的兼容性 官网 声明依赖项 如需添加 Compose Compiler 的依赖项&#xff0c;您必须将 Google Maven 代码库添加到项目中。如需了解详情&#xff0c;请参阅 Google 的 Maven 代码库。 …...

汇编反外挂

在软件保护领域&#xff0c;尤其是游戏保护中&#xff0c;反外挂是一个重要的议题。外挂通常指的是一种第三方软件&#xff0c;它可以修改游戏数据、操作游戏内存或提供其他作弊功能&#xff0c;从而给玩家带来不公平的优势。为了打击外挂&#xff0c;游戏开发者会采取一系列措…...

134 Linux 系统编程11 ,readlink命令,文件目录rwx权限差异,目录操作函数

一 readlink 命令 前面知道&#xff0c;如果a.soft是一个软链接&#xff0c;我们使用 cat a.soft,会直接查看这个软链接指向的文件 那么我们就是想看这个软链接是啥&#xff0c;可以使用 readlink a.soft 二 获取工作目录 getcwd函数 获取进程当前工作目录 (卷3&#xff0c;标…...

仿12306校招项目业务二(列车检索)

目录 验证数据 加载城市数据 查询列车站点信息 查询列车余票信息 构建列车返回数据 12306 项目中列车数据检索接口路径 &#xfeff; TicketController的pageListTicketQuery&#xfeff;。 GetMapping("/api/ticket-service/ticket/query")public Result<T…...

前端架构: 实现脚手架终端UI样式之ANSI escape code, Chalk, Ora介绍

在脚手架当中实现命令行的UI显示 1 &#xff09;概述 在命令行中&#xff0c;如果想实现除传统的常规文本以外的内容比如想对字体进行加粗斜体下划线&#xff0c;包括对它改变颜色改变前景色改变后景色等等需要借助一个叫做 ANSI escape code 这样的一个概念它其实是一个标准&…...

platform(驱动层+应用层)实现终端和中断开关点灯

设备树文件添加 myplatform{compatible"hqyj,myplatform";interrupt-parent<&gpiof>;interrupts<8 0>,<7 0>,<9 0>;led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>;reg<0x123…...

黑马JavaWeb开发跟学(一)Web前端开发HTML、CSS基础

黑马JavaWeb开发一.Web前端开发HTML、CSS基础 引子、Web开发介绍传统路线本课程全新路线本课程适用人群课程收获一、什么是web开发二、网站的工作流程三、网站的开发模式四、网站的开发技术 前端开发基础一、前端开发二、HTML & CSS2.1 HTML快速入门2.1.1 操作第一步第二步…...

Nest.js权限管理系统开发(四)Swagger API接入

什么是swagger Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(<https://swagger.io/>)。 它的主要作用是&#xff1a; 1. 使得前后端分离开发更加方便&#xff0c;有利于团队协作 2. 接口的文档在线自动生成&#xf…...

(全注解开发)学习Spring-MVC的第三天

全注解开发 第一部分 : 1.1 消除spring-mvc.xml 这些是原来spring-mvc.xml配置文件的内容 <!--1、组件扫描, 使Controller可以被扫描到--><context:component-scan base-package"com.itheima.controller"/><!--2、非自定义的Bean, 文件上传解析器--&…...

设计模式学习笔记 - 面向对象 - 7.为什么要多用组合少用继承?如何决定该用组合还是继承?

前言 在面向对象编程中&#xff0c;有一条非常经典的设计原则&#xff1a;组合优于继承&#xff0c;多用组合少用继承。 为什么不推荐使用继承&#xff1f; 组合比继承有哪些优势&#xff1f; 如何判断该用组合还是继承&#xff1f; 为什么不推荐使用继承&#xff1f; 继承…...

RocketMQ生产环境常见问题分析与总结

RocketMQ生产环境常见问题分析与总结 如何保证消息不丢失 消息丢失场景 对于跨网络的节点可能会丢消息&#xff0c;因为MQ存盘都会先写入OS的PageCache中&#xff0c;然后再让OS进行异步刷盘&#xff0c;如果缓存中的数据未及时写入硬盘就会导致消息丢失 生产端到Broker端Brok…...

前端打包工具的发展历程、思路(grunt,gulp,webpack,vite)

现在前端发展真快&#xff0c;需要学的东西太多了&#xff0c;下面总结下前端打包的发展过程&#xff0c;便于区分和选择学习。 什么是前端打包 前端打包是指将多个JavaScript文件、CSS文件、图片等资源进行合并和优化处理,并输出为一个或多个文件的过程。这样做的目的是减少…...

利用Python将文件夹下多个txt文本写入到同一个excel中(每一个文件占一行)

1、 将文件夹下多个txt文本写入到同一个excel中&#xff08;每一个文件占一行&#xff09;: # -*- coding: utf-8 -*- import os import pandas as pd# 获取文件夹中的所有txt文件 folder_path rG:\Cygwin\ txt_files [f for f in os.listdir(folder_path) if f.endswith(.t…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...