完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
实验目的:
按照电路要求在Protues中设计电路图。编程实现如下功能: 用单片机端口作输出口,控制四个方向共12个发光二极管亮灭,模拟交通灯管理。功能描述如下:初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。 交通灯控制流程图 Proteus 仿真原理图 代码 #include #include typedef unsigned char uchar; typedef unsigned int uint; #define CON XBYTE[0x0003] //控制寄存器端口地址 #define PA XBYTE[0x0000] //PA端口地址 #define PB XBYTE[0x0001] //PB端口地址 #define PC XBYTE[0x0002] //PC端口地址 uchar count=0; uchar sum_time=0; //定义一个数组,用来显示计时信息 uchar time[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10}; //定时器的初始化 void time_init(){ TMOD=0x10; //定时器1,模式1 TH1=0x3c; //定时为50ms TL1=0xb0; EA=1; ET1=1; TR1=0; //关闭定时 } //中断函数 void int_timer_1() interrupt 3{ TR1=0; TH1=0x3c; TL1=0xb0; count++; TR1=1; } //利用中断写的延时函数,当形参为1时,延时500ms void delay_500ms(uchar t){ time_init(); TR1=1; //启动定时 sum_time=t*10; while(1){ if(count==sum_time){ //定时时间到 count=0; sum_time=0; TR1=0; return; } } } //将交通灯熄灭 void clc_light(){ PA = 0xff; PB = 0xff; } //8255的初始化 void init_8255(){ CON=0x80; clc_light(); PC=0x00; } //交通灯显示 void traffic_lights(){ uchar i; clc_light(); PA=0xf6; PB=0xdb; for(i=10;i>0;i--){ PC=time; //最后3s,东西方向绿灯闪烁,南北方向红灯闪烁 if(i<=3){ clc_light(); delay_500ms(1); PA=0xf6; PB=0xdb; delay_500ms(1); }else{ //前7s,灯保持常亮 delay_500ms(2); } } //黄灯闪烁3次 clc_light(); for(i=3;i>0;i--){ PC=time; clc_light(); delay_500ms(1); PA=0xed; PB=0xed; delay_500ms(1); } clc_light(); PA=0xdb; PB=0xf6; for(i=10;i>0;i--){ PC=time; //最后3s,东西方向红灯闪烁,南北方向绿灯闪烁 if(i<=3){ clc_light(); delay_500ms(1); PA=0xdb; PB=0xf6; delay_500ms(1); }else{ //前7s,灯保持常亮 delay_500ms(2); } } //黄灯闪烁3次 clc_light(); for(i=3;i>0;i--){ PC=time; clc_light(); delay_500ms(1); PA=0xed; PB=0xed; delay_500ms(1); } } void main(){ init_8255(); //初始状态,红灯全亮 PA=0xdb; PB=0xdb; delay_500ms(2); while(1){ traffic_lights(); } } |
|
|
|
只有小组成员才能发言,加入小组>>
2351 浏览 0 评论
878浏览 2评论
521浏览 1评论
1403浏览 0评论
285浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 08:01 , Processed in 1.150467 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191