打印
[PIC®/AVR®/dsPIC®产品]

【CuriosityNano测评报告】PIC18F16Q40驱动数码管显示

[复制链接]
116842|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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在输出低电平时可以点亮数码管,但输出高电平时却无法关断数码管,改变引脚的输出模式也未见效。

使用特权

评论回复
沙发
usysm| | 2021-6-12 11:04 | 只看该作者
用的是什么驱动呢?   

使用特权

评论回复
板凳
typeof| | 2021-6-12 11:05 | 只看该作者
max7219可驱动8个数码管  

使用特权

评论回复
地板
yujielun| | 2021-6-12 11:05 | 只看该作者
定时器刷新吧。   

使用特权

评论回复
5
htmlme| | 2021-6-12 11:06 | 只看该作者
不要驱动芯片吗   

使用特权

评论回复
6
pklong| | 2021-6-12 11:06 | 只看该作者
数码管驱动芯片TM1620   

使用特权

评论回复
7
touser| | 2021-6-12 11:07 | 只看该作者
              

使用特权

评论回复
8
myiclife| | 2021-6-12 11:07 | 只看该作者
占用了一半的引脚了。

使用特权

评论回复
9
uytyu| | 2021-6-12 11:08 | 只看该作者
不能统一驱动吗

使用特权

评论回复
10
iyoum| | 2021-6-12 11:08 | 只看该作者
PIC18F16Q40不错。

使用特权

评论回复
11
jkl21| | 2021-6-12 11:08 | 只看该作者
还是使用oled吧。

使用特权

评论回复
12
yujielun| | 2021-6-12 11:08 | 只看该作者
以前用上DHT11频率太慢了。   

使用特权

评论回复
13
typeof| | 2021-6-12 11:09 | 只看该作者
CH455,驱动4位数码管  

使用特权

评论回复
14
usysm| | 2021-6-12 11:09 | 只看该作者
这个驱动电流够吗?

使用特权

评论回复
15
pklong| | 2021-6-12 11:09 | 只看该作者
常用的芯片有哪些?  

使用特权

评论回复
16
jkl21| | 2021-6-12 11:09 | 只看该作者
这个数码管不太好。   

使用特权

评论回复
17
iyoum| | 2021-6-12 11:09 | 只看该作者
是免费申请的PIC18F16Q40吗

使用特权

评论回复
18
uytyu| | 2021-6-12 11:09 | 只看该作者
怎么还单个引脚操作呢

使用特权

评论回复
19
myiclife| | 2021-6-12 11:09 | 只看该作者
iic的驱动芯片了解一下。   

使用特权

评论回复
20
touser| | 2021-6-12 11:09 | 只看该作者
谢谢楼主的资料了。   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

464

主题

2783

帖子

38

粉丝