帮我找一份led数码管表秒
时间: 2023-09-13 17:10:46 浏览: 63
当然,我可以帮您找到LED数码管的表格。以下是一些常见的LED数码管型号及其规格参数:
型号 | 显示数值 | 数码管高度 | 数码管宽度 | 数码管深度
---|---|---|---|---
FJ5461AH | 0-9 | 14.2 mm | 9.5 mm | 6.8 mm
SC56-11HWA | 0-9 | 14.2 mm | 7.6 mm | 7.3 mm
FJ6125G | 0-9, A-F | 12.7 mm | 7.0 mm | 7.0 mm
SC39-11GWA | 0-9, A-F | 9.4 mm | 7.6 mm | 7.3 mm
希望这些信息对您有所帮助!
相关问题
使用定时器T1的方式2制作电子时钟,并在led数码管上显示
好的,我来给你讲一下如何使用定时器T1的方式2制作电子时钟并在LED数码管上显示。
首先,我们需要选择一个合适的LED数码管来显示时间。LED数码管通常由多个LED灯组成,可以显示数字和一些特殊字符。常见的有共阳数码管和共阴数码管,其中共阳数码管是常用的一种。
接下来,我们需要配置定时器T1的方式2。该方式下,定时器T1会自动重载,每当计数器计数到重载值时,就会产生一个中断。我们可以使用中断来更新时间并控制LED数码管的显示。
具体的代码实现可以参考以下步骤:
1. 设置定时器T1的控制寄存器TCON和模式寄存器TMOD,使其工作在方式2下。
2. 设置定时器T1的重载值,使其能够产生1秒钟的中断。
3. 设置中断向量,并编写中断服务程序。在中断服务程序中,更新时间并控制LED数码管的显示。
4. 在主程序中,启动定时器T1并进入一个死循环,以便等待中断的发生。
下面是一份简单的代码示例:
```c
#include <reg52.h>
#define LED P0 // LED数码管连接在P0口上
unsigned char code LED_TABLE[] = { // 数码管显示表,用来显示数字0~9
0xC0, 0xF9, 0xA4, 0xB0, 0x99,
0x92, 0x82, 0xF8, 0x80, 0x90
};
void init_timer1() // 初始化定时器T1
{
TMOD &= 0x0F; // 设置T1工作在方式2下
TMOD |= 0x20;
TH1 = 0x3C; // 设置重载值,产生1秒钟的中断
TL1 = 0xB0;
ET1 = 1; // 允许T1中断
EA = 1; // 允许总中断
}
void timer1_isr() interrupt 3 // 定时器T1中断服务程序
{
static unsigned char cnt = 0;
static unsigned char sec = 0;
static unsigned char min = 0;
static unsigned char hour = 0;
cnt++; // 计数器加1
if (cnt == 20) { // 每20次中断更新一次时间,约1秒钟
cnt = 0;
sec++; // 秒数加1
if (sec == 60) { // 每60秒更新一次分钟数
sec = 0;
min++; // 分钟数加1
if (min == 60) { // 每60分钟更新一次小时数
min = 0;
hour++; // 小时数加1
if (hour == 24) { // 每24小时从头开始
hour = 0;
}
}
}
}
// 将时间显示在LED数码管上
LED = 0xFF; // 全部清零
LED = LED_TABLE[sec % 10]; // 显示秒的个位数
LED = LED_TABLE[sec / 10] | 0x80; // 显示秒的十位数
LED = LED_TABLE[min % 10] << 16 | LED_TABLE[hour % 10] << 8; // 显示分和时的个位数
LED = LED_TABLE[min / 10] << 16 | LED_TABLE[hour / 10] << 8 | 0x80; // 显示分和时的十位数和小数点
TF1 = 0; // 清除中断标志位
}
void main()
{
init_timer1(); // 初始化定时器T1
TR1 = 1; // 启动定时器T1
while (1); // 进入死循环,等待中断的发生
}
```
以上就是使用定时器T1的方式2制作电子时钟并在LED数码管上显示的方法。希望对你有所帮助!
编写一份基于C52单片机单片机矩阵键盘控制数码管显示的代码,同时能够实现按动一个按钮使LED小灯泡点亮
好的,以下是基于C52单片机的矩阵键盘控制数码管显示和LED小灯泡点亮的代码:
```c
#include <reg52.h>
// 数码管显示的端口定义
sbit LED_D1 = P2^0;
sbit LED_D2 = P2^1;
sbit LED_D3 = P2^2;
sbit LED_D4 = P2^3;
sbit LED_D5 = P2^4;
sbit LED_D6 = P2^5;
sbit LED_D7 = P2^6;
sbit LED_D8 = P2^7;
// 矩阵键盘的端口定义
sbit KEY_ROW1 = P1^0;
sbit KEY_ROW2 = P1^1;
sbit KEY_ROW3 = P1^2;
sbit KEY_ROW4 = P1^3;
sbit KEY_COL1 = P1^4;
sbit KEY_COL2 = P1^5;
sbit KEY_COL3 = P1^6;
sbit KEY_COL4 = P1^7;
// LED小灯泡的端口定义
sbit LED_LIGHT = P3^0;
unsigned char code LED_NUM[10] = { // 数码管显示的数字编码
0xC0, 0xF9, 0xA4, 0xB0, 0x99,
0x92, 0x82, 0xF8, 0x80, 0x98
};
unsigned char key_scan() { // 矩阵键盘扫描函数
unsigned char key_code = 0xFF; // 初始值为无键按下
KEY_ROW1 = 0; // 将第一行置低
if (!KEY_COL1) { // 判断第一列是否有键按下
key_code = 1;
} else if (!KEY_COL2) { // 判断第二列是否有键按下
key_code = 2;
} else if (!KEY_COL3) { // 判断第三列是否有键按下
key_code = 3;
} else if (!KEY_COL4) { // 判断第四列是否有键按下
key_code = 10;
}
KEY_ROW1 = 1; // 将第一行恢复高电平
KEY_ROW2 = 0; // 将第二行置低
if (!KEY_COL1) { // 判断第一列是否有键按下
key_code = 4;
} else if (!KEY_COL2) { // 判断第二列是否有键按下
key_code = 5;
} else if (!KEY_COL3) { // 判断第三列是否有键按下
key_code = 6;
} else if (!KEY_COL4) { // 判断第四列是否有键按下
key_code = 11;
}
KEY_ROW2 = 1; // 将第二行恢复高电平
KEY_ROW3 = 0; // 将第三行置低
if (!KEY_COL1) { // 判断第一列是否有键按下
key_code = 7;
} else if (!KEY_COL2) { // 判断第二列是否有键按下
key_code = 8;
} else if (!KEY_COL3) { // 判断第三列是否有键按下
key_code = 9;
} else if (!KEY_COL4) { // 判断第四列是否有键按下
key_code = 12;
}
KEY_ROW3 = 1; // 将第三行恢复高电平
KEY_ROW4 = 0; // 将第四行置低
if (!KEY_COL1) { // 判断第一列是否有键按下
key_code = 14;
} else if (!KEY_COL2) { // 判断第二列是否有键按下
key_code = 0;
} else if (!KEY_COL3) { // 判断第三列是否有键按下
key_code = 15;
} else if (!KEY_COL4) { // 判断第四列是否有键按下
key_code = 13;
}
KEY_ROW4 = 1; // 将第四行恢复高电平
return key_code; // 返回键值
}
void main() {
unsigned char key_code; // 键值
unsigned char led_flag = 0; // LED小灯泡亮灭标志,初值为灭
while (1) {
key_code = key_scan(); // 扫描键盘
if (key_code != 0xFF) { // 判断是否有键按下
switch (key_code) {
case 0: // 数码管显示0
LED_D1 = 1;
LED_D2 = 1;
LED_D3 = 1;
LED_D4 = 1;
LED_D5 = 1;
LED_D6 = 1;
LED_D7 = 0;
LED_D8 = 1;
break;
case 1: // 数码管显示1
LED_D1 = 0;
LED_D2 = 1;
LED_D3 = 1;
LED_D4 = 0;
LED_D5 = 0;
LED_D6 = 0;
LED_D7 = 0;
LED_D8 = 0;
break;
case 2: // 数码管显示2
LED_D1 = 1;
LED_D2 = 1;
LED_D3 = 0;
LED_D4 = 1;
LED_D5 = 1;
LED_D6 = 0;
LED_D7 = 1;
LED_D8 = 0;
break;
// ... 其他数字的显示方式类似,省略代码
case 15: // 按下LED小灯泡控制按钮
led_flag = !led_flag; // 状态取反
LED_LIGHT = led_flag; // 控制LED小灯泡亮灭
break;
default:
break;
}
}
}
}
```
这份代码实现了矩阵键盘控制数码管显示和LED小灯泡点亮的功能。其中,键盘扫描函数 `key_scan()` 扫描矩阵键盘的状态,返回键值;`main()` 函数中根据键值控制数码管显示和LED小灯泡的状态。请注意,这里只列举了部分数字的显示方式,其他数字的显示方式类似,可自行补充。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)