这是我的实验,
交通灯控制的,
平时都是东西南北交替20s,
异常60s,
是自己一点一点写的,
请大家多多指教
实验一:交通灯控制实验
实验学时:2;实验类型:验证 ;实验要求:必做
一、实验目的
1. 了解51单片机芯片的引脚及编程特点。
2. 熟悉汇编及C语言编写程序的方法。
3. 掌握定时器和中断的应用,同时使用定时中断和外部中断。
4. 熟悉Keil软件的使用方法。
5. 学会使用各类程序下载器的实用。
二、实验内容
1.学习如何使用程序下载器下载程序至开发板。
2.设计C语言程序。
3.根据C语言程序结合所学知识编译程序。
三、实验原理、方法和手段
用单片机设计一个十字路口交通灯模拟控制系统,要求东西、南北两个方向都通行20秒,警告3秒,禁止20秒,同时要考虑到东西、南北两个方向出现异常情况,出现异常情况器该方向通行60秒。
四、实验条件
1.台式电脑一台,且至少要具备一个usb串行口。
2.单片机仿真实验板一块
3.usb串口连接线一条
4.杜邦线若干
五、实验步骤
程序内容:
主程序中实现交通灯正常运行过程;
两种异常用外中断0和外中断1管理,外接开关模拟异常发生;
在中断服务程序中实现异常处理,在主程序中开放外中断0和外中断1,设置为边沿触发方式;
500ms信号由定时计数器0,选择方式1,定时50ms,循环10次产生,定时计数器0采用查询方式。
1.实验预习:在实验前每位同学都需要对本次实验进行认真的预习,学习仿真系统的过程,编制好相应的实验程序。
2.实验记录:学生记录实验过程如何变化。
3.实验报告:画出并分析各程序流程图,写出各程序主要功能能,编制各程序的替代程序。实验报告要独立完成,字迹工整,图表清晰,分析认真全面。
八、其它说明
进行硬件实验室注意连线规范,防止由于短路引起的器件损坏,所有硬件设备不可带电插拔。
程序参考:
while(1)
{
P1=0x21; //状态1,东西方向绿灯,南北方向红灯20s
delay1s(40);
P1=0x41; //状态2,东西方向黄灯,南北方向红灯3s
delay1s(6);
P1=0x12; //状态3,南北方向绿灯,东西方向红灯20s
delay1s(40);
P1=0x14; //状态4,南北方向黄灯,东西方向红灯3s
delay1s(6);
}
}
void int_0(void) interrupt 0
{
unsigned char i1,i2;
i1=P1;
for(i2=0;i2<60;i2++)
{
P1=0x21;
delay1s(1);
P1=0x00;
delay1s(1);
}
P1=i1;
}
void int_1(void) interrupt 2
{
unsigned char j1,j2;
j1=P1;
for(j2=0;j2<60;j2++)
{
P1=0x12;
delay1s(1);
P1=0x00;
delay1s(1);
}
P1=j1;
}
//延时500ms函数
void delay1s(unsigned char m)
{
unsigned char k1,k2;
TH0=0x3C;TL0=0xB0;
TR0=1;
for (k1=0;k1<m;k1++)
{
for (k2=0;k2<10;k2++)
{
while(!TF0);
TF0=0;
TH0=0x3C;TL0=0xB0;
}
}
}
|