学习笔记|认识数码管|控制原理|数码管实现0-9的显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第九集:数码管静态显示

文章目录

  • 1.认识数码管
  • 2.控制原理
    • 十进制转换为任意进制
    • 其它进制转十进制
  • 3.数码管实现0-9的显示
    • 1.用数组定义0-9的内码
    • 段码跟位码的区别
    • 2.尝试用延时实现0-9的循环显示
    • 3.用按键控制数字的加或者减。
  • 总结
  • 课后练习:

1.认识数码管

数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更的表示数码管想要显示的内容;按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管。
在这里插入图片描述
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
在这里插入图片描述

数码管内部是由多个发光二极管封装在一起组成,他们可以有很多种颜色,很多种外形,很多种样式,但是本质来说他们都是通过点亮内部的LED来显示的,只要面板做好了,理论可以显示任意的字符或者图案。
在这里插入图片描述
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管,尾缀A表示共阳,K表示共阴
4位数码管:
在这里插入图片描述

2.控制原理

在这里插入图片描述

在这里插入图片描述
本节先点亮最后1个“8”,根据原理图,只需要P6和com0(P7.0)即可。
新建excel分析:
在这里插入图片描述
分别显示了二进制,10进制,16进制及对应关系。
可参考:进制之间的相互转换(超详细)。

十进制转换为任意进制

方法都大同小异,本质都是采用 求余法,如果是转换为二进制,则就是对 2 求余,如果转换为八进制,则就是对 8 求余。依此类推,直到商为0终止,并反向取余数(将结果 从下往上 进行排序)。

其它进制转十进制

基数乘以指数的n次方 法 。基数:进制数值本身(比如二进制数 1010,1010就是基数),指数:相应的进制值(二进制的指数就是:2,八进制的指数就是:8),n:表示基数的位置,以小数点分割,左边的数从0开始数,右边的数(也就是小数点后面的数)从 -1开始数。

3.数码管实现0-9的显示

1.用数组定义0-9的内码

以“3.按键控制LED“工程为模板,新建“5.数码管”。
定义数码管显示数组:

u8 SEG_Tab[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0-9

段码跟位码的区别

段指a b c d e f g dp等LED,段码是选择哪一划,位码是选择第几个8,

2.尝试用延时实现0-9的循环显示

用数组实现0至9的显示,数组索引可以用变量,这里定义u8 num。
main()函数修改如下:

void main()   //程序开始运行
{
	u8 num = 0;
	sys_init();
	usb_init();	//初始化USB代码
	EA = 1;


    while(1) //死循环
    {
		if( DeviceState != DEVSTATE_CONFIGURED ) 	//判断USB是否连接成功,最新版usb.h中该有定义
			continue;
		if( bUsbOutReady )    //判断有没有接收到数据
		{
			usb_OUT_done(); //接收应答(固定格式)
		}
		P70 = 0;			//开启一个数码管
//---------------------------
		P6 = SEG_Tab[num];	//这个数码管输出段码
		num++;
		if(num>9)
			num = 0;
		delay_ms(1000);
	}
}

实现了数码管0-9的循环。

3.用按键控制数字的加或者减。

调整while主循环代码,实现按键加减:

    while(1) //死循环
    {
		if( DeviceState != DEVSTATE_CONFIGURED ) 	//判断USB是否连接成功,最新版usb.h中该有定义
			continue;
		if( bUsbOutReady )    //判断有没有接收到数据
		{
			usb_OUT_done(); //接收应答(固定格式)
		}
		P70 = 0;			//开启一个数码管
---------------------------
//		P6 = SEG_Tab[num];	//这个数码管输出段码
//		num++;
//		if(num>9)
//			num = 0;
//		delay_ms(1000);
		P6 = SEG_Tab[num];	//这个数码管输出段码

		if (KEY1 == 0)
		{
			delay_ms(10);
			if (KEY1 == 0)
			{
				while(KEY1 == 0); //松开后继续执行以下程序
				if(num<9)
					num++;

			}
		}
		if (KEY2 == 0)
		{
			delay_ms(10);
			if (KEY2 == 0)
			{
				while(KEY2 == 0);
				if(num>0)
					num--;

			}
		}

	}

感觉有点单调,加个蜂鸣:

if (KEY2 == 0)
			{
				BEEP = 0;
				delay_ms(10);
				BEEP = 1;
				while(KEY2 == 0);
				if(num>0)
					num--;

			}

先蜂鸣一声,松开按键后加或者减。

总结

1.了解数码管的数字内码的由来
2.学会数码管通过数组的方式获取数值

课后练习:

1.尝试使用数码管显示- H J L N o P U t r 等字母或符号。
2.通过一个按键设置数码管显示数字0-9循环,在按一下另一个按键的时候,数码管上显示的数字几,蜂鸣器就响几声。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【触动精灵】IDE 连接设备

文章目录 1. 安装 TSStudio2. 下载 蒲公英VPN使用方法后台管理设备 3. 下载 雷电模拟器雷电设置安装蒲公英安装触动精灵 4. IDE 连入设备 1. 安装 TSStudio 登录触动官网&#xff0c;注册触动账号。 左下角开发工具&#xff0c;选择下载 IDE 触动脚本编辑器界面如下&#xff…

计算机毕设之Python的高校成绩分析(含文档+源码+部署)

本系统阐述的是一个高校成绩分析系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体架构。…

[Android]JNI的基础知识

目录 1.什么是JNI 2.配置JNI开发环境NDK 3.创建Native C类型的项目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中调用 native-lib.cpp 中实现的本地方法 1.什么是JNI JNI&#xff08;Java Native Interface&#xff09;是一…

Stable Diffusion 提示词入门指南

前言 本文主要讲解 Stable Diffusion &#xff08;下文简称 SD&#xff09;提示词的用法&#xff0c;帮助大家生成更高质量的图片 本章节主要讲解文生图&#xff0c;其他类型读者可以自行探索。同时本文主要是以 Stable Diffusion Discard 的形式生成图片 如果各位对于图片隐…

vulhub之MinIO信息泄露漏洞(CVE-2023-28432)

文章目录 0x01 前言0x02 漏洞描述0x03 影响范围0x04 漏洞复现1.启动环境2.查看端口3.构造POC 0x05 修复建议 0x01 前言 本次测试仅供学习使用&#xff0c;如若非法他用&#xff0c;与本文作者无关&#xff0c;需自行负责&#xff01;&#xff01;&#xff01; 0x02 漏洞描述 …

AR地图微信小程序:数字化时代下地图应用的新突破

随着数字化时代的到来&#xff0c;地图应用成为人们日常生活中不可或缺的工具。而随着增强现实&#xff08;AR&#xff09;技术的快速发展&#xff0c;AR地图微信小程序应运而生&#xff0c;为用户提供了一种全新的地图导航体验。本文将深入探讨AR地图微信小程序的专业性和思考…

茶凳浅谈-使用QCA7006AQ 让电动汽车成为智慧电网的一环

前言: 智慧电网一词相信大家都已经耳熟能详。智能电网是指采用先进的电力技术和设备、信息与通信技术&#xff0c;系统地实现电网的智能型监测、分析和决策控制&#xff0c;支持新型能源发电和灵活优质用电&#xff0c;具有高自动化水平&#xff0c;并有一定自愈、互动功能的安…

爬虫逆向实战(二十六)--某某学堂登录

一、数据接口分析 主页地址&#xff1a;某某学堂 1、抓包 通过抓包可以发现数据接口是Account/LoginPost 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现pass是加密参数 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无co…

C#,《小白学程序》第六课:队列(Queue)的应用,《实时叫号系统》

医院里面常见的叫号系统怎么实现的&#xff1f; 1 文本格式 /// <summary> /// 下面定义一个新的队列&#xff0c;用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序》第…

Java稀疏数组

目录 1.稀疏数组 2.稀疏数组的使用 2.1 二维数组转换为稀疏数组 2.2 稀疏数组转换为二维数组 1.稀疏数组 稀疏数组&#xff08;Sparse Array&#xff09;&#xff1a;当一个数组中的大部分元素为相同的值&#xff0c;可使用稀疏数组来保存该数组&#xff0c;可以将稀疏数组…

eslint和prettier格式化冲突

下载插件 ESLint 和 Prettier ESLint 进入setting.json中 setting.json中配置 {"editor.tabSize": 2,"editor.linkedEditing": true,"security.workspace.trust.untrustedFiles": "open","git.autofetch": true,"…

【Vue3+Ts】项目启动准备和配置项目代码规范和css样式的重置

项目启动准备 创建项目&#xff08; 使用Vite 构建工具创建项目模板&#xff09;目录介绍插件安装创建别名编译说明项目配置配置icon和标题配置项目别名配置ts.config.json检测vscode的插件是否配置 配置项目代码规范集成editorconfig配置prettier工具库ESLint检测配置 CSS样式…

查漏补缺 - 构造函数,原型,this,原型链,继承

目录 1&#xff0c;构造函数2&#xff0c;原型3&#xff0c;this4&#xff0c;原型链1&#xff0c;特点2&#xff0c;Object.prototype.toString()3&#xff0c;instanceof 运算符4&#xff0c;Object.getPrototypeOf()5&#xff0c;创建空原型对象6&#xff0c;面试题 5&#…

信息系统项目管理师(第四版)教材精读思维导图-第六章项目管理理论

请参阅我的另一篇文章&#xff0c;综合介绍软考高项&#xff1a; 信息系统项目管理师&#xff08;软考高项&#xff09;备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图PDF格式 本章思维导图XMind源文件 目录 6.1 PMBOK的发展 6.2 项目基本要素 6.3…

uview ui 查看版号

版本查询2种方式 有两种方式可以查询到正在使用的uView的版本&#xff1a; // 通过console.log打印的形式 console.log(uni.$u.config.v);// 可以查阅uView的配置文件得知当前版本号&#xff0c;具体位置为&#xff1a; /uview-ui/libs/config/config.js

图书馆项目Java阅览室管理系统jsp源代码MySQL

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 图书馆项目 系统有1权限&#xff1a;管理员 用所技术…

G. The Morning Star - 思维

分析&#xff1a; 直接暴力就会tle&#xff0c;不知道怎么下手&#xff0c;可以统计八个方向一条线上的所有坐标&#xff0c;这些坐标一定可以放在一起满足&#xff0c;分析都有哪些线&#xff0c;当横坐标相同时会有竖着的一条线都可以&#xff0c;也就是x c&#xff0c;当纵…

华为OD机试 - 数字序列比大小 - 贪心算法(Java 2023 B卷 100分)

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 一、题目描述 A&#xff0c;B两个人万一个数字比大小的游戏&#xff0c;在游戏前&#xff0c;两个人会拿…

【Go 基础篇】Go语言结构体基本使用

在Go语言中&#xff0c;结构体是一种重要的数据类型&#xff0c;用于定义和组织一组不同类型的数据字段。结构体允许开发者创建自定义的复合数据类型&#xff0c;类似于其他编程语言中的类。本文将深入探讨Go语言中结构体的定义、初始化、嵌套、方法以及与其他语言的对比&#…

期权交易权限开通:需满足哪些要求,开通流程是怎样的?

现在期权开通方式多种多样&#xff0c;一种是50万元券商开通的正规渠道&#xff0c;一种是民间第三方期权分仓平台0门槛开通的方式&#xff0c;期权的买方风险有限收益无限&#xff0c;卖方风险无限收益有限&#xff0c;下文介绍期权交易权限开通&#xff1a;需满足哪些要求&am…