【C51】单片机与LED数码管的静态显示接口案例分析

embedded/2024/10/20 10:58:40/

目录

---案例需求---

1、电路设计

2、程序

3、元器件清单

4、程序仿真


LED数码管有静态显示和动态显示两种显示方式。静态显示是指无论有多少位LE数码管,其都同处于显示状态。数码管工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或接+5V);每位的段码线(a-db)分别与一个8位的I/O口锁存器输出相连。送往各LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。所以,静态无法显示闪烁,亮度较高,软件控制比较容易,节约CPU的工作时间。缺点是占用I/O口比较多,硬件成本也高,因此适用于显示位数比较少的场合。

---案例需求---

共阳极数码管的段码接到单片机的P0口,P1.0引脚接一个按键,开始时数码管显示0,每按一次按键,数码管显示的数字加1,加到10,回到0。

1、电路设计

原理图,LED数码管为共阳极数码管,电阻RP1的作用为限流

电路的特点是使用P0口作为准I/O口,由于P0口内部是漏极开路的,因此需要接上拉电阻。其中P1.0引脚外接一个独立式按键用于产生计数信号,低电平有效。

2、程序

#include<reg51.h>
#define uchar unsigned char  //unsigned char无符号字型sbit S1=P1^0;  //定义了一个特殊标志位(Sbit)S1,它关联到了P1口的第0位(也称为P1.0)uchar code seg[]=//段码//定义了一个名为"seg"的无符号字符数组(uchar code)//它是一个常量数组,用于存储8086微处理器使用的段码{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0-9的段码void delayms(uchar ms){uchar i;while(ms--)for(i=0;i<123;i++);}uchar key_scan(void)  //按键扫描函数{static kp=0;if((P1&0x01)!=0x01)  //读取P1.0引脚的值,判断是否为0,若为0,则有按键按下{delayms(10);//延迟10msif(((P1&0x01)!=0x01)&&(kp==0)){kp=1;return 1; //S1按下}} else kp=0;return 0;}void main(void){uchar key_val;//定义键值变量uchar num=0;//定义显示变量while(1){key_val=key_scan();//取键值if(key_val==1)  //若按键按下,则处理按键对应的功能{if(++num==10)num=0;}P0=seg[num];}
}

3、元器件清单

4、程序仿真


http://www.ppmy.cn/embedded/128975.html

相关文章

基于SpringBoot+Vue+uniapp的在线招聘平台的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…

package.json 里的 dependencies和devDependencies区别

dependencies&#xff08;依赖的意思&#xff09;&#xff1a; 通过 --save 安装&#xff0c;是需要发布到生产环境的。 比如项目中使用react&#xff0c;那么没有这个包的依赖就会报错&#xff0c;因此把依赖写入dependencies npm install <package-name>// 缩写 np…

【Unity】【游戏开发】游戏引擎是如何模拟世界的

【核心感悟】 游戏引擎通过两个维度的合并来模拟这个时间。 一个维度叫物理模型。 一个维度叫视觉模型。 对于物理模型&#xff0c;我们需要用物理引擎给予行为。 对于视觉模型&#xff0c;我们需要用动画去给予行为。 物理模型是真实机制&#xff0c;视觉模型是艺术表现&…

OpenCV高级图形用户界面(20)更改窗口的标题函数setWindowTitle()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在OpenCV中&#xff0c;cv::setWindowTitle函数用于更改窗口的标题。这使得您可以在程序运行时动态地更改窗口的标题文本。 函数原型 void cv::…

nginx的负载均衡配置和重定向

upstream_check模块 配置文件详情 upstream cluster1{server 10.0.0.4:80 weight1 max_fails3 fail_timeout30s;server 10.0.0.5:80 weight1 max_fsils3 fsil_tomeout;check interval3000 rise2 fall5 timeout1000 typehttp;check interval3000 rise2 fall5 timeout1000…

985研一学习日记 - 2024.10.16

一个人内耗&#xff0c;说明他活在过去&#xff1b;一个人焦虑&#xff0c;说明他活在未来。只有当一个人平静时&#xff0c;他才活在现在。 日常 1、起床6:00√ 2、健身1个多小时 今天练了二头和背部&#xff0c;明天练胸和三头 3、LeetCode刷了3题 旋转图像&#xff1a…

Elasticsearch基本使用及介绍

Elasticsearch 1. 关于各种数据库的使用 关于MySQL&#xff1a;是关系型数据库&#xff0c;能清楚的表示数据之间的关系&#xff0c;并且&#xff0c;是基于磁盘存储的&#xff0c;可以使用相对较低的成本存储大量的数据 关于Redis&#xff1a;是基于K-V结构的在内存中读写数…

【日志】关于多益网申

2024.10.19 早先听闻多益的测试题非常抽象&#xff0c;凡是测过的人都说太抽象了&#xff0c;我还以为他考我各种算法或者编程语言呢。我今天也去做了一下&#xff0c;测试题里面大多都考些计算题&#xff0c;找规律题&#xff0c;判断推理题&#xff0c;还有一些图形转换&…