初识单片机和C语言
随着科技不断的发展,单片机已经成为了现代电子产品中的重要组成部分,它可以帮我们完成各种各样的任务。而在单片机的开发过程中,C语言是最常用的程序设计语言之一,因为其强大的编译、调试和可移植性等优势。跑马灯是单片机编程的入门案例之一,因此学习跑马灯程序对我们来说很有必要。
单片机跑马灯的实现
在单片机跑马灯程序中,我们需要用到单片机的输出端口和延时函数。具体来说,就是利用单片机的IO口控制LED的亮灭,然后使用延时函数来控制其闪烁的速度。
代码如下:
void LED_Init() { P1 = 0xFF; // P1 初始值设为全 1 } void breathe_light() { unsigned char led_move = 0x01; while(1) { P1 = led_move; led_move <<= 1; // led_move 右移一位 if (led_move == 0x00) { led_move = 0x01; // led_move 回到最右侧再重新开始 } delay(100); } }
跑马灯的改进
在跑马灯程序的基础上,我们可以进行一些改进,比如增加闪烁的方式、改变速度和方向等。下面给出一个更加复杂的跑马灯程序,其中每个LED的闪烁方式、亮度和延时都不一样,可以是跳动、渐变和闪烁:
#include void delay(unsigned long i) { while(i--); } void breathe_light() { unsigned char PWM[] = {127, 254, 191, 63, 31, 63, 191, 254}; // PWM为预定亮度表 unsigned char soft_flash[] = {0, 1, 2, 3, 4, 5, 6, 7}; // 正常显示,亮度不断提高 unsigned char hard_flash[] = {1, 2, 4, 8, 16, 32, 64, 128}; // 逆序显示,亮度不断降低 unsigned char jump_flash[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; // 三个LED跳动,其余不变 unsigned char count = 0, shift = 0; while (1) { shift++; if (shift == 3) { shift = 0; } for (count = 0; count < 8; count++) { P1 = PWM[count] & (soft_flash[count] <> (2 - shift) | jump_flash[count]); delay(1000); } } } void main() { breathe_light(); }
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcugrde8.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!