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

【CuriosityNano测评报告】串行通讯及其应用

[复制链接]
3389|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2021-1-4 15:30 编辑

1. 串行通讯
PIC16F15244具有串行通讯功能,其实现的方法如下:
1)使用MCC,将RC0配置TX1以便发送数据;
2)将RC2设置为输入引脚,以备后续之用,其形式如图1所示;
                              
图1 引脚配置
3)按图2所示对引脚进行重新命名;
图2 引脚重命名
4)按图3所示来设置通讯参数;
图3 设置中断相应
5)按图4所示来设置通讯参数;
图4通讯参数设置
6)按图5所示设置系统时钟;
图5 设置系统时钟
7)按 按钮,以生成程序框架;
8)按下面的内容来修改函数;
void IOCCF2_DefaultInterruptHandler(void)
// Default interrupt handler for IOCCF2
{
printf("Button pressed! \r\n");
}

9)编译并下载程序,则程序的运行效果如图7所示。
图6 通讯串口连接

图7 运行效果

2. 通讯应用
有了前面的基础,稍加修改即可用来控制支持通讯指令的MP3播放模块,其实现的方法如下:
1)在pin_manager.c程序内添加指令数组及变量定义;
uint8_t j=0;
uint8_tcmd3[10] = {0X7E, 0xFF, 0x06, 0X03, 0x00, 0x00, 0x01, 0xFE, 0xF7, 0XEF};
uint8_t cmd6[10]= {0X7E, 0xFF, 0x06, 0X06, 0x00, 0x00, 0x10, 0xFE, 0xE5, 0XEF};
2)添加相应的辅助函数:
voidplayn(uint16_t index)
voidsetVolume(uint8_t index)
3)按下面的内容来修改函数;
void IOCCF2_DefaultInterruptHandler(void)                                       // Default interrupt handler for IOCCF2
{
uint8_t i;
if(j==0)
{
setVolume(18);
for(i=0;i<10;i++)
{
EUSART1_Write(cmd6[i]);
}
j=1;
}
playn(j);
for(i=0;i<10;i++)
{
EUSART1_Write(cmd3[i]);
}
if(j<6) j++;
else j=1;
}

4)编译并下载程序,则程序的运行效果如图8所示;

图8 运行效果
5)按图9所示来连接MP3播放模块,则按下开发板上按键时就循序地切换播放乐曲。

9  MP3播放模块连接

使用特权

评论回复
沙发
CoolSilicon| | 2021-1-4 11:31 | 只看该作者
第二个图的那个ANALOG的需要去掉..


使用特权

评论回复
板凳
jinglixixi|  楼主 | 2021-1-4 12:05 | 只看该作者
CoolSilicon 发表于 2021-1-4 11:31
第二个图的那个ANALOG的需要去掉..

似乎没影响

使用特权

评论回复
地板
比神乐| | 2021-1-4 12:32 | 只看该作者
非常不错

使用特权

评论回复
5
jinglixixi|  楼主 | 2021-1-4 15:29 | 只看该作者

使用特权

评论回复
6
pzsh| | 2021-2-2 14:07 | 只看该作者
楼主直接做了一个应用产品出来

使用特权

评论回复
7
jinglixixi|  楼主 | 2021-2-2 20:36 | 只看该作者
pzsh 发表于 2021-2-2 14:07
楼主直接做了一个应用产品出来

哈哈过奖了。。。

使用特权

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

本版积分规则

446

主题

2677

帖子

37

粉丝