本帖最后由 jinglixixi 于 2021-6-9 09:11 编辑
#申请原创#
数码管是一种常见的显示器件,也便于在掌握GPIO口的情况下,较快地解决显示问题。 为了便于直接使用,此处用的是4位集成在一起的数码管显示模块,它在数码管的基础上已添加了位码引脚的驱动能力。 在PIC18F16Q40开发板上,进行某位显示驱动的引脚配置如图1所示。 图1 MCC引脚配置
数码管相关引脚与PIC18F16Q40的连接关系如下: a-RB7 b-RB5 c-RB4 d-RB6 e-RC5 f-RC4 g-RC6 dp-RC7
在显示某位内容时,需将数码管模块的VCC接到5V电源,将相应的位码引脚连到GND接口,其显示效果如图2所示。 图2 显示效果
动画演示:
实现演示效果的主程序为: #include "mcc_generated_files/mcc.h"
void main(void)
{
// Initialize the device
SYSTEM_Initialize();
char i;
while (1)
{
IO_RC1_Toggle();
__delay_ms(2000);
if(i==0)
{
IO_RB7_SetLow();
IO_RB5_SetLow();
IO_RB4_SetLow();
IO_RB6_SetLow();
IO_RC5_SetLow();
IO_RC4_SetLow();
IO_RC6_SetHigh();
IO_RC7_SetHigh();
}
if(i==1)
{
IO_RB7_SetHigh();
IO_RB5_SetLow();
IO_RB4_SetLow();
IO_RB6_SetHigh();
IO_RC5_SetHigh();
IO_RC4_SetHigh();
IO_RC6_SetHigh();
IO_RC7_SetHigh();
}
if(i==2)
{
IO_RB7_SetLow();
IO_RB5_SetLow();
IO_RB4_SetHigh();
IO_RB6_SetLow();
IO_RC5_SetLow();
IO_RC4_SetHigh();
IO_RC6_SetLow();
IO_RC7_SetHigh();
}
if(i==3)
{
IO_RB7_SetLow();
IO_RB5_SetLow();
IO_RB4_SetLow();
IO_RB6_SetLow();
IO_RC5_SetHigh();
IO_RC4_SetHigh();
IO_RC6_SetLow();
IO_RC7_SetHigh();
}
if(i==4)
{
IO_RB7_SetHigh();
IO_RB5_SetLow();
IO_RB4_SetLow();
IO_RB6_SetHigh();
IO_RC5_SetHigh();
IO_RC4_SetLow();
IO_RC6_SetLow();
IO_RC7_SetHigh();
}
if(i==5)
{
IO_RB7_SetLow();
IO_RB5_SetHigh();
IO_RB4_SetLow();
IO_RB6_SetLow();
IO_RC5_SetHigh();
IO_RC4_SetLow();
IO_RC6_SetLow();
IO_RC7_SetHigh();
}
if(i==6)
{
IO_RB7_SetLow();
IO_RB5_SetHigh();
IO_RB4_SetLow();
IO_RB6_SetLow();
IO_RC5_SetLow();
IO_RC4_SetLow();
IO_RC6_SetLow();
IO_RC7_SetHigh();
}
if(i==7)
{
IO_RB7_SetLow();
IO_RB5_SetLow();
IO_RB4_SetLow();
IO_RB6_SetHigh();
IO_RC5_SetHigh();
IO_RC4_SetHigh();
IO_RC6_SetHigh();
IO_RC7_SetHigh();
}
if(i==8)
{
IO_RB7_SetLow();
IO_RB5_SetLow();
IO_RB4_SetLow();
IO_RB6_SetLow();
IO_RC5_SetLow();
IO_RC4_SetLow();
IO_RC6_SetLow();
IO_RC7_SetHigh();
}
if(i==9)
{
IO_RB7_SetLow();
IO_RB5_SetLow();
IO_RB4_SetLow();
IO_RB6_SetLow();
IO_RC5_SetHigh();
IO_RC4_SetLow();
IO_RC6_SetLow();
IO_RC7_SetHigh();
}
i++;
if(i>9) i=0;
}
}
值得指出的是,不知何种原因,在尝试动态驱动4位数值显示时却没有成功,出现的问题是PIC18F16Q40在输出低电平时可以点亮数码管,但输出高电平时却无法关断数码管,改变引脚的输出模式也未见效。
|