当前位置:网站首页>【单片机】【数码管】数码管显示
【单片机】【数码管】数码管显示
2022-07-01 11:44:00 【sinat_41752325】
1. 数码管的显示器及其接口
单片机系统中 常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、TFT液晶显示器。本文主要是关于LED显示器的说明。
LED显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5x8、8x8点阵等)。
LED数码管根据接法可以分为共阴和共阳。
如下图中,左边是共阴接法,右边是共阳接法。共阴表示8个led的阴极接到一起,共阳是8个led的阳极接到一起。
显示数字或字符时需要编码。如果是共阴接法,那么a/b/c/d/e/f/g/dp为高电平时对应的led就会亮,编码0~F分别是:
2. 数码管静态显示原理
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入依次字形码后,显示字形可一直保持,知道送入新字形码为止,这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
3. 数码管原理图
如下是普中51-单核-A2板子上的数码管模块原理图,可以看到,右上有8个数码管用来显示字符,这8个数码管一端分别与LED1~LED8连接,另一端与P0口连接,所以通过控制P0口来显示我们需要的字符;LED1~LED8通过74HC138译码器与P2^2、P2^3、P2^4连接,这三个IO口控制是哪一个LED可以显示。
静态数码管显示,第一个数码管显示字符F
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
#define LCD P0
typedef unsigned char u8;
// code保存数据到寄存器中
u8 code segment[] = {0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
void show_LCD_static()
{
// LED1显示字符F
P22 = 1;
P23 = 1;
P24 = 1;
P0 = segment[15];
while(1){}
}
显示结果:
动态数码管显示,从第一个数码管开始依次显示0,1,2,3,4,5,6,7
#include "LCD.h"
#include "reg51.h"
#include "delay.h"
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
#define LCD P0
typedef unsigned char u8;
// code保存数据到寄存器中
u8 code segment[] = {0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
void show_P0_0()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case 0:
P22 = 1; P23 = 1; P24 = 1; break;
case 1:
P22 = 0; P23 = 1; P24 = 1; break;
case 2:
P22 = 1; P23 = 0; P24 = 1; break;
case 3:
P22 = 0; P23 = 0; P24 = 1; break;
case 4:
P22 = 1; P23 = 1; P24 = 0; break;
case 5:
P22 = 0; P23 = 1; P24 = 0; break;
case 6:
P22 = 1; P23 = 0; P24 = 0; break;
case 7:
P22 = 0; P23 = 0; P24 = 0; break;
}
P0 = segment[i];
delay_ms(500); // delay.h中的延时函数
P0 = 0;
}
}
显示结果:
上图的连接中左边的数码管1对应的是74HC138的15pin,即Y0,也就是74HC138的ABC都是0的时候输出对应的是Y0,正好对应的是代码中P22=P23=P24=0时,显示7.
边栏推荐
- Oneconnect plans to be listed in Hong Kong on July 4: a loss of nearly 3 billion in two years, with a market capitalization evaporation of more than 90%
- Learning summary on June 30, 2022
- Comment Cao définit la décimale de dimension
- Chen Gong: Micro service, is it still so pure?
- CAD如何設置標注小數比特
- How to set decimal places in CAD
- Redis startup and library entry
- Shangtang entered the lifting period: the core management voluntarily banned and strengthened the company's long-term value confidence
- CPI tutorial - asynchronous interface creation and use
- No statements may be issued when any streaming result sets are open and in use on a given connection
猜你喜欢
如何看懂开发的查询语句
Wonderful! MarkBERT
Exposure: a white box photo post processing framework reading notes
Face detection and recognition system based on mtcnn+facenet
ABBIRB120工业机器人机械零点位置
Y48. Chapter III kubernetes from introduction to mastery -- pod status and probe (21)
Spam filtering challenges
Numpy的矩阵
ACLY与代谢性疾病
Unittest 框架介绍及第一个demo
随机推荐
Exposure: a white box photo post processing framework reading notes
TEMPEST HDMI泄漏接收 3
redis配置环境变量
Width and widthstep of iplimage
Wonderful! MarkBERT
微信小程序开发 – 用户授权登陆「建议收藏」
activity工作流引擎
提问:测试工程师应该具备哪些职业素养?
Theoretical basis of graph
流动性质押挖矿系统开发如何制作,dapp丨defi丨nft丨lp流动性质押挖矿系统开发案例分析及源码
(POJ - 1456) supermarket
kafuka学习之路(一)kafuka安装和简单使用
自定義 grpc 插件
妙啊!MarkBERT
redis中value/hush
CAD如何设置标注小数位
Unittest框架中跳过要执行的测试用例
Can solo be accessed through IPv6?
Goldfish rhca memoirs: do447 uses ansible to communicate with API -- using ansible tower API to start jobs
redis中value/SortedSet