简易交通灯设计论文报告2(7)

2019-04-14 16:54

四川科技职业学院毕业论文设计

第 28 页

附录C:程序

#include

#include //包含库文件

sbit smg1=P3^0; //定义南北方向数码管低位 sbit smg2=P3^1; //定义南北方向数码管高位 sbit smg3=P3^2; //定义东西方向数码管低位 sbit smg4=P3^3; //定义东西方向数码管高位 sbit N_green=P2^0; //定义北向绿灯端口 sbit N_red=P2^1; //定义北向红灯端口

sbit N_yellow=P2^2; //定义北向黄灯端口

sbit S_green=P2^7; //定义南向绿灯端口 sbit S_red=P2^6; //定义南向红灯端口 sbit S_yellow=P2^5; //定义南向黄灯端口

sbit W_green=P1^0; //定义西向绿灯端口 sbit W_red=P1^1; //定义西向红灯端口

sbit W_yellow=P1^2; //定义西向黄灯端口

sbit E_green=P1^7; //定义东向绿灯端口 sbit E_red=P1^6; //定义东向红灯端口 sbit E_yellow=P1^5; //定义东向黄灯端口

sbit k0=P3^4; //定义复位按键 sbit k1=P3^5; //定义夜间模式按键 sbit k2=P3^6; //定义紧急模式按键 sbit menu=P3^7; //定义设定时间按键 sbit zj=P1^3; //定义时间加按键 sbit jx=P1^4; //定义时间键按键

int kkk=0,fk=0;

int djs22,js1=0,djs21,flgaa,nbdjs=20,dxdjs=20; //以上为临时变量 int js=0,djs=20,djs1=20; //初始倒计时时间

int table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40}; //共阴极数码管段值

/************以下为函数声明*************/ void jtd(); void jtda(); void jtdb(); void djsxs();

修德技精 勤思协作

四川科技职业学院毕业论文设计

第 29 页

void yj(); void jj(); void jtday(); void jtdby();

/*****************************************************/ /* 函数名:delayms */ /* 功能:产生毫秒级延时 */ /*****************************************************/ void delayms(int x) {

char i; while(x--) {

for(i=150;i>0;i--); } }

/*****************************************************/ /* 函数名:Timer0_init() */ /* 功能:定时器0初始化 */ /*****************************************************/ void Timer0_init() {

js=0; TMOD=0x01; //定义定时器0工作模式 TH0=0x4c; //赋初值高位 TL0=0x00; //赋初值低位 TR0=1; //启动定时器 ET0=1; //开中断 EA=1; //开全局中断 }

/*****************************************************/ /* 函数名:timer0() interrupt 1 using 1 */ /* 功能:定时器0中断服务函数 */ /*****************************************************/ void timer0() interrupt 1 using 1 { TF0=0; TH0=0x4c; TL0=0x00; //重新赋高地位初值 js++; if(js==22) { js=0; djs--;

修德技精 勤思协作

四川科技职业学院毕业论文设计

第 30 页

djs1--; kkk++; //以上用于产生1S中断 } }

/*****************************************************/ /* 函数名:djsxs22() */ /* 功能:4个数码管动态显示 */ /*****************************************************/ void djsxs22() { int b1,b2; b1=djs1/10; //将倒计时时间的高位赋予b1 b2=djs1; //将倒计时时间的低位赋予b2 P0=table[b1]; smg1=0;

delayms(3);

smg1=1; //显示b1 P0=table[b2]; smg2=0; delayms(3); smg2=1; //显示b2 P0=table[b1]; smg3=0;

delayms(3);

smg3=1; //显示b1 P0=table[b2]; smg4=0; delayms(3); smg4=1; //显示b2 }

/*****************************************************/ /* 函数名:djsxs11() */ /* 功能:4个数码管动态显示 */ /*****************************************************/ void djsxs11() //此函数注视同djsxs22() { int b1,b2; b1=djs/10; //将倒计时时间的高位赋予b1 b2=djs; //将倒计时时间的低位赋予b2 P0=table[b1]; smg1=0;

delayms(3);

smg1=1; //显示b1

修德技精 勤思协作

四川科技职业学院毕业论文设计

第 31 页

P0=table[b2]; smg2=0; delayms(3); smg2=1; //显示b2 P0=table[b1]; smg3=0;

delayms(3);

smg3=1; //显示b1 P0=table[b2]; smg4=0; delayms(3); smg4=1; //显示b2 }

/*****************************************************/ /* 函数名:djsxs1() */ /* 功能:用来显示设定东西倒计时的时间 */ /*****************************************************/ void djsxs1() { int b1,b2; b1=djs1/10; //将倒计时时间的高位赋予b1 b2=djs1; //将倒计时时间的低位赋予b2 P0=table[b1]; smg3=0;

delayms(3);

smg3=1; //显示b1 P0=table[b2]; smg4=0; delayms(3); //显示b2 smg4=1; }

/*****************************************************/ /* 函数名:djsxs() */ /* 功能:用来显示设定南北倒计时的时间 */ /*****************************************************/ void djsxs() { int b1,b2; b1=djs/10; //将倒计时时间的高位赋予b1 b2=djs; //将倒计时时间的低位赋予b2 P0=table[b1];

修德技精 勤思协作

四川科技职业学院毕业论文设计

第 32 页

smg1=0;

delayms(3);

smg1=1; //显示b1 P0=table[b2]; smg2=0; delayms(3); smg2=1; //显示b2 }

/*****************************************************/ /* 函数名:jj() */ /* 功能:紧急模式,按下紧急模式按键后,四个方向 */ /* 数码管灭,红灯全亮,用于紧急车辆通过使 */ /* 用,比如消防车、救护车等。 */ /*****************************************************/ void jj() {

N_green=1; //北向绿灯灭 N_red=0; //北向红灯亮 N_yellow=1; //北向黄灯灭

S_green=1; //南向绿灯灭 S_red=0; //南向红灯亮 S_yellow=1; //南向黄灯灭

W_green=1; //西向绿灯灭 W_red=0; //西向红灯亮 W_yellow=1; //西向黄灯灭

E_green=1; //东向绿灯灭 E_red=0; //东向红灯亮 E_yellow=1; //东向黄灯灭 while(1) { if(k2==0) //紧急按键按下 { delayms(3); if(k2==0) { while(!k2); //去除抖动,确认是否紧急按键按下 TR0=1; //启动定时器,以下四句用来判断回到哪个模式的 if(flgaa==0) jtda(); //当flgaa=0时,回到jtda()函数

修德技精 勤思协作


简易交通灯设计论文报告2(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:、为什么说人生价值是社会价值与自我价值的统一

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

马上注册会员

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