




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机实验8的学习课件第1页/共20页微机原理与接口技术(单片机)实验
实验八
交通灯控制系统
一、实验目的:
1、通过实验学会交通灯控制系统设计。2、熟悉XL400+单片机综合仿真试验仪的组成和使用方法。3、学会应用XLISP和keil-uvision2集成调试软件进行实验。掌握实验的步骤并能得到正确的实验结果。第2页/共20页二、实验内容与步骤(一)内容1
设计一个交通灯控制系统,要求能实现以下功能:
1、正常时信号灯控制 (1)初始状态东西南北全为红灯 (2)东西红灯、南北绿灯 (3)东西红灯、南北绿灯转黄灯闪烁 (4)南北红灯、东西绿灯 (5)南北红灯、东西绿灯转黄灯闪烁 (6)转(2)(二)内容2
设计一个00-59简易秒表第3页/共20页(二)实验步骤
第一部分:系统安装和检测1、用USB电缆线连接PC机的USB口和实验仪的USB插座,打开PC机的控制面板\系统\硬件\设备管理器观看,通常实验仪连接在COM3上。2、XL400+试验仪设置按下电源开关,确认编程/仿真按钮处于编程(弹起)状态。确认CPU卡座上的CPU芯片为AT89S52并已压下扳手安装好。3、双击桌面XLISP启动程序,选择操作/检测编程器。出现编程器检测OK!说明系统已经连接完好,可以下一步实验,否则需要检查出错的原因并改正。第4页/共20页
第二部分软件设计在Kiel软件中输入程序,编辑,编译链接,并运行程序。注意要生成HEX文件。1、双击桌面上的UV2快捷图标,启动软件。2、点击P工程N新建工程输入工程名点击保存。出现CPU屏幕,选Atmel AT89C51点确定。屏幕左上方出现图标目标1。第5页/共20页3、点击文件新建文件出现汇编语言输入区。输入程序,点击文件中的保存,输入:程序名.C并点击保存。(输入的程序名一般不超过6个字母数字,以字母打头)4、点击(图标)目标1前的“+”号,出现(图标)源程序组1,选中并点右键,选”文件增加到源程序组1”,选择文件类型为.C,再选输入的程序名.C,点ADD(加入),点确定。
此时点击源程序组1可以看到输入的程序名.C
第6页/共20页
5、对目标1的属性进行修改;如右图,点击工程下拉菜单中的”目标’目标1’属性”;
第7页/共20页6、单击”目标”,输入仿真器的频率12(MHz);第8页/共20页7、选择”输出”菜单中的”生成HEX文件”,以便汇编后产生HEX代码,供编程器使用;第9页/共20页第三部分程序写入单片机观察运行结果1、双击桌面XLISP启动程序,选择打开框,找到需要执行的程序(HEX文件),点击;在XLISP的文件程序区可见到要执行的程序;2、点击写入框,在程序写入结束后即可观察运行的结果第10页/共20页交通灯控制系统设置: 绿黄红(南北)P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P1口状态0000000101H南北红灯0000010004H南北绿灯0000001002H南北黄灯
第11页/共20页交通灯控制控制状态 绿黄红(东西)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P2口状态0000000101H东西红灯0000010004H东西绿灯0000001002H东西黄灯
(1)东西南北全红灯:P1=0x01;P2=0x01(2)东西绿灯南北红灯:P1=0x04;P2=0x01(3)东西黄灯闪烁南北红灯:P1=02和00;P2=0x01(4)东西红灯南北绿灯:P1=0x04;P2=0x01第12页/共20页
交通灯控制参考程序#include<REG51.H>unsignedchart0,t1; //定义全局变量,用来保存延时时间循环次数//函数名:delay0_5s1用T1方式1编制0.5秒延时程序,voiddelay0_5s1(){for(t0=0;t0<0x0a;t0++)//用全局变量t0作为循环控制变量{ TH1=0x3c; //设置定时器初值
TL1=0xb0;TR1=1; //启动T1while(!TF1);//查询计数是否溢出,即定时50ms时间到,TF1=1TF1=0; //50ms定时时间到,将定时器溢出标志位TF1清零
}}第13页/共20页//函数名:delay_t1实现0.5秒~128秒延时voiddelay_t1(unsignedchart){for(t1=0;t1<t;t1++) //采用全局变量t0作为循环控制变量
delay0_5s1();}voidmain() //主函数 {unsignedchark;TMOD=0x10; //T1工作在方式1EA=1; //开放总中断允许位
EX0=1; //开外部中断0中断允许位第14页/共20页
while(1){P1=0x01; P2=0x01; //东西南北红灯,延时5秒
delay_t1(10);P1=0x04;P2=0x01; //东西绿灯南北红灯
P1=0x0a; //A黄灯,B红灯,for(k=0;k<5;k++){ //A黄灯闪烁5次
P1=02;P2=0x01delay0_5s1(); //延时0.5秒
P1=00;P2=0x01;delay0_5s1(); //延时0.5秒
}
第15页/共20页P1=0x04;P2=0x01; //东西红灯南北绿灯,延时5秒
delay_t1(10);for(k=0;k<5;k++) //B黄灯闪烁3次
{ P1=0x01;P2=0x02;delay0_5s1(); //延时0.5秒
P1=0x01;P2=0x00delay0_5s1(); //延时0.5秒
}}}第16页/共20页#include<reg51.h>unsignedcharmsec,sec; //定义msec为50ms计数变量,sec为秒变量voiddelay(unsignedchari); voidT0_INT(void)interrupt1 //定时器0中断类型号为1{TH0=0x3c; //50ms定时初值
TL0=0xb0;msec++; //中断次数增1if(msec==20) //中断次数到20次吗?
{msec=0; //1秒计时到,50ms计数单元清零
sec++; //秒单元加1if(sec==60) //到60秒吗?
{ sec=0; //是,秒单元清零
}}}00~59简易秒表参考程序第17页/共20页voidmain() {unsignedcharled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数字0~9字型显示码
unsignedchartemp;TMOD=0x01; //定时器0工作方式1TH0=0x3c; //50ms定时初值
TL0=0xb0;EA=1; //开总中断
ET0=1;TR0=1; //开定时器0中断while(1){P2=0x7f; //选中P2.0控制的数码管
P0=led[sec%10]; //显示秒个位
delay(10);P2=0xbf; //选中P2.1控制的数码管
P0=led[sec/10]; //显示秒十位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论