
单片机跑马灯实验报告(2020年整理).pdf
9页1 学号 14142200277 序号 19 单片机原理与接口技术 实验报告 实验项目序号 一一 实验项目名称 跑马灯实验跑马灯实验 姓 名 卢志雄 专 业 电子信息工程 班 级 电信14-2BF 完成时间 2016年4月2日 2 一、实验内容 实验内容为 3 项,其中第 1、2 项必做 1、基本的流水灯 根据图 1 电路,编写一段程序,使 8 个发光二极管 D1、D2、D3、D4、D5、 D6、D7、D8 顺序 (正序) 点亮:先点亮 D1,再点亮 D2、D3D8、D1, 循环点亮每点亮一个 LED,采用软件延时一段时间 2、简单键控的流水灯 不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点 亮 D8,再顺序点亮 D7、D6D1、D8松手后,又按正序点亮流水灯 3、键控的流水灯 上电,不点亮 LED,按一下 K1 键,按正序点亮流水灯按一下 K2 键,按倒序 点亮流水灯,按一下 K3 键,全部关闭 LED 二、电路原理图二、电路原理图 图 1 跑马灯实验电路原理图 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 D0D1D2D3D4D5D6D7 +5V K1 K2 K3 K4 3 三、程序流程图 图 2 简单键控的流水灯程序流程图 四、源程序 1、基本的流水灯 #include #define uint unsigned int #define uchar unsigned char void delay( j ) //延时函数 data uint j; data uint i; while(j--) for(i=0;i<250;i++); void main( ) //主函数 data uchar a; a=1; //保证只有一个点亮 检测 P2 键值 开始 完成对应键值的功能 判断P2键值 是否改变 4 while(1) //不断循环 P2=a; //低电平点亮 a=a<<1; //左移一位,右补 0 if(a==0)a=1; //全 0 delay(2250); //流动点亮延时 2、简单键控的流水灯 #include #define uchar unsigned char #define uint unsigned int void delay(uint i) uchar t; while(i--) for(t=0;t<120;t++); void main() data uchar a; a=1; while(P2==0 xff) P0=a; a=a<1; if(a==0) a=128; delay(250); 3、键控的流水灯 #include #define uchar unsigned char #define uint unsigned int void delay(uint i) uchar t; data uchar b=0 xfb; while(i--) if(P2==0 xfe) b=0 xfe; if(P2==0 xfd) b=0 xfd; if(P2==0 xfb) b=0 xfb; for(t=0;t<120;t++); void main() data uchar a; a=1; while(P2==0 xfe) P0=a; a=a<<1; if(a==0) a=1; delay(250); 6 while(P2==0 xff) P0=a; a=a<1; if(a==0)a=128; delay(250); while(P2==0 xff) P0=a; a=a1; if(a==0)a=128; delay(250); while(P2==0 xfb) P0=0 xff; 7 五、实验结果 1、、基本的流水灯基本的流水灯 基本流水灯仿真图 2、、简单键控的流水灯简单键控的流水灯 简单键控的流水灯仿真图 8 3、、键控的流水灯键控的流水灯 键控的流水灯仿真图 六、思考题回答 1、采用 I/O 口作为输出口时要考虑哪些因素?为什么实验装置中 LED 要串 联一个电阻? 答:电压的大小(包括它能感知的最小电压作为高电平),电流的驱动能力 等, 同时也要要考虑它是否要加上拉电阻。
实验装置中 LED 串联一个电阻是为了 防止电流过大而对 LED 灯有损坏 2、采用 I/O 口作为输入口时要注意什么?键控的流水灯时为什么要在延时 程序中检测是否按键? 答:在进行读操作时,必须要先向 Px 口的锁存器写 1;本程序未采用例程 所说的方法, 但是在延时函数中进行按键检测是为了防止在延时程序中间有键按 9 下却检测不到的情况,即放在延时函数中检测间隔时间短,反应快 3、为什么延时程序要做一个函数? 答:可以具体事情具体处理,方便调用比如交通信号灯的控制,红灯绿灯 黄灯都有时间控制,亮的长短就要由延时程序控制等等 七、实验心得体会 学习单片机这门课程, 要掌握单片机指令系统中汇编语言各种基本语句的意义 及汇编语言程序设计的基本知识和方法, 以及单片机与其他设备相连接的输入输 出中断等接口技术跑马灯实验虽然是第一个单片机实验,却让我深有体会,首 先要熟悉单片机指令,上课时跟着老师走,认真对待,每次只要跟上老师上课所 讲的内容以及按要求完成老师布置的课堂习题, 掌握程序的编写以及完成实际上 机操作是不成问题的,然后就是必须熟练运用一些基本语句,运用 proteus 和 uVision4 等仿真软件,最后是上机操作,根据教程了解单片机与其他设备相连 接的输入输出中断等接口技术, 运用实际, 就可以完成简单有趣的跑马灯实验了! 。
