通信应用软件设计之红绿灯设计.docx
- 文档编号:10625901
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:14
- 大小:160.46KB
通信应用软件设计之红绿灯设计.docx
《通信应用软件设计之红绿灯设计.docx》由会员分享,可在线阅读,更多相关《通信应用软件设计之红绿灯设计.docx(14页珍藏版)》请在冰豆网上搜索。
通信应用软件设计之红绿灯设计
《通信应用软件设计》
课程设计报告
题目:
基于MS51单片机的红绿灯的设计
专业:
通信
姓名:
涂俊伟
学号:
30
指导老师:
黄先栋
设计成绩:
完成日期:
2010年12月12日
1设计概述
(要求:
阐释设计的目标,主要功能、主要元器件的选择等设计思路。
10分)
近年来,随着我国国民经济的快速发展,我国机动车辆发展迅速,而城镇道路建设由于历史等各种原因相对滞后,交通拥挤和堵塞现象时常出现。
本设计是由单片机控制的单向红绿灯系统,能满足基本的设计目标,即红灯亮60秒后,黄灯亮4秒,绿灯亮30秒,黄灯亮4秒,红灯亮60秒……就这样循环下去。
本设计的不同之处是,在特殊的情况下,还能对红绿灯进行控制,即通过串口通信,pc即发送字符“g”(g代表green),红绿灯接收后能立马跳到绿灯,比如老人过马路等等情况,这下可方便咯。
当然本设计还有不足,不尽如人意的地方,希望通过今后的学习加以改进。
主要硬件设备:
AT89C51单片机、发光二极管、共阳型LED数码管、连线若干等。
2总体方案(包括系统结构、各功能模块,用框图说明。
10分)
3实现
3.1硬件设计(20分)
1、硬件电路图
2、主要元器件选择
表2-1主要元器件清单
序号
材料名称
规格型号
数量
元器件代号
1
单片机
AT89C52
1
2
发光二极管
3
3
共阳型LED数码管
1
4
无极性电容
2
5
电解电容
1
6
晶振
11.0592MHZ
1
7
COMPIM组件
1
8
虚拟终端
1
9
电阻若干
10
连线若干
3.2软件设计(各模块工作流程图及其说明,)
1、主程序流程图
2、其它部分程序流程图(如显示、中断服务、重要元器件的驱动等函数模块)
3、详细代码设计(源程序,含关键语句备注)
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitshiw=P2^6;
sbitgew=P2^7;
sbitred=P1^0;
sbitgreen=P1^2;
sbityellow=P1^1;
ucharcodedigit[11]={0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0xff};//共阳管编码
ucharnum,second=40,turned,shi,ge;//定义计数变量和显示变量
voiddelayms(uintxms)//延时子函数
{
uinti,j;
for(i=xms;i>0;i--)
for(j=123;j>0;j--);
}
voiddisplay()//显示子函数
{
P2=0x00;//消隐(实验板为0xff)
P0=digit[shi];
shiw=1;//(实验板为0)
delayms(5);
P2=0x00;//消隐
P0=digit[ge];
gew=1;
delayms(5);
}
voidmain()
{red=0;//开始时就使红灯先亮
IP=0x10;//串口中断优先级最高
SCON=0x50;//串口工作在方式1,允许接受
TMOD=0x21;//T1工作在模式2,T0工作在模式1
PCON=0x00;//波特率不倍增
TH1=0xFD;//波特率9600B
TL1=0xFD;
TI=RI=0;//发送/接收中断标志复位
IE=0x90;//开串口中断
TR1=1;//启动定时器1
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;//开总中断
ET0=1;//开定时器1中断
TR0=1;//启动定时器0中断
while
(1)
{
display();
}
}
voidT0_time()interrupt1//中断服务程序
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
if(second==0)
{
if(!
red)
{red=1;yellow=0;second=4;}//红灯亮60秒后,黄灯亮
elseif(!
yellow&&!
turned)
{yellow=1;green=0;second=30;}//黄灯亮4秒后,绿灯亮
elseif(!
green)
{yellow=0;green=1;second=4;turned=1;}//绿灯亮30秒后,黄灯亮
elseif(!
yellow&&turned)
{red=0;yellow=1;second=40;turned=0;}//黄灯亮4秒后,红灯亮
}
ge=second%10;
shi=second/10;
second--;
}
}
voidSeiral_TNT()interrupt4//串口中断服务程序
{
if(RI)//判断一帧信息是否接受完
{
delayms(10);
RI=0;//复位中断接受标志位
if(SBUF=='g'){red=1;yellow=1;green=0;second=25;}
}
//如果收到“g”,其他灯灭,绿灯开启
}
4调试及仿真结果分析
调试主要是软件调试:
软件调试:
软件部分是先参考书上的例子,然后自己根据硬件电路写程序,由于以前所学是C语言,所以这个系统在编写程序过程中都采用C语言编写。
刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。
但是,在实际写如S51中,串口通信不能正常运行,或串口可以运行了红绿灯却不行了。
通过再次认真仔细分析多次修改程序后,程序能够正常运行。
5总结(完成情况、收获体会)
1.1工作过程介绍
本文设计的一个可控制的红绿灯,能够正常发挥真正交通灯的作用。
本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。
总结本文的研究工作,主要做了下面几点较突出的工作:
一、通过查阅大量的相关资料,了解单片机的基本构造,可以说是通过这个设计让我单片机入了门了,了解了串口通信原理,数码管显示原理,以及中断原理。
二,本文设计红绿灯,基本达到了一个红绿灯所要求的功能。
三,文章给出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体C程序设计与调试等方面。
四,在这次毕业设计的过程中学会了Protues7的基本使用,感到Protues7对通信专业的同学来说是一门很有用的课程。
五,通过这次毕业设计,重新复习并进一步学习了MCS-51;熟练掌握了keil软件的使用。
1.2
我的感言
学习是一门学问,重要的是学习方法,好多同学觉得单片机难而不像学,我就想,航天飞机也是人造的,那他们怎么不觉得难呢。
许多东西只要你硬下头皮去入门,下面的路就好走多了。
一、大学,师傅领进门修行在个人,关键是自学,老师上课听不懂没事,下课要自己去思考。
二、我个人认为学习的三个要素:
怎么学习!
!
!
!
!
!
!
1学习要带着目的去学
2学习最重要是学以致用
3学习的东西最好是感兴趣的东西
把握这3句话,和一个字“悟”,就可以了......
三、对于单片机的学习我也有感悟,那是《拿来就用单片机》里作者的话,我摘录如下:
很多资料在谈到单片机及其语言的时候总是大篇幅的介绍那些硬件和软件,似乎把这些硬件和软件背下来就能搞好单片机了。
依据我个人的经验和对别人经验的总结,我认为事实并不是这样的。
其实我们能够查到很多那些硬件和软件的资料,根本不用特别的记忆,在我们需要的时候能够查阅到就可以了,我们对有关资料的记忆应该是在工作实践中自然的形成,而我们要学习掌握的应该是分析问题、解决问题的方法!
主要参考文献:
[1]黄先栋、阴法明编著《通信应用软件设计(下)》
[2]郭慧、吴迅《单片机c语言程序设计》电子工业出版社
[3]韩成张延伟《拿来就用单片机》人民邮电出版社
课程设计评分表
提纲(分值)
评分
备注
1设计概述(10)
2总体方案(10)
3实现
(70)
3.1硬件设计(20)
3.2软件设计(50)
主程序流程图(20)
各模块流程图(10)
详细代码设计(20)
4调试及仿真结果分析(10)
总评
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 应用 软件设计 红绿灯 设计