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

单片机语言实例:2、点亮数码管的多种方法

一、共阳数码管静态显示

程序实例1:

#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义void main (void)
{P1=0xc0;   	//二进制 为 1100 0000  参考数码管排列,//可以得出0对应的段点亮,1对应的段熄灭,结果显示数字"0"   while(1){}
}

二、1个共阳数码管显示变化的数字

程序实例2:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义// 显示数值表0-9
unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数
------------------------------------------------*/
void main (void)
{unsigned char i;  //定义一个无符号字符型局部变量 i 取值范围 0~255while (1)         //主循环{for(i=0;i<10;i++)   //加入 for循环,表明for循环大括号中的程序循环执行10次{P1=dofly_table[i]; //循环调用表中的数值Delay(60000);      //延时,方便观看数字变化}}
}/*------------------------------------------------延时函数,含有输入参数 unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{while(--t);
}

三、单个数码管模拟水流

程序实例3:

#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数
------------------------------------------------*/
void main (void)
{unsigned char i;  //定义一个无符号字符型局部变量 i 取值范围 0~255while (1)         //主循环{P1=0xfe;for(i=0;i<6;i++)   //加入 for循环,表明for循环大括号中的程序循环执行6次{Delay(10000);P1<<=1;P1|=0x01;         }}
}
/*------------------------------------------------延时函数,含有输入参数 unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{while(--t);
}

四、按键控制单个数码管显示

程序实例4:

#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义// 显示数值表0-9
unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; /*------------------------------------------------主函数
------------------------------------------------*/
void main (void)
{                 while (1)         //主循环{switch(P3)  //P3口作为独立按键输入端,检测端口电平并做如下判断                            {case 0xfe:	P1=table[1];	break;//0xfe = 1111 1110,case 0xfd:	P1=table[2];	break;//调用表中的第三个元素case 0xfb:	P1=table[3];	break;case 0xf7:	P1=table[4];	break;case 0xef:	P1=table[5];	break;case 0xdf:	P1=table[6];	break;case 0xbf:	P1=table[7];	break;case 0x7f:	P1=table[8];	break;default:	break;    //如果都没按下,直接跳出}}
}

五、单个数码管指示逻辑电平

程序实例5:

#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbit IO_IN = P3^2;  //定义IO 信号输入端/*------------------------------------------------主函数
------------------------------------------------*/
void main (void)
{                while (1)         //主循环{if(IO_IN==1)//如果端口检测到1表示高电平P1=0x89;  //"H"elseP1=0xc7;  //"L"//否则表示低电平,这里使用 条件语句 if 。。。else 。。。 }
}

六、8位数码管显示其中之一

程序实例6:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define	DataPort 	P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1	=	P2^2;//定义锁存使能端口 段锁存
sbit LATCH2	=	P2^3;//                 位锁存/*------------------------------------------------主函数
------------------------------------------------*/
main()
{while(1){DataPort=0xfe; //取位码 第一位数码管选通,即二进制1111 1110LATCH2=1;     //位锁存LATCH2=0;DataPort=0x4F; //取显示数据,段码 “3”共阴字符码LATCH1=1;     //段锁存LATCH1=0;}
}

七、8位数码管静态显示其中之二

程序实例7:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort 	P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1	=	P2^2;//定义锁存使能端口 段锁存
sbit LATCH2	=	P2^3;//                 位锁存/*------------------------------------------------主函数
------------------------------------------------*/
main()
{while(1){DataPort=0x7e; //取位码 第一位数码管选通,即二进制0111 1110LATCH2=1;     //位锁存LATCH2=0;DataPort=0x4F; //取显示数据,段码 “3”共阴字符码LATCH1=1;     //段锁存LATCH1=0;}
}

八、8位数码管动态扫描显示

程序实例8:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1	=	P2^2;//定义锁存使能端口 段锁存
sbit LATCH2	=	P2^3;//                 位锁存// 显示段码值0123456789
unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//分别对应相应的数码管点亮,即位码
unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数
------------------------------------------------*/
main()
{unsigned char i=0;while(1){DataPort = WeiMa[i]; //取位码 LATCH2 = 1;     //位锁存LATCH2 =0;DataPort = DuanMa[i]; //取显示数据,段码LATCH1 = 1;     //段锁存LATCH1 = 0;Delay(200); //扫描间隙延时,时间太长会闪烁,太短会造成重影i++;if(8 == i)    //检测8位扫描完全结束?如扫描完成则从第一个开始再次扫描8位i = 0;}
}
/*------------------------------------------------延时函数,含有输入参数 unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{while(--t);
}

九、8位数码管动态扫描原理演示

程序实例9:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
sbit LATCH2 = P2^3;//                 位锁存unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567
unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数
------------------------------------------------*/
main()
{unsigned char i=0;while(1){DataPort = WeiMa[i]; //取位码 LATCH2 = 1;     //位锁存LATCH2 = 0;DataPort=dofly_DuanMa[i]; //取显示数据,段码LATCH1 = 1;     //段锁存LATCH1 = 0;Delay(60000); // 扫描间隙延时,时间太长会闪烁,太短会造成重影,//这里故意延长时间,方便直观看出动态扫描原理i++;if(8 == i)    //检测8位扫描完全结束?如扫描完成则从第一个开始再次扫描8位i = 0;}
}
/*------------------------------------------------延时函数,含有输入参数 unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{while(--t);
}

十、数码管显示动态数据

程序实例10:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
sbit LATCH2 = P2^3;//                 位锁存unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F
unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数
------------------------------------------------*/
main()
{unsigned char i=0,num;unsigned int j;while(1){DataPort=dofly_WeiMa[i]; //取位码 LATCH2=1;     //位锁存LATCH2=0;DataPort=dofly_DuanMa[num+i]; //取显示数据,段码LATCH1=1;     //段锁存LATCH1=0;Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影i++;j++;if(8==i)    //检测8位扫描完全结束?如扫描完成则从第一个开始再次扫描8位i=0;if(j==500)  //检测当前数值显示了一小段时间后,需要显示的数值加1,实现数据显示的变化{j=0;num++;if(num==9)num=0;}}
}
/*------------------------------------------------延时函数,含有输入参数 unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{while(--t);
}

相关文章:

单片机语言实例:2、点亮数码管的多种方法

一、共阳数码管静态显示 程序实例1&#xff1a; #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c; //头文件包含特殊功能寄存器的定义void main (void) {P10xc0; //二进制 为 1100 0000 参考数码管排列&#xff0c;//可以得出0对应的段点…...

C#学习 - 初识类与名称空间

类&#xff08;class&#xff09;& 名称空间&#xff08;namespace&#xff09; 类是最基础的 C# 类型&#xff0c;是一个数据结构&#xff0c;是构成程序的主体 名称空间以树型结构组织类 using System; //前面的using就是引用名称空间 //相当于C语言的 #include <..…...

Python爬取电影信息:Ajax介绍、爬取案例实战 + MongoDB存储

Ajax介绍 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于在Web应用程序中实现异步通信的技术。它允许在不刷新整个网页的情况下&#xff0c;通过在后台与服务器进行数据交换&#xff0c;实时更新网页的一部分。Ajax的主要特点包括&#xff1a; 异步通…...

JavaScript的面向对象

一、认识对象 1.概述 对象&#xff08;object&#xff09;是 JavaScript 语言的核心概念&#xff0c;也是最重要的数据类型。 什么是对象&#xff1f;简单说&#xff0c;对象就是一组“键值对”&#xff08;key-value&#xff09;的集合&#xff0c;是一种无序的复合数据集合…...

MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具

MybatisPlus 快速入门 常见注解 配置_软工菜鸡的博客-CSDN博客 2.核心功能 刚才的案例中都是以id为条件的简单CRUD&#xff0c;一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外&#xff0c;修改、删除、查询的SQL语句都需要指定where条件。因此…...

TSN时间敏感网络

目录 时间敏感网络介绍 子协议介绍 时间同步 IEEE802.1AS 调度和流量整形 IEEE802.1Q IEEE802.1Qbv IEEE802.1cr IEEE802.1Qbu IEEE802.1Qch IEEE802.1Qav IEEE802.1Qcc 纠错机制与安全 IEEE802.1Qci IEEE802.1CB IEEE802.1Qca 参考 时间敏感网络介绍 TSN(Tim…...

【2023年数学建模国赛】C题解题思路

第一问 要求分析分析蔬菜各品类及单品销售量的分布规律及相互关系。该问题可以拆分成三个角度进行剖析。 1&#xff09;各种类蔬菜的销售量分布、蔬菜种类与销售量之间的关系&#xff1b;2&#xff09;各种类蔬菜的销售量的月份分布、各种类蔬菜销售量与月份之间的相关关系&a…...

5分钟 将“.py”文件转为“.pyd”文件

代码&#xff1a; from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import osfile_list os.listdir("./") extensions [] for file in file_list:if file.endswith(".py") and file !…...

python 入门到精通(一)

文章目录 1.使用pycharm进行第一个程序的编写2.python基础语法篇2.1 常用的值类型2.2 注释2.3 变量2.4 数据类型2.5 数据类型转换2.6 什么是标识符2.7 运算符2.8 字符串扩展2.8.1 字符串拼接2.8.2 字符串格式化2.8.3 格式化的精度控制2.8.4 字符串格式化 - 快速写法2.8.5 字符串…...

AJAX (Asynchronous JavaScript And XML)异步的JavaScript 和 XML

1、概念 Asynchronous JavaScript And XML 异步的JavaScript 和 XML异步和同步&#xff1a;客户端和服务器端相互通信的基础上 同步&#xff1a;客户端必须等待服务端的响应。在等待的期间客户端不能做其他操作。异步&#xff1a;客户端不需要等待服务器端的响应。在服务器…...

华为云云耀云服务器L实例评测|安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决

目录 引出安装JDK8环境查看是否有默认jar上传Linux版本的jar包解压压缩包配置环境变量 上传jar包以及运行问题上传Jar包运行控制台开放端口访问失败—见问题记录关闭Jar的方式1.进程kill -92.ctrl c退出 问题记录&#xff1a;【!】未解决各种方式查看端口情况联系工程师最后排查…...

安卓多渠道打包(五)360加固walle多渠道打包

背景&#xff1a; 1、360加固宝&#xff0c;签名收費了&#xff0c;脚本上传加固也针对特定帐号才可实现。 内容 本文将会分享安卓项目中&#xff0c;使用360加固&#xff0c;再用walle签名&#xff0c;产出多渠道加固包的全流程。 环境 win10 jdk11 as2022 gradle7.5 最…...

Jmeter 实现 mqtt 协议压力测试

1. 下载jmeter&#xff0c;解压 https://jmeter.apache.org/download_jmeter.cgi 以 5.4.3 为例&#xff0c;下载地址&#xff1a; https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip linux下解压&#xff1a; unzip apache-jmeter-5.4.3.zip 2. 下载m…...

蓝桥杯官网练习题(凑算式)

类似填空题&#xff1a; ①算式900&#xff1a; https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501 ②九宫幻方③七星填数④幻方填空&#xff1a;https:/…...

机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)

&#x1f308;&#x1f308;&#x1f308;机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 手撕线性回归1之线性回归类的实现 手撕线性回归2之单特征线性回归 手撕线性回归3之多特征线性回归 手撕线性回归4之非线性回归 1…...

【C语言基础】那些你可能不知道的C语言“潜规则”

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

android framework之Applicataion启动流程分析(三)

现在再回顾一下Application的启动流程&#xff0c;总的来说&#xff0c;虽然进程的发起是由ATMS服务发起的&#xff0c;但是进程的启动还是由AMS负责&#xff0c;所以需要调用AMS的startProcess()接口完成进程启动流程&#xff0c;AMS要处理的事情很多&#xff0c;它将事务交给…...

使用Scrapy框架集成Selenium实现高效爬虫

引言&#xff1a; 在网络爬虫的开发中&#xff0c;有时候我们需要处理一些JavaScript动态生成的内容或进行一些复杂的操作&#xff0c;这时候传统的基于请求和响应的爬虫框架就显得力不从心了。为了解决这个问题&#xff0c;我们可以使用Scrapy框架集成Selenium来实现高效的爬…...

Maven 和 Gradle 官方文档及相关资料的网址集合

文章目录 官方MavenGradle 笔者MavenGradle 官方 Maven Maven 仓库依赖包官方查询通道&#xff1a;https://mvnrepository.com/ Maven 插件官方文档&#xff1a;https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*&#xff1a;https://maven.google.com/web/ Gra…...

docker概念、安装与卸载

第一章 docker概念 Docker 是一个开源的应用容器引擎。 Docker 诞生于2013年初&#xff0c;基于 Go 语言实现&#xff0c;dotCloud 公司出品&#xff0c;后改名为 Docker Inc。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...