文档详情

河南理工大学微机原理与单片机实验、课程设计交通灯.doc

发布:2018-05-16约4.22千字共7页下载文档
文本预览下载声明
实验四 交通灯实验 一、实验目的 ⑴按键、数码管、发光二极管综合应用编程技术 ⑵数据存储于EEPROM的技术(也可以不使用) ⑶定时中断技术 ⑷按键中断技术 二、实验实现的功能 ⑴通过1、2、3、4号按键对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。 ⑵紧急按键功能,当按下6键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按6键,恢复正常显示。 三、系统硬件设计 四、系统软件设计 #includestc.h bit i=0; unsigned char b; sbit L0=P0^0; sbit L1=P0^1; sbit L2=P0^2; sbit L3=P0^3; sbit L5=P0^5; sbit L6=P0^6; sbit L7=P0^7; void Delay300ms() //300ms延时 { unsigned char i, j, k; i = 13; j = 156; k = 83; do { do { while (--k); } while (--j); } while (--i); } void Delay500us() //500ms延时 { unsigned char i, j; i = 6; j = 93; do { while (--j); } while (--i); } Scan_Key() //按键扫描 { unsigned char FLAG=0; P3=P3|0x80; P3=P30xbf; if(L5==0) {FLAG=1;} if(L6==0) {FLAG=2;} if(L7==0) {FLAG=3;} P3=P3|0x40; P3=P30x7f; if(L5==0) {FLAG=4;} if(L6==0) {FLAG=5;} if(L7==0) {FLAG=6;} return FLAG; } main() { unsigned char a[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; unsigned char b[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char v=9,w=5,y=9,z=5,n,g,x,s,t,m,q; P1M0=0xff; //设置红绿灯时间 P1M1=0x00; P3=0xff; while(1) {n=Scan_Key(); if(n==1) v--; if(n==2) w--; if(n==3) y--; if(n==4) z--; if(n==5) { Delay300ms(); break; } for(g=0;g100;g++) //显示调节时间 { L3=0;L2=1;L1=1;L0=1; P1=a[v]; Delay500us(); P1=0x00; Delay500us(); L3=1;L2=0;L1=1;L0=1; P1=b[w]; Delay500us(); P1=0x00; Delay500us(); L3=1;L2=1;L1=0;L0=1; P1=a[y]; Delay500us(); P1=0x00; Delay500us(); L3=1;L2=1;L1=1;L0=0; P1=b[z]; Delay500us(); P1=0x00; Delay500us(); } } TMOD=0x10; TH1=0xd8; TL1=0xf0; ET1=1; EA=1; TR1=1; n=Scan_Key(); m=0;t=0; for(;n==0;) //无按键按下开始倒计时 { if(m==0t==0) //左侧数码管不起作用,右侧数码管计时 { x=v; s=w; for(;s=0;) { for(;x=0;) {n=Scan_Key(); if(n==6) //6键按下视为紧急情况,红灯亮 wh
显示全部
相似文档