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

目录

一、补充 (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);}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux前端部署

安装jdk 配置环境变量 刷新配置文件 source profile source /etc/profile tomcat 解压文件 进去文件启动tomcat 开放tomcat的端口号 访问 curl localhsot:8080 改配置文件 改IP,改数据库名字&#xff0c;密码&#xff0c; 安装数据库 将war包拖进去 访问http:…

C++递归

角谷猜想 #include<bits/stdc.h> using namespace std; int n,sum0; void f(int); int main() {cin>>n;f(n);cout<<sum;return 0; } void f(int n){if(n1) return;if(n%20) nn/2;if(n%21) nn*31;sum; } 求两个数M和N的最大公约数

【Python笔记-设计模式】代理模式

一、说明 代理模式是一种结构型设计模式&#xff0c;提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许在将请求提交给对象前后进行一些处理。 (一) 解决问题 控制对对象的访问&#xff0c;或在访问对象前增加额外的功能或控制访问 (二) 使用场景…

[c++] public, private, protected, friend

权限管理是 c 的一大特点&#xff0c;面向对象语言封装的特性也给权限管理带了了方便。c 中的权限主要有 3 种&#xff1a;public&#xff0c;private&#xff0c;protected。类中的函数和属性默认是 private 的&#xff0c;类的继承关系默认也是 private 的。 public&#xf…

apidoc接口文档的自动更新与发布

文章目录 一、概述二、环境准备三、接口文档生成1. 下载源码2. 初始化3.执行 四、文档发布五&#xff0c;配置定时运行六&#xff0c;docker运行七&#xff0c;不足与优化分析 一、概述 最近忙于某开源项目的接口文档整理&#xff0c;采用了apidoc来整理生成接口文档。 apidoc…

深度学习系列59:文字识别

1. 简单文本&#xff1a; 使用google加的tesseract&#xff0c;效果不错。 首先安装tesseract&#xff0c;在mac直接brew install即可。 python调用代码&#xff1a; import pytesseract from PIL import Image img Image.open(1.png) pytesseract.image_to_string(img, lan…

MES管理系统生产过程控制的核心要素

MES&#xff08;制造执行系统&#xff09;是为优化制造业生产过程和管理而设计的软件系统&#xff0c;其核心要素包括&#xff1a; 工单管理&#xff1a;工单管理是MES系统最基本的功能之一&#xff0c;它可以跟踪和管理各种类型的工单&#xff0c;如生产工单、维修工单和质量…

解释 C++ 中的虚拟继承(Virtual Inheritance)

解释 C 中的虚拟继承&#xff08;Virtual Inheritance&#xff09; 在 C 中&#xff0c;虚拟继承&#xff08;Virtual Inheritance&#xff09;是一种特殊的继承方式&#xff0c;用于解决多继承带来的菱形继承&#xff08;Diamond Inheritance&#xff09;问题。虚拟继承主要通…

Spring篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、spring 支持集中 bean scope?二、spring bean 容器的生命周期是什么样的?三、什么是 spring 的内部 bean?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

Java EE改名Jakarta EE,jakarta对程序开发的影响

一、前言 很多Java程序员在使用新版本的Spring6或者springboot3版本的时候&#xff0c;发现了一些叫jakarta的包。我在阅读开源工作流引擎camunda源代码的时候&#xff0c;也发展了大量jakarta的工程包。 比如&#xff1a;camunda的webapps编译工程就提供了2种方式javax和jaka…

SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的多特征分类预测

SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的故障多特征分类预测 目录 SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的故障多特征分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍…

论文阅读:Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases

前言 最近看到一篇ICRA2024上的新文章&#xff0c;是关于多传感器融合SLAM的&#xff0c;好像使用了最近几年文章中较火的轮式里程计。感觉这篇文章成果不错&#xff0c;代码和数据集都是开源的&#xff0c;今天仔细读并且翻译一下&#xff0c;理解创新点、感悟研究方向、指导…

【杂谈】还能这么骗Github开源者?

起因 StarkNet给Github前5000的账户空投了一波STRK代币,一般有资格获得空投的开发者&#xff0c;大概能获得 110个 STRK 代币&#xff0c;按目前价格计算大概 1500人民币左右。 什么是有资格的开发者呢&#xff1f;按 Starknet要求&#xff0c;如果你给在 GitHub上排名前 5000…

【精选】网络安全大厂面试题 2.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

基于SSM的废品买卖回收管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的废品买卖回收管理系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spri…

Spring Boot+ShardingSphere+MySQL实现分库分表:高效数据库扩展

在构建现代Web应用程序时&#xff0c;数据库的性能和可扩展性是至关重要的。当应用程序的数据量逐渐增加时&#xff0c;传统的单一数据库可能无法满足需求。分库分表是一种有效的数据库水平扩展方法&#xff0c;可以显著提高数据库性能并实现负载均衡。 什么是分库分表 分库分…

Vue+SpringBoot打造开放实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

数据库-数据库设计-社交关系

佛 每有一个新方案&#xff0c;就要考虑有什么影响增删改查可扩展性 MySQL 根据ER图设计表 create table follow(id bigint unsigned not null auto_increment comment 主键,gmt_create datetime null default current_timestamp,gmt_modified null default current_timest…

hive表中导入数据 多种方法详细说明

文章中对hive表中导入数据 方法目录 方式一&#xff1a;通过load方式加载数据 方式二&#xff1a;直接向分区表中插入数据 方式三&#xff1a;查询语句中创建表并加载数据&#xff08;as select&#xff09; 方式四&#xff1a;创建表时通过location指定加载数据路径 1. 创建表…

真值表,主析取范式,主合取范式,栈,哈希表

利用栈对表达式求值 根据运算符的各运算符的优先顺序&#xff0c;确定入栈操作 if(compare(s2.top(),s[i])-1)栈内的优先级小&#xff0c;栈外的运算符入栈if(compare(s2.top(),s[i])0)栈内的优先级与栈外的优先级相同&#xff0c;栈内运算符出栈if(compare(s2.top(),s[i]1)栈…