单片机语言实例: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: #include<reg52.h> //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义void main (void) {P10xc0; //二进制 为 1100 0000 参考数码管排列,//可以得出0对应的段点…...
C#学习 - 初识类与名称空间
类(class)& 名称空间(namespace) 类是最基础的 C# 类型,是一个数据结构,是构成程序的主体 名称空间以树型结构组织类 using System; //前面的using就是引用名称空间 //相当于C语言的 #include <..…...
Python爬取电影信息:Ajax介绍、爬取案例实战 + MongoDB存储
Ajax介绍 Ajax(Asynchronous JavaScript and XML)是一种用于在Web应用程序中实现异步通信的技术。它允许在不刷新整个网页的情况下,通过在后台与服务器进行数据交换,实时更新网页的一部分。Ajax的主要特点包括: 异步通…...
JavaScript的面向对象
一、认识对象 1.概述 对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。 什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合…...
MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具
MybatisPlus 快速入门 常见注解 配置_软工菜鸡的博客-CSDN博客 2.核心功能 刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外,修改、删除、查询的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)各种类蔬菜的销售量分布、蔬菜种类与销售量之间的关系;2)各种类蔬菜的销售量的月份分布、各种类蔬菜销售量与月份之间的相关关系&a…...
5分钟 将“.py”文件转为“.pyd”文件
代码: 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异步和同步:客户端和服务器端相互通信的基础上 同步:客户端必须等待服务端的响应。在等待的期间客户端不能做其他操作。异步:客户端不需要等待服务器端的响应。在服务器…...
华为云云耀云服务器L实例评测|安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决
目录 引出安装JDK8环境查看是否有默认jar上传Linux版本的jar包解压压缩包配置环境变量 上传jar包以及运行问题上传Jar包运行控制台开放端口访问失败—见问题记录关闭Jar的方式1.进程kill -92.ctrl c退出 问题记录:【!】未解决各种方式查看端口情况联系工程师最后排查…...
安卓多渠道打包(五)360加固walle多渠道打包
背景: 1、360加固宝,签名收費了,脚本上传加固也针对特定帐号才可实现。 内容 本文将会分享安卓项目中,使用360加固,再用walle签名,产出多渠道加固包的全流程。 环境 win10 jdk11 as2022 gradle7.5 最…...
Jmeter 实现 mqtt 协议压力测试
1. 下载jmeter,解压 https://jmeter.apache.org/download_jmeter.cgi 以 5.4.3 为例,下载地址: https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip linux下解压: unzip apache-jmeter-5.4.3.zip 2. 下载m…...
蓝桥杯官网练习题(凑算式)
类似填空题: ①算式900: https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501 ②九宫幻方③七星填数④幻方填空:https:/…...
机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)
🌈🌈🌈机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 手撕线性回归1之线性回归类的实现 手撕线性回归2之单特征线性回归 手撕线性回归3之多特征线性回归 手撕线性回归4之非线性回归 1…...
【C语言基础】那些你可能不知道的C语言“潜规则”
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
android framework之Applicataion启动流程分析(三)
现在再回顾一下Application的启动流程,总的来说,虽然进程的发起是由ATMS服务发起的,但是进程的启动还是由AMS负责,所以需要调用AMS的startProcess()接口完成进程启动流程,AMS要处理的事情很多,它将事务交给…...
使用Scrapy框架集成Selenium实现高效爬虫
引言: 在网络爬虫的开发中,有时候我们需要处理一些JavaScript动态生成的内容或进行一些复杂的操作,这时候传统的基于请求和响应的爬虫框架就显得力不从心了。为了解决这个问题,我们可以使用Scrapy框架集成Selenium来实现高效的爬…...
Maven 和 Gradle 官方文档及相关资料的网址集合
文章目录 官方MavenGradle 笔者MavenGradle 官方 Maven Maven 仓库依赖包官方查询通道:https://mvnrepository.com/ Maven 插件官方文档:https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*:https://maven.google.com/web/ Gra…...
docker概念、安装与卸载
第一章 docker概念 Docker 是一个开源的应用容器引擎。 Docker 诞生于2013年初,基于 Go 语言实现,dotCloud 公司出品,后改名为 Docker Inc。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
