单片机控制十字路口交通灯程序设计

лл

第1个回答  2013-05-11
如果一个单位时间为1秒,这里设定的十字路口交通灯按如下方式四个步骤循环工作:
�8�5 60个单位时间,南北红,东西绿;
�8�5 10个单位时间,南北红,东西黄;
�8�5 60个单位时间,南北绿,东西红;
�8�5 10个单位时间,南北黄,东西红;
解:用P1端口的6个引脚控制交通灯,高电平灯亮,低电平灯灭。
代码
#include <at89x52.h>
//sbit用来定义一个符号位地址,方便编程,提高可读性,和可移植性
sbit SNRed =P1^0; //南北方向红灯
sbit SNYellow =P1^1; //南北方向黄灯
sbit SNGreen =P1^2; //南北方向绿灯
sbit EWRed =P1^3; //东西方向红灯
sbit EWYellow =P1^4; //东西方向黄灯
sbit EWGreen =P1^5; //东西方向绿灯
/* 用软件产生延时一个单位时间 */
void Delay1Unit( void )
{
unsigned int i, j;
for( i=0; i<1000; i++ )
for( j<0; j<1000; j++ ); //通过实测,调整j循环次数,产生1ms延时
//还可以通过生成汇编程序来计算指令周期数,结合晶体频率来调整j循环次数,接近1ms
}
/* 延时n个单位时间 */
void Delay( unsigned int n ){ for( ; n!=0; n-- ) Delay1Unit(); }
void main( void )
{
while( 1 )
{
SNRed=0; SNYellow=0; SNGreen=1; EWRed=1; EWYellow=0; EWGreen=0; Delay( 60 );
SNRed=0; SNYellow=1; SNGreen=0; EWRed=1; EWYellow=0; EWGreen=0; Delay( 10 );
SNRed=1; SNYellow=0; SNGreen=0; EWRed=0; EWYellow=0; EWGreen=1; Delay( 60 );
SNRed=1; SNYellow=0; SNGreen=0; EWRed=0; EWYellow=1; EWGreen=0; Delay( 10 );
}
}
第四节:数码管驱动
显示“12345678”
P1端口接8联共阴数码管SLED8的段极:P1.7接段h,…,P1.0接段a
P2端口接8联共阴数码管SLED8的段极:P2.7接左边的共阴极,…,P2.0接右边的共阴极
方案说明:晶振频率fosc=12MHz,数码管采用动态刷新方式显示,在1ms定时断服务程序中实现
代码
#include <at89x92.h>
unsigned char DisBuf[8]; //全局显示缓冲区,DisBuf[0]对应右SLED,DisBuf[7]对应左SLED,
void DisplayBrush( void )
{ code unsigned char cathode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //阴极控制码
Code unsigned char Seg7Code[16]= //用十六进数作为数组下标,可直接取得对应的七段编码字节
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
static unsigned char i=0; // (0≤i≤7) 循环刷新显示,由于是静态变量,此赋值只做一次。
P2 = 0xff; //显示消隐,以免下一段码值显示在前一支SLED
P1 = Seg7Code[ DisBuf[i] ]; //从显示缓冲区取出原始数据,查表变为七段码后送出显示
P2 = cathode[ i ]; //将对应阴极置低,显示
if( ++i >= 8 ) i=0; //指向下一个数码管和相应数据
}
void Timer0IntRoute( void ) interrupt 1
{
TL0 = -1000; //由于TL0只有8bits,所以将(-1000)低8位赋给TL0
TH0 = (-1000)>>8; //取(-1000)的高8位赋给TH0,重新定时1ms
DisplayBrush();
}
void Timer0Init( void )
{ TMOD=(TMOD & 0xf0) | 0x01; //初始化,定时器T0,工作方式1
TL0 = -1000; //定时1ms
TH0 = (-1000)>>8;
TR0 = 1; //允许T0开始计数
ET0 = 1; //允许T0计数溢出时产生中断请求
}
void Display( unsigned char index, unsigned char dataValue ){ DisBuf[ index ] = dataValue; }
void main( void )
{
unsigned char i;
for( i=0; i<8; i++ ){ Display(i, 8-i); } //DisBuf[0]为右,DisBuf[7]为左
Timer0Init();
EA = 1; //允许CPU响应中断请求
While(1);
}本回答被网友采纳

c51单片机c语言交通灯的程序
接下来,我将详细解释如何为C51单片机使用C语言编写交通灯控制程序。首先,我们需要了解C51单片机的基本结构和资源,包括其I\/O端口、定时器\/计数器等。通常,交通灯系统需要控制红、黄、绿三种颜色的灯的亮灭,每种颜色的灯对应一个I\/O端口。此外,我们还需要使用定时器来设置交通灯的切换时间。在编写程...

十字路口交通灯控(单片机 课程设计)制
用单片机控制LED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。东西向通行时间为80s,南北向通行时间为60s,缓冲时间为3s。二、设计原理利用定时器T0产生每10ms一次的中断,每100次中断为1s。对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。值得注意的是,需要意识到,A方向红灯时间=B...

单片机交通灯程序
;---黄灯闪烁5秒程序--- N1: SETB P3.0 MOV R3,#05H MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮 MOV A,#0D4H MOVX @DPTR,A N11: MOV R4,#00H N12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒 N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭 MOV A,#0DDH MOVX ...

单片机编程 交通灯的控制(求wave软件的程序源程序*.asm)
1. 因为本设计是交通灯控制设计,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯,然后转状态l南北绿灯通车,东西红灯;过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时3秒,东西仍然红灯;再转状态3,东西绿灯通车,南北红灯;过一段时间转状态4...

单片机交通灯的设计
(1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统 (2) 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。(3)8051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒...

如何用单片机制作交通灯
LED模拟交通灯 本例中的12只LED分成东西向和南北向两组,各组指示灯均有相向的2只红色、2只黄色与2只绿色的LED,本例中对应的LED单独进行定义,程序运行时模拟了十字路口交通信号灯得切换过程与显示效果。本例电路如下图:(呵呵 图片插入不进来)程序设计调试与实训:源程序中用6行sbit对东西和南北向...

交通信号灯控制程序设计
简单I\/O实验(交通灯控制)一.实验要求 以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。二.实验目的 1.学习在单片机系统中扩展简单I\/O接口的方法。2.学习数据输出程序的设计方法。3.学习模拟交通灯控制的方法。4.学习双色灯的使用。三.实验电路及连线 四.实验说明...

单片机中十字路口交通信号灯的过程,内容,原理?
基于单片机的十字路口交通灯设计 摘要:知道了交通灯的重要性,而对于交通灯最重要的是单片机。跟随单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机通常作为一个核心部件来使用,仅凭对单片机简单了解是不够的,应该根据具体硬件结构并且软硬件结合...

如何用c语言编程在单片机上做交通信号灯
(1)电路连接图:三、软件程序(C语言) 以下是整个设计的软件程序,直接可以编译成*。Hex代码。通过以上电路,下载到单片机,可直接运行。\/\/***\/\/\/程序名:十字路口交通灯控制\/\/编写人:黄庭剑\/\/初写时间:2009年1月2日\/\/程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后...

毕业论文 题目:交通灯控制系统设计
图1:十字路口交通示意图 图2:十字路口通行顺序示意图 图3:十字路口交通指示灯示意图 图4:交通灯控制系统硬件框图 3、硬件设计 本系统硬件上采用AT89C52单片机和可编程并行接口芯片8155,分别控制图2所示的四个组合。AT89C52单片机具有MCS-51内核,片内有8KB Flash、256字节RAM、6个中断源、...

相似回答