一个数码管显示0-F

数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管。

七段数码管是一类价格便宜使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。

在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。

七段数码管式数字仪表以其高精度、可设置等优点在医用设备的显示领域得到了广泛应用。

一般的七段数码管拥有七个发光二极管(三横四纵)用以显示十进制0至9的数字外加小数点,也可以显示英文字母,包括十六进制中的英文 A 至 F(b、d 为小写,其他为大写)。现时大部分的七段数码管会以斜体显示。

七段数码管是基于发光二极管(LED)封装的显示器件,分为共阳极和共阴极2种结构。

/*************SL-51B实验开发板例程(一个数码管显示0-F)*************

* 硬件平台:SL-51B单片机学习板

* 开发环境:keil uVision3

* 名称:一个数码管显示0-F

* 功能:一个数码管显示0-F

*************************************************************************/

#include<reg51.h>

void delay(int In,int Out);

unsigned char codemb_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,

0x7c,0x39,0x5e,0x79,0x71}; //0-F的码表

void delay(int In,int Out) //定义延时函数

{

int i,j;

for(i=0;i<In;i++)

{for(j=0;j<Out;j++){;}}

}

void main()

{

unsigned char num;

while(1)

{

for(num=0;num<16;num++)

{

P0=mb_table[num]; //显示数字

P3=0xef; //选中第一个数码管

delay(20,1000);

}

}

}

要实现最后一个数码管显示0到F,可按以下步骤操作: ### 确定数码管类型与连接方式 数码管有共阴极和共阳极之分。共阴极数码管需给相应段加高电平点亮,共阳极则需加低电平点亮。同时,要明确数码管与开发板或控制器的连接引脚。 ### 编写显示编码表 为每个要显示的字符(0 - F)编写对应的7段显示编码。以下是共阴极数码管0 - F的显示编码表: | 字符 | 显示编码(十六进制) | |------|----------------------| | 0 | 0x3F | | 1 | 0x06 | | 2 | 0x5B | | 3 | 0x4F | | 4 | 0x66 | | 5 | 0x6D | | 6 | 0x7D | | 7 | 0x07 | | 8 | 0x7F | | 9 | 0x6F | | A | 0x77 | | B | 0x7C | | C | 0x39 | | D | 0x5E | | E | 0x79 | | F | 0x71 | ### 编写代码实现显示 以Arduino为例,假设数码管的8个段(a - g, dp)连接到Arduino的2 - 9引脚,且为共阴极数码管,以下是实现最后一个数码管显示0到F的代码: ```cpp // 共阴极数码管0 - F的显示编码表 const byte digitCodes[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; // 数码管段引脚连接 const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; void setup() { // 将数码管段引脚设置为输出模式 for (int i = 0; i < 8; i++) { pinMode(segmentPins[i], OUTPUT); } } void loop() { // 循环显示0 - F for (int i = 0; i < 16; i++) { displayDigit(i); delay(1000); // 每个数字显示1秒 } } // 显示指定数字的函数 void displayDigit(int digit) { byte code = digitCodes[digit]; for (int i = 0; i < 7; i++) { digitalWrite(segmentPins[i], bitRead(code, i)); } // 关闭小数点 digitalWrite(segmentPins[7], LOW); } ``` ### 代码解释 - `digitCodes`数组存储了0 - F的显示编码。 - `segmentPins`数组定义了数码管各段连接的引脚。 - `setup()`函数将数码管段引脚设置为输出模式。 - `loop()`函数循环调用`displayDigit()`函数,依次显示0 - F,每个数字显示1秒。 - `displayDigit()`函数根据传入的数字从`digitCodes`数组中获取对应的显示编码,并将编码的每一位输出到相应的段引脚,同时关闭小数点。 若使用共阳极数码管,只需将编码表中的编码取反(按位取反运算符`~`),并调整代码逻辑即可。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式硬件与代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值