本帖最后由 junying 于 2018-10-21 11:53 编辑
MSP-LAB实训-GPIO高级输出之1.1:流水灯
实验要求:流水灯是实现若干个LED按照一定频率依次闪烁的功能。请在MSP-LAB系统实现完整的八个LED组成的流水灯,要求在2秒周期内实现8个LED依次显示一次。
题意分析: 1、系统中存在八个独立LED:D3~D10,可以作为本训练题目的实现对象。查看原理图(如图1所示) 得知,八个LED由U15的74HC573驱动连接,74HC573是8-bit D触发器,其数据手册查看http://www.ti.com/product/CD74HC573。当LE管脚连接为高的时候,74HC574直接输出输入管脚的值,而J11中间任何一个管脚为高,则其对应的LED灯点亮,否则LED熄灭。 2、在2s时间周期依次显示8个LED,则每个LED显示持续250ms,为了精确得到一个250ms的时间参数,可以设置一个Timer中断,每次中断间隔250ms。 3、具体实现中,采用P1的八个GPIO输出对应连接到J11的各个管脚,初始化为0x01,即只有一个LED为亮在中断**程序中设置P1输出的切换。
整体实现过程描述如下: 硬件连接: 1、将J11的8个PIN与MSP430单片机的P1.0~P1.7一一对应用杜邦线连接; 2、将J8的中间管脚LE与3.3V连接,使能74HC573为直接输出;
程序设计: 1、采用Grace配置外设 (1) 创建工程exam0101 ,如图2所示;
(2) 如图3 配置Timer0为:SMCLK输入、8分频、UP Mode、CCR0为(31250-1),并使能CCR0的比较中断,这样得到一个250ms一次的中断;
(3) 如图4 配置P1.0~P1.7为输出;
(4) 配置完成后保存,并生成代码; 2、在CCSv8中修改代码 (1) 如图5 创建一个CCS空的工程,选择MSP430G2553芯片;
(2) 将Grace生成的代码中的所有源程序(*.c、*.h)拷贝到CCS创建的工程目录; (3) 由于Grace 生成的代码用到一些特殊头文件,如图6所示在项目属性页中,添加Grace安装目录到include搜索路径;
(4) 在中断**程序InterruptVectors_init.c 文件中如图7添加用户程序,即在每次中断发生之后,切换P1的管脚输出;
(5) 在main.c 文件中,如图8增加一个while(1)空循环,以保证程序不会意外退出;
实验结果: 1、连线和执行效果图如图9所示。 课后练习: 习题1:请按照例程exam0101的要求,更换为P2的输出,并重新修改代码和连接,实现流水灯效果。 习题2:流水灯的显示频率修改为每个LED显示持续1秒,8个LED灯需8秒轮流显示完成一次,请修改代码并实现。(Tips:Timer中断的CCR0设置值有最大限制,思考如何实现长时间的定时)
原文链接:https://weibo.com/1404637705/GEUTwnq30
|