C51单片机3461AS-1型号数码管字型编码和相关代码

本文详细介绍了3461AS-1LED数码管的结构,包括工作原理、字型编码以及如何在C51单片机中使用位选码进行显示,提供了0-F和2023数字的编程代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、3461AS-1LED数码管的结构

1.数码管的工作原理

2.数码管字型编码

3.数管码常用的几个字型码集合

4、C51单片机数码管位选码

二、数码管显示0-F程序代码 

三、数管码显示2023程序代码


一、3461AS-1LED数码管的结构

        单个 LED 数码管的外形和外部引脚如图下所示。 LED 数码管由8个发光二极管(以下简称段)构成,通过不同的发光段组合可显示数字0~9、字符 A ~ F 、 H 、 L 、 P 、 R 、 U 、 Y 、符号"-"及小数点"."等信息。

1.数码管的工作原理

3461AS-1数码管是共阴极,数码管的内部结构如上图a所示。是由8个发光二极管的阴极连接在一起,作为公共控制端(com),接低电平。阳极作为“段”控制端,当输入的控制端为高电平时,该段对应的发光二极管导通并点亮。

2.数码管字型编码

2461AS-1数码管字型编码

显示

字符

dpgfedcba字型符
0001111110x3F
1000001100x06
2010110110x5B
3010011110x4F
4011001100x66
501101101

0x6D

6011111010x7D
7000001110x07
8011111110x7F
9011011110x6F
A011101110x77
B011111000x7C
C001110010x39
D010111100x5E
E011110010x79
F011100010x71
H011101100x76
L001110000x38
P011100110x73
R001100010x31
U001111100x3E
Y011011100x6E
_010000000x40
.100000000x80
熄灭000000000x00

3.数管码常用的几个字型码集合

1.

A-F={0x77,0x7C,0x39,0x5E,0x79,0x71}

2.

0-9={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}

3.

0-F={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}

4.

A-Y={0x77,0x7C,0x39,0x5E,0x79,0x71,0x76,0x38,0x73,0x31,0x3E,0x6E}

4、C51单片机数码管位选码

0xFF,0xFB,0xF7,0xF3,0xFE,0xEB,0xE7,0xE3

二、数码管显示0-F程序代码

#include <reg52.h>
#define GPIO2 P2
#define GPIO P0
#define uint unsigned int
#define uchar unsigned char
void delay_xms(uint xms);
uchar SEG_Code[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void main(void)
{
	uint i;
	while(1)
	{
		for(i=0;i<16;i++)
		{
			GPIO2=0xFE;
			GPIO=SEG_Code[i];
			delay_xms(500);
		}
	}
}
void delay_xms(uint xms)
{
	uint i;
	while(xms--)
	{
		for(i=0;i<234;i++);
	}
}

三、数管码显示2023程序代码

#include <reg52.h>

#define uchar unsigned char    // UINT8, u8
#define uint unsigned int      // UINT16, u16
#define GPIO P0
#define GPIO2 P2
#define XMS 5



uchar SEG_Code[4] = {0x5B, 0x3F, 0x5B, 0x4F};    // 2023的段码
uchar SEG_Bit[4] = {0xFF,0xFB, 0xF7, 0xF3};     // 数码管位选端位码

void delay_xms(uint xms);

void main(void)
{
	uchar i;
	GPIO = 0xFF;     // 初始化端口
	GPIO2 = 0xFF;
	while(1)
	{
		for(i=0; i<4; i++)
		{
			GPIO = SEG_Code[i];
			GPIO2 = SEG_Bit[i];
			delay_xms(XMS);
			GPIO = 0xFF;           // 消隐
		}
	}
}

void delay_xms(uint xms)
{
	uint i;
	while(xms--)
	{
		for(i=0; i<234; i++);
	}
}

在使用STC89C52单片机配合3461AS-1数码管DS18B20温度传感器显示温度时,你需要完成以下几个步骤编写代码1. **初始化硬件**: - 初始化DS18B20温度传感器,设置其作为从设备,并读取寄存器以获取配置信息。 -3461AS-1数码管进行初始化,设置段选、位选、数据锁存公共端口。 2. **读取温度**: - 发送DS18B20的测量命令,等待温度稳定后再读取温度值。 - 温度值通常存储在DS18B20内部的寄存器中,需要通过通信协议读取。 3. **温度处理与格式化**: - 将读取到的摄氏温度转换成适合显示的段码位码。 4. **显示温度**: - 分别生成每位的段码位码,然后按照3461AS-1的驱动规则设置段选位选信号,将温度值显示出来。 以下是简化版的代码示例(假设已包含库函数定时器中断): ```c #include <reg52.h> #include "ds18b20.h" #include "3461.h" void main(void) { DS18B20_Init(); // 初始化DS18B20 LCD_Init(); // 初始化3461AS-1 while(1) { float temp = DS18B20_ReadTemperature(); // 读取温度 char digit[4] = {temp / 100, temp % 100 / 10, temp % 10, '\0'}; for(int i=0; i<4; i++) // 遍历每一位 { LCD_SetSegment(digit[i], i); // 设置段码并显示 } Delay_ms(1000); // 等待一段时间再更新显示 } } void LCD_SetSegment(char digit, int seg) // 设置指定位置的段码 { // ...根据3461AS-1的数据手册操作段选位选... } ``` 注意:实际编程过程中,你需要查找具体的驱动库详细的硬件连接图来调整代码细节。同时,DS18B203461AS-1的通信细节功能设定需要查阅各自的官方文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值