单片机——信号交通灯说明书(3)

1970-01-01 08:00

长 春 大 学 课程设计纸

参考文献

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

[1] 李建忠.单片机原理及应用[M].西安电子科技大学出版社,2008 [2] 张毅刚. 单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1999 [3] 徐爱钧.8051单片机实践教程[M].北京电子工业出版社,2005

[4] 楼然苗,李光飞.51系列单片机设计实例[M].北京航空航天大学出版社,2006 [5] 陈小忠,黄宁.单片机接口技术实用子程序[M],北京:北京人民邮电出版社,2005 [6] 全国大学生电子设计竞赛组委会.北京:北京理工大学出版社,2004年8月. [7] 韩全立.赵德申编著.微机控制技术[M].北京:机械工业出版社,2008

[8] 王守中,聂元铭. 51单片机开发入门与典型实例[M].北京:人民邮电出版社,2009

共 17 页 第 8 页

长 春 大 学 课程设计纸

附录

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

附录一:电路总原理图

共 17 页 第 9 页

长 春 大 学 课程设计纸

附录二:源程序代码

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

#include //头文件 #define uchar unsigned char #define uint unsigned int //宏定义

uchar data buf[4]; //秒显示的变量 uchar data sec_dx=20; //东西数默认 uchar data sec_nb=30; //南北默认值 uchar data set_timedx=20; //设置东西方向的时间 uchar data set_timenb=30; //设置南北方向的时间 int n;

uchar data countt0,countt1;//定时器0中断次数 //定义6组开关

sbit k4=P3^7; //切换方向 sbit k1=P3^5; //时间加 sbit k2=P3^6; //时间减 sbit k3=P3^4; //确认 sbit k5=P3^1; //禁止 sbit k6=P1^5; //夜间模式

sbit Red_nb=P2^6; //南北红灯标志 sbit Yellow_nb=P2^5; //南北黄灯标志 sbit Green_nb=P2^4; //南北绿灯标志

sbit Red_dx=P2^3; //东西红灯标志 sbit Yellow_dx=P2^2; //东西黄灯标志 sbit Green_dx=P2^1; //东西绿灯标志 bit set=0; //调时方向切换键标志 =1时,南北,=0时,东西 bit dx_nb=0; //东西南北控制位 bit shanruo=0; //闪烁标志位 bit yejian=0; //夜间黄灯闪烁标志位

uchar code table[11]={ //共阴极字型码 0x3f, //--0 0x06, //--1 0x5b, //--2 0x4f, //--3 0x66, //--4 0x6d, //--5 0x7d, //--6 0x07, //--7 0x7f, //--8 0x6f, //--9 0x00 //--NULL };

共 17 页 第 10 页

长 春 大 学 课程设计纸

//函数的声明部分 void delay(int ms); //延时子程序 void key(); //按键扫描子程序 void key_to1(); //键处理子程序 void key_to2(); void key_to3(); void display(); //显示子程序 void logo(); //开机LOGO void Buzzer(); //主程序 void main() { TMOD=0X11; //定时器设置 TH1=0X3C; TL1=0XB0; TH0=0X3C; //定时器0置初值 0.05S TL0=0XB0; EA=1; //开总中断 ET0=1; //定时器0中断开启 ET1=1; //定时器1中断开启 TR0=1; //启动定时0 TR1=0; //关闭定时1 EX0=1; //开外部中断0 EX1=1; //开外部中断1 logo(); //开机初始化 P2=0Xc3; // 开始默认状态,东西绿灯,南北黄灯 sec_nb=sec_dx+5; //默认南北通行时间比东西多5秒 while(1) //主循环 { key(); //调用按键扫描程序 display(); //调用显示程序 } }

//函数的定义部分

void key(void) //按键扫描子程序 { if(k1!=1) //当K1(时间加)按下时 { display(); //调用显示,用于延时消抖 if(k1!=1) //如果确定按下 { TR0=0; //关定时器 shanruo=0; //闪烁标志位关 P2=0x00; //灭显示 TR1=0; //启动定时1 if(set==0) //设置键按下 set_timedx++; //南北加1S else set_timenb++; //东西加1S if(set_timenb==100) set_timenb=1;

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

共 17 页 第 11 页

长 春 大 学 课程设计纸

}

}

if( set_timedx==100) set_timedx=1; sec_nb=set_timenb ; sec_dx=set_timedx; do { display(); }

while(k1!=1);

//加到100置1

//设置的数值赋给东西南北

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

//调用显示,用于延时

//等待按键释放

if(k2!=1) //当K2(时间减)按键按下时 { display(); //调用显示,用于延时消抖 if(k2!=1) //如果确定按下 { TR0=0; //关定时器0 shanruo=0; //闪烁标志位关 P2=0x00; //灭显示 TR1=0; //关定时器1 if(set==0) set_timedx--; //南北减1S else set_timenb--; //东西减1S if(set_timenb==0) set_timenb=99; if( set_timedx==0 ) set_timedx=99; //减到1重置99 sec_nb=set_timenb ; //设置的数值赋给东西南北 sec_dx=set_timedx; do { display(); //调用显示,用于延时 } while(k2!=1); //等待按键释放 } }

if(k3!=1) { display(); if(k3!=1) { TR0=1; sec_nb=set_timenb; sec_dx=set_timedx; TR1=0; if(set==0) { P2=0X00; Green_dx=1;

//当K3(确认)键按下时 //调用显示,用于延时消抖 //如果确定按下

//启动定时器0 //从中断回复,仍显示设置过的数值 //显示设置过的时间 //关定时器1 //时间倒时到0时 //灭显示 //东西绿灯亮

共 17 页 第 12 页


单片机——信号交通灯说明书(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:驾照考试科目四安全文明驾驶题库集(2013年完整版)

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

马上注册会员

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