基于AT89C51的交通灯电路图与程序设计.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:7 大小:1.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于AT89C51的交通灯电路图与程序设计.doc

基于AT89C51的交通灯电路图与程序设计.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

程序设计与编辑:湖南信息职院——信息工程XXX编辑道路交通灯单片机程序设计思路:东西直行和左转同控制、南北直行和左转通控制。人行东西同控制、南北通控制,共4组LED灯组成整个交通灯仿真电路(真实的情况是8组)。仿真电路图没有最小系统,实际的电路请添加最小系统!人行则对面的车辆禁止直行和左转,车辆左转则禁止同组的直行和对面车辆的左转和直行,车辆直行则禁止同组的左转和对面车辆的左转和直行。使用74HC164控制12个LED交通指示灯用中断服务减少误差等。这里数码管区分了东西和南北方向的电路仿真图:C程序:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDAT=P1^7;//模拟串口数据发送端*控制车辆交通灯sbitCLK=P1^6;//模拟时钟控制端sbitDAT1=P1^5;//模拟串口数据发送端*控制人行交通灯sbitCLK1=P1^4;//模拟时钟控制端sbitS1=P3^0;//繁忙模式sbitS2=P3^1;//特殊模式/*东西交通倒计时显示数码管选通位*/sbitK1=P1^0;sbitK2=P1^1;/*南北交通倒计时显示数码管选通位*/sbitK3=P1^2;sbitK4=P1^3;/*-----------------------*led_mode表示通行的方向,*time0_count表示定时器0的计数*time_second表示中断的时间*time1_count表示定时器1的计数*left_mode表示左转的开关*second表示通行的时间*left_second表示左转通行时间*-----------------------*/uintled_mode,time0_count,time_second,time1_count,left_mode,second=60,left_second=20;/*七段数码管显示0-9*/ucharcodeSEGNUM[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};/*延时函数*/voiddelay(uints){uintms;for(;s>0;s--)for(ms=0;ms<256;ms++);}/*车辆指示灯数据传输服务*/voidSendByteCar(ucharbyte){uchari;for(i=0;i<8;i++){DAT=byte&0x01;CLK=0;CLK=1;byte>>=1;}}/*人行指示灯数据传输服务*/voidSendBytePerson(ucharbyte){uchari;for(i=0;i<8;i++){DAT1=byte&0x01;CLK1=0;CLK1=1;byte>>=1;}}/*东西数码管显示*/voidDisplayEW_SEG(uintseg){K1=1;P0=SEGNUM[seg/10];delay(10);K1=0;P0=0xff;K2=1;P0=SEGNUM[seg%10];delay(10);K2=0;P0=0xff;}/*南北数码管显示*/voidDisplaySN_SEG(uintseg){K3=1;P2=SEGNUM[seg/10];delay(10);K3=0;P2=0xff;K4=1;P2=SEGNUM[seg%10];delay(10);K4=0;P2=0xff;}/*LED交通指示灯显示*/voidMode_LED(){if(led_mode==1){//DisplayEW_SEG(9);if(left_mode==1){//南北左拐,东西、南北人行红灯,SendByteCar(0xd3);SendBytePerson(0xaf);}else{//南北直行、南北左转红灯、东西左转直行红灯、东西人行绿灯SendByteCar(0xdb);SendBytePerson(0x6f);}}if(led_mode==2)//南北黄灯、东西红灯,东西、南北人行红灯{SendByteCar(0xd2);SendBytePerson(0xaf);}if(led_mode==3){if(left_mode==1){//东西左拐