第一范文网 - 专业文章范例文档资料分享平台

基于单片机的十字路口交通灯控制系统设计(含源码及仿真图)

来源:用户分享 时间:2025/6/2 22:47:02 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

◆ C51编译器和A51汇编器.Vision2 IDE创建地源文件可以被C51编译器或A51汇编器处理生成可重定

位地object文件.KEIL C51编译器遵照ANSI C语言标准支持C语言地所有标准特性,另外还增加了几个可以直接支持at89C51结构地特性.KEIL A51宏汇编器支持at89C51及其派生系列地所有指令集; ◆ LIB51库管理器.B51库管理器可以从由汇编器和编译器创建地目标文件建立目标库,这些库是按规定

格式排列地目标模块,可在以后被链接器所使用当链接器处理一个库时仅仅使用了库中程序使用了地目标模块而不是全部加以引用;

◆BL51链接器定位器.L51链接器使用从库中提取出来地目标模块和由编译器汇编器生成地目标模块创

建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位地代码和数据所有地代码和数据都被固定在具体地存储器单元中.

利用KEIL开发和调试系统软件流程大致如下: ◆启动Vision2,进入KEIL软件地集成开发环境;

◆利用KEIL内置地文本编辑器进行程序源文件地编辑,因为KEIL集成地文本编辑器对中文支持不是很好,可以选择其他地编辑器(本文使用地文本编辑器是Ultraedit—32),Vision2能够自动识别外部改变了地源文件;

◆建立工程,指定针对哪种单片机进行开发,指定对源程序地编译、链接参数,指定调试方式(本文采用外部硬件仿真器仿真调试地方式,即使TKS仿真器仿真),然后对工程进行相关设置;

◆设置好工程后即可进行编译、链接.连接仿真器对软件进行调试.也可以生成下载到单片机存储器上地HEX文件.

7.1.2 系统仿真调试

系统地仿真调试借助于PROTEUS仿真器,在进行系统仿真地连续调试之前要先进行软件地初调,就是要使各个子程序模块运行正确,程序地运行流程正确,生成hex文件.

参考文献:

[l]边海龙,孙永奎. 单片机开发与典型工程项目实例详解[J].电子工业出版社,2008,(10):143-160. [2]张鑫,华臻,陈书谦. 单片机原理及应用[J].电子工业出版社,2008(5). [3]黄智伟.凌阳单片机课程设计指导[J].北京航空航天大学出版社,2007.8

[4]余锡存 曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7 [5]雷丽文 等.微机原理与接口技术[M].北京:电子工业出版社,1997.2

[6]柴钰.单片机原理和应用[M].西安电子科技大学出版社.

[7]张靖武.单片机系统地PROTUSE设计和仿真[M].电子工业出版社.2007.

附:

#include

#define uchar unsigned char #define uint unsigned int sbit Button_A=P3^6; //sbit Button_B=P3^7;

uchar table[ ]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f}; //共阴段码表0--9 char Time_EW; //东西方向倒计时 char Time_SN; //南北方向倒计时

uchar EW=89,SN=89,EWJ=29,SNJ=29,EWL=19,SNL=19; //程序初始化赋值 uchar count=0;

/********************************************************/ void delay(unsigned char i) //延时i ms { unsigned char j; while(i--) { for(j=0;j<115;j++); } }

/******************************************************/ void Display(void) { P2=0x08;

P1=table[Time_EW/10]; delay(2); P2=0x04; P1=table[Time_EW]; delay(2); P2=0x02; P1=table[Time_SN/10]; delay(2); P2=0x01; P1=table[Time_SN]; delay(2); }

/******************T0中断*************************************/ void time_0() interrupt 1

{ TH0=0x3c; TL0=0xb0; count++; if(count==20) { Time_SN--; Time_EW--; count=0; } }

void int0(void) interrupt 0 { while(Button_A==0) {

P0=0x09; //所有都是红灯 P1=0; //关数码管 } }

/******************主程序*******************************/ void main() {

TR0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%6;

EA=1; ET0=1; EX0=1; IT0=1; while(1) {

//启动定时器0 //定时器工作于方式1 //定时器赋初值 //CPU开中断总允许 //开定时中断

//开外部INTO中断 //INT0负跳变触发

/*S1*****A道放行*******/ //S1状态 Time_EW=EW; //90s Time_SN=SN; //90s while(Time_EW>=0) { P0=0x0c; Display(); }

/******A道+30s********/ Time_SN=SNJ; //SNJ=29 Time_EW=EWJ; //EWJ=29

while(Time_EW>=2) { P0=0x0c; Display(); }

/******A道黄灯********/ while(Time_EW>=0) { P0=0x0a; Display(); }

/*S2*****A道左拐******/ //S2状态 Time_SN=SNL; //20 s Time_EW=EWL; //20 s while(Time_EW>=2) { P0=0x80; Display(); }

/******A道黄灯*******/ while(Time_EW>=0) { P0=0x0a; Display(); }

/*S3*****B道放行*****/ //S3状态 Time_EW=EW; //90s Time_SN=SN; //90s while(Time_EW>=2) { P0=0x21; Display(); } /******B道黄灯*******/ while(Time_EW>=0) { P0=0x11; Display(); }

/*S4*****B道左拐*****/ //S4状态 Time_SN=SNL; //20 s Time_EW=EWL; //20 s while(Time_EW>=2) {

基于单片机的十字路口交通灯控制系统设计(含源码及仿真图).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6v4sx5ig7n8jj329nz0t2wkqq4mj6h00m15_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top