购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 闪烁的LED

控制LED闪烁的仿真电路中,PIC16F630单片机RC5引脚连接LED,源程序控制RC5引脚按设定的时间间隔不断输出010101…,使LED持续闪烁,源程序中所使用的延时函数将在后续案例中大量出现。设计如图3-1所示的仿真电路时要注意限流电阻的阻值,未设置或设置过大都可能导致LED无法闪烁。仿真电路右边为PIC16F630单片机的外部引脚图。

图3-1 闪烁的LED仿真电路及PIC16F630芯片引脚

1.程序设计与调试

(一)通用头文件xc.h

源程序最开头注意添加头文件<xc.h>,缺少该头文件时将出现如下编译错误信息:

编译器显示标识符TRISC、PORTC、RC5均未定义。

对于本书所使用的XC8编译器(v1.33),包含头文件xc.h时,实际将导致xc.h→htc.h→pic.h→pic_chip_select.h→pic16f630.h的递次加载,打开pic16f630.h可看到其中定义有:

(二)两个延时宏的应用

另外,由于XC8提供了类似于AVR-GCC的延时宏定义,除中断函数以外,所有延时都可调用__delay_us和__delay_ms,与AVR-GCC提供的延时宏(或称伪函数)相比,XC8的这两个宏前面多出了一个下画线“_”。这两个宏定义在头文件C:\Program Files\Microchip\xc8\v1.33\include\pic.h中,打开该文件可看到如下内容:

由其中的NOTE可知,使用延时函数时,要预先定义振荡器频率:_XTAL_FREQ,单位为Hz。上述两个延时宏的技术资料还可以在XC8编译器PDF手册中看到。未定义_XTAL_FREQ时或者宏调用时设置的延时过大,XC8都将提示编译错误。延时参数必须为常量,且不得超过相应上限值,例如本例器件不得超过50 462 464,否则将出现如下错误提示信息:

实现更长的延时,可考虑定义类似于下面的函数:

在仿真电路中,为使单只LED持续闪烁,程序首先定义RC5为LED控制引脚,并通过端口方向寄存器TRISC将PC端口设为输出(主程序将该端口各引脚全部设为输出,实际上也可以只将TRISC5设为输出),然后在主循环中每隔150ms对RC5取反并输出,从而在该引脚输出…010101…序列,控制LED持续闪烁。

2.实训要求

① 修改延时参数,改变LED的闪烁频率。

② 修改仿真电路,编程控制连接在不同引脚的多只LED闪烁。 sFH4afhGcttKrTgvyVf3hDUBZeDQmvCPNUaOnIXLK0PaxAiXyUnI5B9q0VffVwYJ

3.源程序代码
点击中间区域
呼出菜单
上一章
目录
下一章
×