当前位置:网站首页>51单片机控制数码管显示
51单片机控制数码管显示
2022-07-19 14:03:00 【梨花压海棠.】
前言
今天学习51单片机的数码管模块
我的学习板上面的数码管是4为一体由12个引脚控制的模块。
今天就编程控制它显示我们想要的输出。
数码管本质上是由8个LED拼接而成的,他们分别叫做a,b,c,d,e,f,g,dp(小数点)。控制这八段的亮灭显示不同的结果。以共阴极为例(阳极为1则亮),0就是abcdef亮,g和dp灭,对应8为二进制就是001 1111(a是最低位)。就是0x3f.
这里给出0-8的16进制码,可以计算印证一下。
这类数码管有一个共同的特点,就是某一极是联通的(共阴极或共阳极),通过控制另一极来控制数码管。
老规矩,先看电路图
这里可以出是共阴极的。
段选信号与一个38译码器相连,E3是使能信号,Y0到Y7是输出信号,通过SEL0,SEL1,SEL2三个信号控制输出结果。(SEL为000对应Y0,SEL为001对应Y1······SEL为111对应Y7)。
SEl又是芯片引脚P2的低三位,我们控制P2就能完成选择哪一个数码管输出,控制P1就能选择该数码管的哪几个LED灯亮,这就是基本思路。
这里面也存在一个问题,电路的这种连接方式虽然省了很多I/O接口,但同一时刻只能有一个数码管有结果。但是二极管的刷新可以很快,利用人的视觉暂留效应,只要刷新够快,我们就能看到它们“同时”亮起。(8个数码管同时亮时,我们打开手机摄像头,摄像头靠近数码管,从手机里能很明显得看到数码管在闪烁刷新,不信可以试一下)
下面放上代码:打印HNU–510
#include <STC15F2K60S2.H>
void Delay(unsigned int xms) //@12.000MHz
{
while(xms--){
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
}
unsigned char duanxuan[]={
0x76,0x37,0x3e,0x40,0x40,0x6d,0x5b,0x3f};
unsigned char weixuan[]={
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
void main(){
P0M0=0xff;
P0M1=0x00;
P2M0=0xff;
P2M1=0x00;
while(1){
int k=0;
for( k=0;k<8;k++){
P0=duanxuan[k];
P2=weixuan[k];
Delay(2);
}
}
}
这里duanxuan的数组就是想要输出字符的十六进制代码,weixuan数组从0到7控制P2的低三位。利用循环就能一直刷新,实现想要的输出。
推挽输出还是要设置的,这里是强上拉。第一次我没写推挽输出数码管显示的亮度就很低很低,设置了推挽输出就很亮。还有就是P2的引脚都用到了,所以设置推挽输出时P2M0=0xff,不同于之前只用到P2.3的P2M0=0x80。
还有就是延时2ms也有它的作用,因为刷新太快会导致这一次的段选信号和上一次的位选信号结合这种情况,数码管上一些不该亮的地方会有暗一点的光。于是我们加一个延时函数阻断这种结合,这个步骤叫“消影”。
上图就是没有消影的状况。
下面放一下我的代码跑出来的效果:
清清楚楚,白白净净,单纯、善良、可爱的数码管实在太好看了,嘿嘿!
后记
数码管显示的学习就要到此为止了,之后会持续更新的。
如果有疑问欢迎交流。
未完待续······
边栏推荐
- 網易雲信音視頻能力中臺,全速助力銀行業數字化轉型昇級
- LabView中禁用模块(属性节点)
- VScode安装Eide,用于stm32开发
- 【FAQ】接入HMS Core推送服务,服务端下发消息常见错误码原因分析及解决方法
- Silicon Valley class lesson 14 - Live docking and wechat sharing
- 索引的选择
- 归并排序及优化
- Parker sensor awef004d06
- [200 opencv routines] 237 Direction correction based on principal component extraction (openCV)
- atos比例溢流阀AGMZO-TERS-PS-010/315
猜你喜欢
硅谷课堂第十四课-直播对接和微信分享
note
吃透Chisel语言.19.Chisel组合电路(一)——Chisel组合电路与Chisel条件语句
解决错误:npm install emojis-list失败
Vulnhub靶机:HACKER KID_ 1.0.1
【FAQ】接入HMS Core推送服务,服务端下发消息常见错误码原因分析及解决方法
微信小程序实现选项卡的代码怎么写
[200 opencv routines] 237 Direction correction based on principal component extraction (openCV)
Silicon Valley classroom lesson 13 - live broadcast management module
What is the difference between shallow copy and deep copy?
随机推荐
Understand chisel language thoroughly 16. Detailed explanation of chisel module (III) -- bulk connection of chisel, taking pipeline processor as an example
深入了解JUC并发(八)线程池
【机器学习】终于把机器学习建模的重要步骤讲清楚了
Which is the best test management tool?
错误索引的解决方案
How to use SAP intelligent robotic process automation to automate Excel
把数组排成最小的数
特征工程--数值特征归一化
2022 latest string interview questions and answers
Deep learning (3): evaluation indicators of different classification models (F1, recall, P)
Preparation Notes: opencv learning: color recognition
Understand chisel language thoroughly 17. Detailed explanation of chisel module (IV) -- using functions to realize lightweight modules
Huggingface | BLOOM模型训练背后的技术
Data science and Computational Intelligence: connotation, paradigm and opportunity
SDN多控制器共识机制研究综述
程序员健康防猝指南6:[科学]运动
Interval merging [key problems + Solutions]
柱塞泵ParKer PVP23363R26A121
测试--基础知识篇
笔记