HC32L13X点亮数码管示例
时间: 2023-07-07 20:08:15 浏览: 100
HC32L13X是华大基础公司生产的一款单片机芯片,以下是它点亮数码管的示例代码:
```c
#include "hc32l13x.h"
#define LED_PORT PortE
#define LED_PIN Pin02
#define SEG_PORT PortD
#define SEG_PIN0 Pin00
#define SEG_PIN1 Pin01
#define SEG_PIN2 Pin02
#define SEG_PIN3 Pin03
#define SEG_PIN4 Pin04
#define SEG_PIN5 Pin05
#define SEG_PIN6 Pin06
#define SEG_PIN7 Pin07
#define DIG_PORT PortB
#define DIG_PIN0 Pin00
#define DIG_PIN1 Pin01
#define DIG_PIN2 Pin02
#define DIG_PIN3 Pin03
/* 数码管编码表 */
const uint8_t segTab[16]={
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f, //9
0x77, //A
0x7c, //B
0x39, //C
0x5e, //D
0x79, //E
0x71 //F
};
/* 数码管显示函数 */
void display(uint8_t dat)
{
uint8_t i, j;
for(i=0; i<4; i++)
{
DIG_PORT = 1 << i; //选择第i位数码管
//在数码管上显示dat的第i位
for(j=0; j<8; j++)
{
SEG_PORT = segTab[dat >> (i*4+j) & 0x0001];
delay_ms(1);
SEG_PORT = 0;
}
}
}
int main(void)
{
/* 端口初始化 */
M0P_SYSCTRL->PERI_CLKEN0_f.GPIO = 1; //使能GPIO模块时钟
M0P_GPIO->PAADS &= ~(0x03<<16); //PA08,PA09设置为数字模式
M0P_GPIO->PADIR |= LED_PIN; //PE02设置为输出
M0P_GPIO->PBADS = 0; //PB00~PB03设置为数字模式
M0P_GPIO->PBDIR |= 0x0f; //PB00~PB03设置为输出
M0P_GPIO->PDDIR |= 0xff; //PD00~PD07设置为输出
while(1)
{
M0P_GPIO->PTDAT_b.PT02 = 0; //LED亮
display(0x1234); //显示0x1234
M0P_GPIO->PTDAT_b.PT02 = 1; //LED灭
display(0x5678); //显示0x5678
}
return 0;
}
```
代码中使用了HC32L13X的GPIO模块来控制LED灯和数码管,通过选择不同的数码管和段选位来控制数码管上的数字。需要注意的是,此代码中的数码管是共阳数码管,如果使用共阴数码管需要将数码管编码表进行修改。
阅读全文