再新建一个desplay.c文件:下面是全部代码
#include "desplay.h"
uint8_t duan[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
// 数码管显示函数
void display_all(uint8_t num)
{
display_clear(); //清屏
bitset(1); // 选十位
display(duan[num/10]); // 显示十位
HAL_Delay(2); // 延时2ms
display_clear(); //清屏
bitset(2); //选个位
display(duan[num%10]); // 显示个位
HAL_Delay(2); //延时2ms
}
// 实现数码管断码显示
void display(uint16_t shu)
{
GPIOA->ODR = shu;
}
// 实现数码管清屏
void display_clear(void)
{
GPIOA->ODR = 0XFF;
}
// 实现数码管位选选通
void bitset(uint16_t wei)
{
// 当位为1时,十位数码管选通; 当位为2时,个位数码管选通
if(wei == 1)
{
HAL_GPIO_WritePin(shiwei_GPIO_Port, shiwei_Pin, GPIO_PIN_SET); // 十位置1
HAL_GPIO_WritePin(gewei_GPIO_Port, gewei_Pin, GPIO_PIN_RESET); // 个位置0
}
if(wei == 2)
{
HAL_GPIO_WritePin(shiwei_GPIO_Port, shiwei_Pin, GPIO_PIN_RESET); // 十位置0
HAL_GPIO_WritePin(gewei_GPIO_Port, gewei_Pin, GPIO_PIN_SET); // 个位置1
}
}
|