单片机实验报告
实验名称:I/O口控制
姓名:张昊
学号:7
班级:通信2班
时间:
南京理工大学紫金学院电光系
一、实验目的
1、学习I/O口的使用。
2、学习延时子程序的编写和使用。
3、掌握单片机编程器的使用和芯片烧写方法。
二、实验原理
1、广告流水灯实验
(1)做单一灯的左移右移,八个发光二极管L1~L8分别接在单片机的~接口上,输出“0”的时候,发光二极管亮,开始时>>>>...->>>...亮,
重复循环。
(2)系统板上硬件连线:把“单片机系统”A2区的J61接口的~端口与D1区的J52接口相连。要求:对应着L1,对应L2,……,对应着L8。
P1口广告流水灯实验原理图如下
程序设计流程:流程图如下
2、模拟开关实验
(1)监视开关K1(接在端口上),用发光二极管L1(接在单片机端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄火。
(2)系统板上硬件连线:把“单片机系统”A2区的端口用导线连接到D1区的LED1端口上;把“单片机系统”A2区的端口用导线连接
到D1区的KEY1端口上;
实验原理图如下图
程序设计流程
二、实验内容
1、流水灯
#include<>
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
unsigned char count=0; bit flag;
void main()
{
P1=0xff;
TMOD=0x01;
TH0=55536/256;
TL0=55536%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
p10=0;
while(flag==0);
flag=0;
p10=1;p11=0;
while(flag==0);
flag=0;
p11=1;p12=0;
while(flag==0);
flag=0;
p12=1;p13=0;
while(flag==0);
flag=0;
p13=1;p14=0;
while(flag==0);
flag=0;
p14=1;p15=0;
while(flag==0);
flag=0;
p15=1;p16=0;
while(flag==0);
flag=0;
p16=1;p17=0;
while(flag==0);
flag=0;
p17=1;
}
}
void t0_srv() interrupt 1 {
TH0=55536/256;
TL0=55536%256; count++;
if(count==10)
{
flag=1;
count=0;
}
}
2、模拟开关
#include<>
sbit p30=P3^0;
sbit p10=P1^0;
void main()
{
while(1)
{
if(p30==0)
p10=0;
else
p10=1;
}
}
三、小结与体会
通过本次实验学会了I/O口的使用,学会了延时子程序的编写和使用以及掌握了单片机编程器的使用和芯片烧写方法。通过Proteus ISIS和Keil uvision软件的互相配合,使得单片机在电脑上的仿真轻松便捷。通过本次试验,利用简单的试验,2种软件以及硬件的使用。