关于stm32直接I/O口操作驱动4位数码管0到9999显示的问题
我的main函数里是
while(1)
{
j=1;
digitron_put_buf(DIGITRON_0, j % 10);
digitron_put_buf(DIGITRON_1, j / 10 % 10);
digitron_put_buf(DIGITRON_2, j / 100 % 10);
digitron_put_buf(DIGITRON_3, j / 1000 % 10);
digitron_dynamic_display();
}
(中间程序省略。。。。。。。。。。。)
选择数码管
static void digitron_select(enum DIGITRON numb)
{
unsigned char n;
for(n = 0; n < NUM_DIGITRONS; n++) /**< 关闭所有数码管 */
{
HAL_GPIO_WritePin(digitron[n].port, digitron[n].pin, GPIO_PIN_RESET);
}
if(numb != DIGITRON_NULL)
{
HAL_GPIO_WritePin(digitron[numb].port, digitron[numb].pin, GPIO_PIN_SET); /**< 点亮数码管 */
}
显示数字
static void digitron_data(unsigned char dat)
{
led_on(DIGITRON_MAP[dat]);
}
调试的时候有个警告,
..\..\src\digitron.c(94): warning: #223-D: function "led_on" declared implicitly
led_on(DIGITRON_MAP[dat]);
数码管显示第一回合是对的 0 0 0 1,按理说应该是一直在0 0 0 1 的,但第一回合后就一直是 0 0 0 0 了,还有赋值其他数时都显示不对,但串口打印是对的。
求大神帮忙找找问题
while(1)
{
j=1;
digitron_put_buf(DIGITRON_0, j % 10);
digitron_put_buf(DIGITRON_1, j / 10 % 10);
digitron_put_buf(DIGITRON_2, j / 100 % 10);
digitron_put_buf(DIGITRON_3, j / 1000 % 10);
digitron_dynamic_display();
}
(中间程序省略。。。。。。。。。。。)
选择数码管
static void digitron_select(enum DIGITRON numb)
{
unsigned char n;
for(n = 0; n < NUM_DIGITRONS; n++) /**< 关闭所有数码管 */
{
HAL_GPIO_WritePin(digitron[n].port, digitron[n].pin, GPIO_PIN_RESET);
}
if(numb != DIGITRON_NULL)
{
HAL_GPIO_WritePin(digitron[numb].port, digitron[numb].pin, GPIO_PIN_SET); /**< 点亮数码管 */
}
显示数字
static void digitron_data(unsigned char dat)
{
led_on(DIGITRON_MAP[dat]);
}
调试的时候有个警告,
..\..\src\digitron.c(94): warning: #223-D: function "led_on" declared implicitly
led_on(DIGITRON_MAP[dat]);
数码管显示第一回合是对的 0 0 0 1,按理说应该是一直在0 0 0 1 的,但第一回合后就一直是 0 0 0 0 了,还有赋值其他数时都显示不对,但串口打印是对的。
求大神帮忙找找问题
...全文
相关推荐
单片机驱动数码管
**驱动方式**:数码管的驱动通常分为静态驱动和动态驱动。静态驱动是指每个数码管都有一组独立的驱动电路,优点是显示稳定,但需要较多的I/O口资源。
基于51单片机的4位数码管计算器设计与Proteus仿真实现
单片机作为嵌入式系统的核心,其GPIO控制、动态扫描和状态机设计是入门开发的关键技能。从基础的数码管显示与矩阵键盘扫描原理出发,可阐述如何利用51单片机实现四则运算计算器。硬件层面涵盖共阳数码管驱动、按键消抖与最小系统设计;软件层面重点解析运算状态机的逻辑流程,并通过Proteus仿真验证功能。该设计不仅可用于课程设计,还能帮助开发者理解实时输入处理和资源受限下的编程思维。以完整的4位数码管计算器项目为实例,提供从原理图到代码实现的全流程参考,适合初学者实践单片机应用开发。
单片机C语言9999秒倒计时
对于四位的数码管,每个数码管需要单独控制,通过驱动芯片(如74HC595)或者并行输出来驱动。如果使用LED阵列,可能需要使用多个I/O口进行逐位点亮。
单片机100分钟定时继电器程序
显示控制:利用数码管显示当前倒计时的剩余时间。数码管各段由P2端口的不同位控制,显示的数字通过查找表LEDDis来编码显示。
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例用AT89C51制作四位数字转速测量计
硬件部分采用AT89C51作为主控芯片,其内部集成8KB Flash ROM、128B RAM、4个8位并行I/O端口、2个16位定时器/计数器、1个全双工串行通信接口以及5个中断源,完全满足转速信号采集与实时显示需求


