广告灯的左移右移
《单片机原理与应用》实验报告
实验一、广告灯的左移右移
1.实验目的
单片机 P0 口控制 8 路 LED 灯,硬件电路如图 1.3.1 所示,八个发光二极管 D7-D0 分别接在单片机的 P0.0-P0.7 接口上,输出“0”时,发光二极管亮。先要求将中间两盏灯点亮,再往上下两端点亮,然后由两端往中间点亮,如此重复循环。
2.实验步骤
首先,安装Vision5和STC-ISP软件,在本地部署。其次,拿到单片机,了解到其型号为STC12C5A60S2,找到其原理图,如图2-1所示。之后,打开Vision5新建项目,编写代码灯光左右延时闪烁代码,如表2-1所示。然后,打开STC-ISP,选择对应的单片机型号,打开.hex文件,载入程序,进行烧录。
图2-1 STC12C5A60S2原理图
表2-1 广告灯的左移右移代码
#include <STC12C5A60S2.h> unsigned char a[]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb}; unsigned char i=0; void delay(); void main() { while(1) { if(i==6) i=0; P2=a[i]; delay(); i++; } } void delay() { unsigned char m,n; for (m=0;m<0xff;m++) for (n=0;n<0xff;n++); } |
3.实验结果
根据上述操作,我们完成了代码的撰写和代码的烧录。单片机运行结果如图3-1所示。
图3-1 实验结果
4.实验体会
在课堂上,我学习了单片机的基本结构和工作原理,但通过本次实验,我真正将理论知识与实际操作结合起来。通过编写代码、烧录程序并观察实验结果,我更加直观地理解了单片机如何通过控制端口输出高低电平来控制外部设备(如 LED 灯)的工作状态。实验中,我使用了 STC12C5A60S2 单片机,并通过 Vision5 和 STC-ISP 软件完成了代码的编写和烧录。这一过程让我们认识到,单片机的开发不仅需要编写正确的代码,还需要熟悉硬件电路的设计和调试工具的使用。通过实际操作,我学会了如何将软件程序与硬件电路结合起来,实现预期的功能。在实验过程中,我遇到了一些问题,例如代码编译错误、硬件连接不正确等。通过查阅资料、与同学讨论以及反复调试,我逐步解决了这些问题。这让我意识到,在单片机开发中,耐心和细致是非常重要的,同时也锻炼了我分析和解决问题的能力。硬件与软件的结合:通过本次实验,我更加熟悉了 STC12C5A60S2 单片机 的基本结构,掌握了 P0 端口控制 LED 的方法,理解了“0”电平点亮 LED 的原理。编程逻辑的提升:在编写代码时,我学会了如何利用 数组存储 LED 状态,并通过循环实现灯光的动态变化,提高了对 C51 编程 的理解。调试能力的增强:在实验过程中,我遇到了 “PO” 未定义 的问题,通过查阅资料和调试,最终发现应该使用 P0 而非 PO,这让我认识到 代码细节的重要性。最初编译时出现 “PO: undefined identifier” 错误。解决方法:检查代码后发现 P0 端口名称写错,修正为 P0 = a[i] 后编译通过。问题2:LED 闪烁速度过快,视觉效果不明显。解决方法:调整 delay() 函数 的循环次数,增加延时时间,使灯光变化更加清晰。