十字路口交通灯设计课程设计论文(3)

2019-04-04 23:10

附录一:系统电路图 (张力中)

11

附录二:程序框图 (张力中)

M2=0 紧急模式 Max7219 倒计时显示 M1=0 普通模式 夜间模式 K2=0 东西向 80s 南北向 60s 键盘赋值 K1=0 初始化 15s 临时通行模式 12

附录三:程 序 (张力中)

#include #include \#include \#include \

#define DIG_0 0x01 #define DIG_1 0x02 #define DIG_2 0x03 #define DIG_3 0x04 #define DIG_4 0x05 #define DIG_5 0x06 #define DIG_6 0x07 #define DIG_7 0x08 Unsigned char

//定义max7219数码管 位

second,second2,count2=0,count1=0,flag1,flag2,shuru1,shuru2,data

disdata[4],i,num1,num2,A,C;

sbit buzzer = P1^3; //报警接口

sbit K1 = P1^4; //初值设定接口 sbit K2 = P1^5; //夜间模式判断接口

sbit redA = P0^0; //东西向红绿灯 sbit yellowA = P0^1;

sbit greenA = P0^2;

sbit DXZ = P0^3; //红灯时东西向右转接口 sbit redB = P0^4; //南北向红绿灯 sbit yellowB = P0^5;

sbit greenB = P0^6;

sbit NBZ = P0^7; //红灯时南北向右转接口 void DelayUs2x(unsigned char t); void DelayMs(unsigned char t); void alarm();

void delay(unsigned int xms); void night_mode(); void normal_mode();

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

Init_Max7219();

redA=0,greenA=0,yellowA=0; //初始状态设定 redB=0,greenB=0,yellowB=0; DXZ=0, NBZ=0; buzzer=0; K1=1; K2=1;

13

if(!K1) //如果K1键按下,说明按键按下,进行初值输入 { i=0; A=keyscan(); while(i<4) //输入4位0~9的数,跳出循环

{

if(A<=9&&A>=0) {

disdata[i]=A; i++;

} A=keyscan();

} num1=disdata[0]*10+disdata[1];

num2=disdata[2]*10+disdata[3]; shuru1=num1; //东西向通行时间赋初值

shuru2=num2;

//南北向通行时间赋初值

} else shuru1=80,shuru2=60; //K1未按下,赋原始初值,东西80s,南北60s second=shuru1; if(!K2) //如果K2键按下,进入夜间模式;不然,进入普通模式 {

night_mode(); } else {

normal_mode(); } }

/*****************定时器、中断初始化*************

void Init_Timer_interrupt() {

TMOD |=0x11; //定时器0、1设置16位定时方式 10ms in 12M crystal TH0=0xd8; //定时器0赋初值

TL0=0xf0;

TH1=0xd8; //定时器1赋初值 TL1=0xf0;

IE =0x8f; //打开全部中断(除串行口) IT0=0; //外部中断设为电平出发

IT1=0; }

/**************定时中断0服务程序*****************/

14

void Interrupt_Timer0() interrupt 1 {

TH0=0xd8; //定时器0重新赋值 TL0=0xf0; count1++;

if (count1==100) //100次为1s {

count1=0;

second--; //second 减1 if(second<=3)

{

switch(flag1)

//second<3s时,绿灯灭,黄灯闪烁、蜂鸣器报警

//flag1为黄灯闪烁标志,为0东西黄灯闪烁,为1南北方向

黄灯闪烁

{

case 0: case 1:

greenA=0;yellowA=!yellowA;buzzer=!buzzer;break; greenB=0;yellowB=!yellowB;buzzer=!buzzer;break;

} }

if(second==0)

{

switch(flag2) {

case 0:

//second读尽时,依据flag2标志,更改second值

//flag2==0时,second=shuru2,读尽时flag2取反;flag2==1时,

second=shuru1,读尽时flag2取反

//同时红绿灯状态变化

buzzer=0;flag1=1;second=shuru2;redA=1;greenA=0;yellowA

=0;redB=0;greenB=1;yellowB =0;DXZ=1;NBZ=0;flag2=!flag2;break;

case 1: buzzer=0;flag1=0;second=shuru1;redA=0;greenA=1;yellowA =0;redB=1;greenB=0;yellowB =0;DXZ=0;NBZ=1;flag2=!flag2;break;

}

} }

}

/****************定时中断1服务程序**************/ void Interrupt_Timer1() interrupt 3 {

unsigned char i;

second=second2;

TH1=0xd8; //定时器1重新赋值 TL1=0xf0; count2++;

for(i=1;i<=9;i++) {

if(count2==10*i)

15

//为达到闪烁效果,100ms闪一次


十字路口交通灯设计课程设计论文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于开展2012年广东省著名商标申报工作的通知

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: