电子信息工程学系实验报告
课程名称: 单片机原理及接口 实验项目名称: 实验2 流水灯实验 时间: 20##-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 <reg52.h>
#include <intrins.h>
#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;
}
defay(500);
}
}
3)、编写程序使用一根或二根I/O线接一开关控制流水灯流向。
编写程序,程序如下:
sbit p15=P1^5;
void main()
{
temp=0xfe;
P2=temp;
while(1)
{
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灯的电路结构,学会构建简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
第二篇:单片机流水灯实验报告
流水灯实习报告
一、实验原理
单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。
二、硬件原理图
三、实验程序
ORG 0000H
AJMP START
ORG 001BH
AJMP INT
ORG 0100H
START:MOV SP,#60H
MOV TMOD,#10H
MOV TL1,#00H
MOV TH1,#4CH
MOV R0,#00H
MOV R1,#20
SETB TR1
SETB ET1
SETB EA
SJMP $
INT:PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
CLR TR1
MOV TL1,#B0H
MOV TH1,#3CH
SETB TR1
DJNZ R1,EXIT
MOV R1,#20
MOV DPTR,#DATA
MOV A,R0
MOVC A,@A+DPTR
MOV DPTR,#8000H
Movx @DPTR,A
INC R0
ANL 00,#07H
EXIT:POP DPH
POP DPL
POP PSW
POP ACC
RETI
DATA:DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H
END
四、实验功能
以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮…… 一直循环下去.
五、实验总结
在做本次实验时,首先要注意实验要求是用74LS273做输出口,所以不要用P1口作输出口。在引入中断前,要注意保护现场。