单片机流水灯实验报告.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机流水灯实验报告 电子信息工程学系实验报告 课程名称: 单片机原理及接口 实验项目名称: 实验 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 四、实 验内容及过程: 、用 Proteus 画流水灯电路图流程: 1 )、运行 Proteus 搜索元器件窗口,如图  仿真软件,单击 1 所示:  pick from libraries,  打开 图 1 打开搜索元器件窗口 2 )、搜索添加元器件,如图 2 所示: 图 2 搜索添加元器件窗口 )、添加元器件,修改元器件的参数,绘制流水灯原理图,元器件参数为 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 添加入程序文件。 )、编写程序,右击 Target 1 打开设置输出 HEX窗口,如图 4 所 示: 图 4 打开设置输出 HEX窗口 、设置输出 HEX文件,勾选上 Output 下的 Create HEX Fi:, 单 击确定保存,运行程序得到 HEX文件 , 如图 5 所示: 图 5 设置输出 HEX文件 、实验内容: )、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; } } )、编写程序使 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

您可能关注的文档

文档评论(0)

182****2200 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档