1.实践要求与方案设计
(1)项目要求
本项目要求使用MC9S08AC16单片机的GPIO端口实现霓虹灯花式效果。
1)实现8个LED小灯从右往左“依次”点亮的效果。
2)实现8个LED小灯从右往左“逐个”点亮的效果。
(2)方案设计
1)在此子项目中,根据要求硬件电路可以采用通过“灌电流”方式在PTE端口连接8个LED小灯,则小灯点亮的效果只要在对应引脚上输出低电平即可。要实现从右往左“依次”点亮的效果只要先使得最右端的引脚输出低电平,其他引脚为高电平,然后使用位操作中左移指令,依次将0(即低电平)从右端移入,输出到PTE口引脚后即可点亮相应的LED小灯。
2)在此子项目中,要实现1个LED小灯从右往左“逐个”点亮的效果则应先使PTE端口最右端的引脚输出低电平,其他引脚输出高电平,即最右端LED小灯被点亮,然后使用左移指令,依次将0从右端移入,但由于左移指令中高位被丢弃,移入的低位补0,因而当使用移位指令后会使得移入位置上的LED小灯点亮,所以可以使用按位“或”运算的方法将最低位与1相或,将移入的0置为1即可,随后将上述操作循环7次即可实现要求。
2.硬件电路设计
按照设计方案,PTE端口有8个引脚,PTE0~PTE7连接8个LED小灯,并通过限流电阻,采用灌电流方式连接至电源,如端口引脚输出低电平则LED点亮,高电平则不亮,流水宽虹灯项目硬件电路示意图如图4-7所示。
图4-7 流水霓虹灯项目硬件电路示意图(www.xing528.com)
3.软件设计与调试
1)按照设计方案PTE端口的数据方向为输出,故PTEDD=0xFF;起始时PTE端口最右端的引脚输出低电平而其他引脚为高电平,则PTE端口数据初始值PTED=0xFE,然后使用左移指令依次移入一位,但由于寄存器是无法进行移位操作的,故可将PTE端口输出数据保存在一个变量temp中,使用temp进行左移,即temp<<=1即可。
①main()函数,用于控制霓虹灯变换方式。
②延时函数,用于控制小灯流水时间间隔。
2)按照设计方案,程序中需先使PTE端口最右端的引脚输出低电平,然后使用左移指令依次将0从右端移入,在每移位1次后需使用按位或运算将最低位置1,最后将处理后的数据输出到PTE端口,即变量初始时temp=0xFE,其后temp<<=1,temp|=0x01。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。