欢迎来到天天文库
浏览记录
ID:10889960
大小:64.00 KB
页数:4页
时间:2018-07-08
《单片机实验三流水灯实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、电子信息工程系实验报告成绩:课程名称:单片微型计算机与接口技术指导教师(签名):实验项目名称:实验三流水灯实验实验时间:2013-11-21班级:****姓名:****学号:****一、实验目的:1、进一步熟悉keil仿真软件、proteus仿真软件的使用。2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。二、实验环境:硬件:windows7软件:keil4,Proteus7.8三、实验原理:输入输出接口的作用:数据缓冲功能;信号转换功能;接受和执行CPU命令的功能。M
2、CS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。以P1口为例,内部结构如下图所示:图P1口的位结构图1P1口的位结构作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平
3、。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。四个并行口使用的注意事项如下:1、如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;2、四个口在作输入口使用时,均应先对其写“1”,以避免误读;3、P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必;4、P2可某几根线作地址使用时,剩下的线不能作I/O口线使用;5、P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。四、实验内容及过程:1、
4、建一个keil项目程序建一个protues电路图的过程4(1)protues电路图:一个LED灯一个开关图一一个LED灯一个开关protues电路图(2)keil项目程序:程序1、开关控制灯亮灭程序2、开关按下灯闪三下程序1代码如下:4#include"reg52.h"#defineuintunsignedint#defineucharunsignedcharsbitkg=P1^0;sbitdeng=P2^0;}voidmain(){while(1){kg=1;if(kg==0)deng=1;elsedeng=0;}}4程序2代码如下:4#include"reg52.h"
5、#defineucharunsignedchar#defineuintunsignedintsbitkg=P1^0;sbitdeng=P2^0;voiddelay_50ms(uintt){uintj;for(;t>0;t--)for(j=6245;j>0;j--);}voidmain(){while(1){uchari;deng=0;kg=1;if(kg==0)for(i=0;i<3;i++){deng=1;delay_50ms(10);deng=0;delay_50ms(10);}elsedeng=0;}}42、一个keil项目程序建一个protues电路图(1)pro
6、tues电路图:8个LED灯两个开关(类型数量自定)4图二8个LED灯protues电路图(2)keil项目程序:程序3、单向流水灯程序4、双向流水灯(自选移位)程序3代码如下:4#include"reg52.h"#include#defineuintunsignedint#defineucharunsignedcharvoiddelay_50ms(uintt){uintj;for(;t>0;t--)for(j=6245;j>0;j--);}voidmain(){uchari;while(1){P2=0x01;for(i=0;i<8;i++){del
7、ay_50ms(10);P2=_crol_(P2,1);delay_50ms(10);}}}4程序4代码如下:4#include"reg52.h"#include#defineuintunsignedint#defineucharunsignedcharuchara,b;voiddelay_50ms(uintt){uintj;for(;t>0;t--)for(j=6245;j>0;j--);}voidmain(){uchari;while(1){a=0x01;b=0x80;P2=a
8、b;for(i=0;i
此文档下载收益归作者所有