tm1628程序怎么写

时间:2025-01-28 01:53:17 单机游戏

```c

include "iostm8s105s4.h"

define uchar unsigned char

define uint unsigned int

// 定义端口

define TM_STB PORTC.3

define TM_CLK PORTC.2

define TM_DIO PORTC.1

// 定义数组

uchar TAB_keynum;

// 初始化TM1628

void TM1628_Init(void) {

TM_DIO = 0;

TM_CLK = 0;

TM_STB = 0;

// 设置GPIOB的5, 6, 7号为输出模式

GPIOB->CR1 |= (1 << 5) | (1 << 6) | (1 << 7);

// 设置时钟频率为1MHz

RCC->APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

}

// 向TM1628发送一个字节

void TM1628_Write_Byte(uchar data) {

for (uchar i = 0; i < 8; i++) {

TM_DIO = (data >> i) & 0x01;

TM_CLK = 1;

TM_CLK = 0;

}

}

// 向TM1628发送命令

void TM1628_Write_Command(uchar command) {

TM_STB = 0;

TM1628_Write_Byte(command);

TM_STB = 1;

}

// 清除显示

void TM1628_ClearDisplay(void) {

TM1628_Write_Command(0x01);

}

// 设置显示亮度

void TM1628_SetBrightness(uchar brightness) {

TM1628_Write_Command(0x8F | brightness);

}

// 显示数字

void TM1628_DisplayNumber(uchar number) {

TM1628_Write_Command(0x40 | (number & 0x0F));

TM1628_Write_Command(0x80 | ((number / 10) & 0x0F));

}

// 主函数

int main(void) {

TM1628_Init();

TM1628_SetBrightness(0x8F); // 设置最高亮度

// 显示数字"1234"

TM1628_DisplayNumber(1234);

while (1) {

// 示例:读取按键值

if (TM_DIO & 0x01) {

// 按键1被按下

TAB_keynum = 1;

}

if (TM_DIO & 0x02) {

// 按键2被按下

TAB_keynum = 1;

}

if (TM_DIO & 0x04) {

// 按键3被按下

TAB_keynum = 1;

}

if (TM_DIO & 0x08) {

// 按键4被按下

TAB_keynum = 1;

}

if (TM_DIO & 0x10) {

// 按键5被按下

TAB_keynum = 1;

}

// 延时

_delay_ms(100);

}

return 0;

}

```

这个程序首先初始化TM1628,然后设置显示亮度,并显示数字"1234"。在主函数中,程序会不断读取按键值并存储在`TAB_keynum`数组中。你可以根据需要修改这个程序,以适应你的具体应用需求。