用ATMEGA128A编写一个TM1628控制四位共阴数码管显示任意数字的函数
时间: 2023-05-12 17:03:48 浏览: 124
基于STM32的四位数码管显示编程
5星 · 资源好评率100%
好的,以下是用ATMEGA128A编写一个TM1628控制四位共阴数码管显示任意数字的函数的代码:
```c
#include <avr/io.h>
#include <util/delay.h>
#define CLK_PIN 0 // CLK引脚
#define DIO_PIN 1 // DIO引脚
#define STB_PIN 2 // STB引脚
void TM1628_WriteByte(unsigned char data)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
PORTC &= ~(1 << CLK_PIN); // CLK引脚置低
if (data & 0x01)
PORTC |= (1 << DIO_PIN); // DIO引脚置高
else
PORTC &= ~(1 << DIO_PIN); // DIO引脚置低
data >>= 1;
PORTC |= (1 << CLK_PIN); // CLK引脚置高
}
}
void TM1628_SendCommand(unsigned char cmd)
{
PORTC &= ~(1 << STB_PIN); // STB引脚置低
TM1628_WriteByte(cmd);
PORTC |= (1 << STB_PIN); // STB引脚置高
}
void TM1628_Init(void)
{
DDRC |= (1 << CLK_PIN) | (1 << DIO_PIN) | (1 << STB_PIN); // 将CLK、DIO、STB引脚设为输出
PORTC |= (1 << CLK_PIN) | (1 << DIO_PIN) | (1 << STB_PIN); // 将CLK、DIO、STB引脚置高
TM1628_SendCommand(0x8a); // 设置亮度
TM1628_SendCommand(0x40); // 固定地址模式
TM1628_SendCommand(0x44); // 固定地址模式下,设置地址为0
}
void TM1628_DisplayNumber(unsigned char num)
{
TM1628_SendCommand(0x44); // 固定地址模式下,设置地址为0
TM1628_WriteByte(num % 10); // 显示个位数
num /= 10;
TM1628_WriteByte(num % 10); // 显示十位数
num /= 10;
TM1628_WriteByte(num % 10); // 显示百位数
num /= 10;
TM1628_WriteByte(num % 10); // 显示千位数
}
int main(void)
{
TM1628_Init();
while (1)
{
TM1628_DisplayNumber(1234); // 显示数字1234
_delay_ms(1000);
TM1628_DisplayNumber(5678); // 显示数字5678
_delay_ms(1000);
}
return 0;
}
```
希望这个代码能够帮到你!
阅读全文