单片机原理流水灯设计
- 格式:doc
- 大小:109.01 KB
- 文档页数:4
第 1 页 共 4 页
原理:
MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输出口;P0、P1、P2和P3接口均具有普通I/0口的功能,P0、P2口还可以作系统地址和数据总线、P3口有第二功能,P3口的第二功能大多与其内部功能部件有关,RD、WR是外部数据存储器的写、读控制信号,它与MCS-51的内部功能器件配合使用。
本实验用到的P1口内部结构如图1所示。作输出时:输出0即(P1.x=0)时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。为了能读到真实的引脚信号,下面的场效应管必须截止,即锁存器的内容必须是1。为了能正确读取引脚信号,锁存器必须先写1。通过C51程序的编写,可以使I/O口的每根引脚在不同的时间输出不同的0、1信号,从而控制外部的设备。
归纳四个并行口使用的注意事项如下:
1、如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用。
2、四个口在作输入口使用时,均应先对其写“1”,以避免误读。
3、P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必。
4、P2可某几根线作地址使用时,剩下的线不能作I/O口线使用。
5、P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。 图 1 P1口的位结构
第 2 页 共 4 页
内容及过程:
用proteus设计流水灯电路,将仿真实验板上51单片机的P1口的8根线与实验板上的8位LED灯连接,I/O口的一根引脚控制一个LED灯。根据实验板上LED灯的硬件连接,编写程序使8个LED灯从最低位依次点亮,每次只亮一盏灯。依此循环。
一、在此基础上编写程序使用一根I/O线接一开关控制流水灯流向。
1、用keil软件编写流水灯程序:
(1)、启动Keil仿真软件后,点击Project菜单新建项目(new project);
(2)、新建项目后,选择仿真单片机型号,并新建、保存、然后加入程序文件(add files
to group“source group”)
(3)、编写言程序,程序如下:
#include "reg51.h" main()
#include "intrins.h" {
#define uchar unsigned char temp=0xFE;
#define uint unsigned int for(i=0;i<8;i++)
uchar temp,i; {
void delay(uint z) P0=temp;
{ temp=_crol_(temp,1);
uint x,y; delay(400);
for(x=z;x>0;x--) }
for(y=110;y>0;y--);//延时函数 }
}
(4)、程序写好后,进行连接、编译、生成hex文件,如图2、图3所示:
图2 单击output,然后点击creat hex fi: 图3 生成led.Hex文件
2、用proteus仿真软件画出流水灯的电路图,用到的元器件有:AT89C51RB2、CAP、八个LED-BLUE、CRYSTAL、RES、BUTTON及电源和接地。图如4所示:
第 3 页 共 4 页
图4 proteus流水灯仿真电路图
3、双击单片机,导入程序,如图5所示:
图5 导入流水灯的hex文件
二、在此基础上编写程序使8个LED灯从两边向中间循环点亮。
1、用keil软件编写灯从两端向中间移动流水灯程序:
(1)、启动Keil仿真软件后,点击Project菜单新建项目(new project);
(2)、新建项目后,选择仿真单片机型号,并新建、保存、然后加入程序文件(add files
to group“source group”)
(3)、编写言程序,程序如下:
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
uchar a,b,i;
void delay(uint z)
{
uint x,y;
第 4 页 共 4 页 for(x=z;x>0;x--)
for(y=240;y>0;y--);
}
main()
{
while(1)
{
for(i=0;i<5;i++)
{
a=(~(0x01<
b=(~(0x80>>i))&0xf0;
P0=a+b;
delay(500);
}
}
}
(4)、程序写好后,进行连接、编译、生成hex文件,如图6、图7所示:
图6 单击output,然后点creat hex 图7 生成hex可执行文件
2、用proteus软件进行仿真,画出电路图,所需元器件有:AT89C51RB2、CAP、八个LED-BLUE、CRYSTAL、RES、BUTTON及电源和接地。图如4所示,导入程序如图5所示。利用proteus进行仿真实验时,如何正确画出电路图关系到实验仿真结果的正确以否,所以,需掌握单片机的基本原理,I/0口的功能,然后认真画图,画好后,导入程序进行调式,发现问题进行修改,最后仿真成功。