单片机原理及应用实验报告模板
- 格式:doc
- 大小:569.50 KB
- 文档页数:33
实验报告课程名称单片机原理及应用
学院信息工程学院
实验报告一
实验报告二
实验名称简单I/O口扩展实验实验时间2014年月日
同组人员专业班级
实验类型验证性
实验地点学时 2
一、实验要求
1、P1口做为输入口,接8个扭子开关,以实验台上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。
二、实验目的
1.学习在单片机系统中扩展简单I/O接口的方法。
2.学习数据输出程序的设计方法。
3.学习模拟交通灯控制的实验方法。
三、实验说明
P1口为准双向口,P1的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器的相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“1”使它再成为一个输入。
可以用第二个实验做一下试验。先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实验,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。
四、实验电路
五、实验程序#include
sbit CLK=P3^0;
void main()
{ CLK=0;
WR=1;
while(1)
{ unsigned int temp=8;
P2=P1;
CLK=1;
while(temp--);
CLK=0;
}
}
六、实验中遇到的问题及解决办法
批阅成绩
签字:
年月日
实验报告三
实验名称交通灯控制实验实验时间2014年月日1234131024
同组人员专业班级
实验类型综合性
实验地点学时 2
一、实验要求
用汇编和C51编写模拟交通灯的控制程序。
二、实验目的
1.学习汇编和C51程序的编写方法。
2.学习模拟交通灯控制的实现方法。
三、实验说明
要完成本实验,首先必须了解交通路灯的亮灭规律。假设交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的红灯亮,南北路口的绿灯亮,南北方向通车,延时一段时间后,南北路口绿灯灭,黄灯开始闪烁。闪烁若干次后,南北路口红灯亮,而同时东西路口的绿灯亮,东西方向开始通车,延时一段时间后,东西路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到南北路口方向,重复上述过程。
四、实验电路
五、实验程序
#include
unsigned char segdata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char s=0,q=0;
实验报告四
实验名称外部中断实验实验时间2014年月日
同组人员专业班级
实验类型验证性
实验地点学时 2
一、实验要求
在上一实验(交通灯控制实验)内容的基础上增加允许急救车优先通过的要求。有急救车到达时,各方向交通灯信号为全红,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲为中断申请,表示有急救车通过。
二、实验目的
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
三、实验说明
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、PSW外,还要注意:一是主程序中的延时程序和中断处理程序中延时程序不能混用,本实验中,主程序中的延时用的寄存器和中断延时用的寄存器应不相同。第二,主程序中往端口输出数据操作要先保存再输出。
四、实验电路
五、实验程序
#include
unsigned char code segdata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char n;
void delay(unsigned char k)
{
unsigned char i,j;
for(i=0;i for(j=0;j<110;j++); } void dxshanshuo() { unsigned char a; for(a=0;a<6;a++) { P2=0x80; delay(100); P2=0x00; delay(100); } } void nbshanshuo() { unsigned char b; for(b=0;b<6;b++) { 实验报告五 五、实验程序 #include #define uchar unsigned char #define uint unsigned int uchar a; void delay() { uchar i,j; for(i=0;i<20;i++) for(j=0;j<110;j++); } void main() { P1=0xff; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; TR0=1; while(1)