- 2021-04-19 发布 |
- 37.5 KB |
- 15页
申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
单片机流水灯实验报告
单片机流水灯实验报告 电子信息工程学系实验报告 课程名称: 单片机原理及接口 实验项目名称: 实验 2 流水灯实验 时间: xx-10-21 班级: 电 信 092 姓名: 蔡松亮 学号: 910706247 一、实 验 目 的: 进一步熟悉 keil 仿真软件、 proteus 仿真软件的使用。了解并熟 悉单片机 I/O 口和 LED灯的电路结构,学会构建简单的流水灯电路。 掌握 C51中单片机 I/O 口的编程方法和使用 I/O 口进行输入输出的注 意事项。 二、实验原理: MCS-51 系列单片机有四组 8 位并行 I/O 口,记作 P0、P1、P2和 P3。每组 I/O 口内部都有 8 位数据输入缓冲器、 8 位数据输出锁存器 及数据输出驱动等电路。 四组并行 I/O 端口即可以按字节操作, 又可 以按位操作。当系统没有扩展外部器件时, I/O 端口用作双向输入输 出口;当系统作外部扩展时, 使用 P0、P2 口作系统地址和数据总线、 P3口有第二功能,与 MCS-51的内部功能器件配合使用。 以 P1 口为例,内部结构如下图所示: 图 P1 口的位结构 作输出时:输出 0 时,将 0 输出到内部总线上,在写锁存器信号 控制下写入锁存器,锁存器的反向输出端输出 1,下面的场效应管导 通,输出引脚成低电平。输出 1 时,下面的场效应管截止,上面的上 拉电阻使输出为 1。作输入时: P1 端口引脚信号通过一个输入三态缓 冲器接入内部总线, 再读引脚信号控制下, 引脚电平出现在内部总线 上。 I/O 口的注意事项,如果单片机内部有程序存贮器,不需要扩展 外部存贮器和 I/O 接口, 单片机的四个口均可作 I/O 口使用;四个口 在作输入口使用时,均应先对其写“ 1”,以避免误读; P0 口作 I/O 口使 用时应外接 10K的上拉电阻,其它口则可不必; P2 可某几根线作 地址使用时,剩下的线不能作 I/O 口线使用; P3口的某些口线作第 二功能时,剩下的口线可以单独作 I/O 口线使用。 三、实 验 环 境: 硬件: PC机,基本配置 CPU PII 以上,内存 2G 软件: keil 2, Proteus 7.5 四、实 验 内 容 及 过 程: 1 、用 Proteus 画流水灯电路图流程: 1 )、运行 Proteus 仿真软件,单击 pick from libraries, 打开 搜索元器件窗口,如图 1 所示: 图 1 打开搜索元器件窗口 2 )、搜索添加元器件,如图 2 所示: 图 2 搜索添加元器件窗口 3 )、添加元器件,修改元器件的参数,绘制流水灯原理图,元器 件参数为 c1=c2=20pf、c3=10uf; R1=R2=R3=R4=R5=R6=R7=R8=470欧姆、 R9=10k欧姆;晶振 =12M;VCC=5V。总电路图如图 3 所示: 图 3 流水灯电路原理图 2 、用 keil 建项目流程: 1 )、运行 keil 2 软件,启动后,点击 Project 菜单新建项目, 新建项目后,选择为 AT89C51的仿真单片机的型号,单击 File 选择 New新建程序文件,保存后,右击 Source Group1 添加入程序文件。 2 )、编写程序, 右击 Target 1 打开设置输出 HEX窗口,如图 4 所 示: 图 4 打开设置输出 HEX窗口 3) 、设置输出 HEX文件,勾选上 Output 下的 Create HEX Fi:, 单 击确定保存,运行程序得到 HEX文件 , 如图 5 所示: 图 5 设置输出 HEX文件 3 、实验内容: 1 )、8 个 LED灯从最高位依次点亮, 每次只亮一盏灯, 依此循环。 新建 keil 文件,编写程序,程序如下: #include #include #define uint unsigned int #define uchar unsigned char void defay(uint z) { uint x,y; for(x=100;x>0;x--) for(y=z;y>0;y--); } uchar temp; void main() { temp=0xfe; P2=temp; while(1) { temp=_crol_(temp,1); defay(500); P2=temp; } } 2 )、编写程序使 8 个 LED灯从两边向中间循环点亮。 编写程序,程序如下: uchar temp,m,n; uint i; void main() { m=0xfe; n=0x7f; while(1) { P2=m&n; m=_crol_(m,1); n=_cror_(n,1); if(m==0xef) { m=0xfe; n=0x7f; }} 3 )、编写程序使用一根或二根 I/O 线接一开关控制流水灯流向。 编写程序,程序如下: sbit p15=P1^5; void main() {temp=0xfe; P2=temp; while(1) defay(500); } { if (p15==1){ temp=_crol_(temp,1); defay(500); } if (p15==0) { temp=_cror_(temp,1); defay(500); } P2=temp; } } 五、实 验 心 得: 通过本次的实验, 熟悉 keil 仿真软件、 proteus 仿真软件的使用。 了解并熟悉单片机 I/O 口和 LED灯 51 单片机流水灯试验 一、实验目的 1. 了解 51 单片机的引脚结构。 2. 根据所学汇编语言编写代码实现 LED灯的流水功能。 3. 利用开发板下载 hex 文件后验证功能。 二、实验器材 个人电脑, 80c51 单片机,开发板 三、实验原理 单片机流水的实质是单片机各引脚在规定的时间逐个上电, 使 LED 灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程, 实验中使 用了单片机的 P2端口,对 8 个 LED灯进行控制,要实现逐个亮灯即 将 P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用 rl 或 rr a 实现位的转换。 A 寄存器的位经过 rr a 之后转换如下所 示: 然后将 A寄存器转换一次便送给 P2 即 MOV P2,A便将转换后的数 送到了 P2口,不断循环下去,便实现了逐位置一操作。 四、 实验电路图 五、 通过仿真实验正确性 代码如下: ORG 0 MOV A,#00000001B LOOP:MOV P2,A RL A ACALL DELAY SJMP LOOP DELAY:MOV R1,#255 DEL2:MOV R2,#250 DEL1:DJNZ R2,DEL1 DJNZ R1,DEL2 RET End 实验结果: 六、 实验总结 这次试验我通过 Proteus 仿真实现对流水灯功能的实现。受益匪 浅,对 80c51 的功能和结构有了深层次的了解,我深刻的明白,要想 完全了解 c51 还有一定距离, 但我会一如既往的同困难作斗争。 在实 验中,我遇到了不少困难, 比如不知道怎么将程序写进单片机中,写 好程序的却总出错,不知道什么原因,原来没有生成 hex 文件。这些 错误令我明白以后在试验中要步步细心,避免出错。 单片机流水灯实验报告 一、实验目的 1 、 熟练掌握 AT89S52-Ⅰ型开发板的使用方法和注意事项。 2 、 了解简单单片机应用系统的设计方法。 3 、 掌握应用 KEIL 软件、编译源汇编程序的操作方法。 4 、 掌握应用 USBISP烧录软件的操作方法。 5 、 帮助学生养成良好实验习惯。 二、实验内容 在 AT89S52-Ⅰ开发板上实现 8 个发光 LED“流水”的现象,并通 过编写程序控制流水现象。 三、实验说明 当 8255 的 PA口有低电平输出时,相应的发光二极管就会点亮。 应用这一原理我们可以容易的点亮一个数码管,例如令 PA口输出 0111 1111 时 D1就会点亮。若再把 0111 1111 向右循环一位,利用 PA口输出,就会点亮 D2。在发光二极管两次点亮的间隔中加延时程 序,让每次点亮停留一段时间,像这样人眼就可以看到“流水” 的 现象。 五、实验原理图 六、实验参考程序 #include #define uchar unsigned char #define uint unsigned int uchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; sbit P00=P0^0; sbit P01=P0^1; void delay(uchar t) { uchar i,j; for(i=0;i查看更多
相关文章
- 当前文档收益归属上传用户