单片机课程设计.docx
- 文档编号:8733207
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:14
- 大小:258.35KB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
单片机课程设计
单片机课程设计
钦州 学 院
单片机课程设计报告
基于多任务实时操作系统RTX51的交通灯系统
院系物理与电子工程学院
专业电子信息工程
学生班级2010级2班
指导教师单位物理与材料科学学院
指导教师姓名包敬海
指导教师职称副教授
2013年10月
前言
随着科学技术的快速发展,人们对各类传统产品都有了越来越高的要求。
其中,传统的电子系统,例如常见的单片机控制系统,主要采用单机工作方式或者简单的C/S模式。
这种工作方式在网络化快速普及的新形势下,其网络性能不强、灵活性不高、难以满足远程控制和管理的需求等诸多弱点越来越明显。
要使得传统单片机控制系统实现网络化,将上位机的Web服务器与下位机单片机融合是一个比较理想的解决方法。
目前,网络技术已经广泛应用于各类企业和工业系统,越来越多的信息化产品需要能够接入互联网并且能够通过Web页面进行远程访问和控制[1]。
Web具有操作简便、交互界面良好等优点,而单片机系统具有底层控制简单、强大的特点,使得Web和单片机系统的结合成为今后工业生产监测与处理的新趋势。
单片机技术与网络技术的融合,为现场检测与控制设备的智能化、微型化奠定了良好的技术基础,使数据采集系统迅速得到广泛应用,它渗透到地质、医疗、农业生产、通讯等各个领域,为获取数据提供了良好的基础。
根据该思路,设计了一个基于Web的温度测控系统。
该系统分为上位机(计算机)和下位机(单片机)两部分。
其中,下位机以STC89C52单片机为主控制器,将从温度传感器DS18B20采集到的数据发送给上位机。
上位机利用VC++编写的管理程序接收温度数据,并插入到MySQL。
由于上位机通过Apache构建了一个基于PHP的Web服务器,使得用户可以在任何一个能连接到该网络的地方,都能便捷的访问该服务器并获取当前的数据。
同时,用户还能通过控制页面对下位机进行控制。
1基于多任务实时操作系统RTX51的交通灯系统
1.1设计思想
设计方案
交通信号灯控制系统主要实现以下三个功能:
(1)信号灯指示,即完成十字路口红、黄、绿交通信号灯的控制。
(2)时间显示,各个信号灯持续的时间显示。
(3)紧急情况响应,当系统出现故障或者有紧急情况是能够及时响应。
根据以上功能要求,完整的交通灯控制系统硬件电路如图l所示,主要由三部分模块组成:
单片机最小系统模块、红绿色显示模块、倒计时显示模块、紧急中断模块。
(4)单片机最小系统:
包括时钟电路和开关复位电路。
单片机选用具有成本低廉且具有串口ISP下载功能的STC89C52单片机,晶振选用12MHz。
(5)信号灯指示电路:
东西南北四个方向分别有红、绿、黄三个状态指示的灯,其中南北方向的红绿黄发光二极管分别连接到P1.O~P1.2,东西方向的红绿黄发光二极管分别连接到P1.3~P1.5。
(6)倒计时显示:
每个交通灯状态倒计时时间由两位共阳数码管显示,八位段码分别连接到P0.0~P2.7,两位位选通过反向器分别连接到P3.4、P3.5。
(7)紧急中断:
开关K1为紧急中断开关,当有特殊情况时按下K1,K1连接到单片机P3.2外部中断O输入端。
‘
1.1.2设计所需元件
1.2设计原理
一个高效的单片机智能控制系统,不仅要求系统能够同时执行多个任务,对每个任务作出实时响应,而且要求系统能够及时响应随机发生的外部事件,并对其作出快速处理。
对于这样的系统应用,采用实时操作系统RTOS(Real-time-OperatingSystem)作为系统软件设计平台是一个良好的选择,它可以灵活地安排系统资源,简化复杂的软件设计,加快软件的开发效率,大大缩短了项目的开发周期。
道路交通灯是最常见的一种多任务控制系统,本文以此为倒,详细阐述了51嵌入式实时操作系统RTX51开发软件的方法和步骤。
设计原理图
1.2.1
基于RTX51的软件设计
2RTX51介绍
RTX51有2个模式:
RTX51完全模式和最小模式。
RTX51最小模式版是RTX51完全版的一个子集,可以很容易地运行在8051系统上,而不需要外部RAM(XDATA)。
RTX51完全模式有4个任务优先级,可以和中断函数并行处理,各个任务之间通过使用“邮箱”系统来进行信号和消息的传递,可以从内存池中申请和释放内存;同时,可以强制一个任务停止执行,等待一个中断,或者是其它中断传来的信号量或者消息。
RTX51对系统硬件的要求如表1所列。
描述
RTX51完全模式
RTX51最小模式
任务数
最大256,19个激活任务,其中16个标准任务,3个快速任务
16
RAM
40~46字节RAM
20~200字节IDATA
最少450字节XDATA
7字节DATA
3*任务数IDATA
不需要XDATA
ROM
6KB~8KB
900字节
定时器
定时器0或1
定时器0
表1
2.1RTX51任务
RTX51区分2类任务:
快速任务和标准任务。
快速任务有很快的响应速度,每个快速任务使用8051一个单独的寄存器组,并且有自己的堆栈区域。
RTX51支持最大同时有3个快速任务。
标准任务需要多一点的时间来进行任务切换,因此使用的内部RAM相对快速任务要少,所有的标准任务共用1个寄存器组和堆栈。
当任务切换的时候,当前任务的寄存器状态和堆栈内容转移到外部存储器中。
RTX51支持最大16个标准任务。
RTX51任务状态:
(1)运行(RUNNING)-当前正在运行的任务处于RUNNING状态,同一时间只有1个任务可以运行。
(2)就绪(READY)-等待运行的任务处于READY状态,在当前运行的任务退出运行状态后,就绪队列中优先级最高的任务进入到运行状态。
(3)阻塞(BLOCKED)-等待一个事件的任务处于BLOCKED状态,如果事件发生且优先级比正在运行的任务高,此任务进入运行状态;如果优先级比正在运行的任务低,此任务进入READY状态。
(4)删除(DELETED)-没有开始的任务处于删除状态。
(5)任务切换-RTX51包含一个事件驱动的任务切换机制,它能够按照任务的优先级进行切换,也就是抢占式多任务系统;另外还有一个可选的时间片轮转切换任务模式,在时间片轮转模式下,同级别的任务是按照时间片分别占用CPU的。
RTX51任务有4个优先级:
0、1、2 可以分配给标准任务,优先级3是为快速任务保留的。
每个任务都可以等待事件的发生,而并不增加系统的负担;任务可以等待消息、信号、 中断、超时事件或者它们的组合。
任务切换是按照一定规则进行的,包括:
进入到“就绪”状态的优先级高的任务先执行;如果“就绪” 状态的几个任务是同一个优先级,那么最先进入“就绪”状态的先执行。
3应用实例
以下给出RTX51在单片机控制的GPS接收板上的应用。
(1)系统硬件组成
单片机W77E58、快速8051内核、32KBROM、1KB的XDATARAM,符合使用RTX51的硬件要求;键盘、GPS定位模块、液晶显示模块。
(2)系统软件构成
软件运行环境KEILuVision26.20集成开发环境加上RTX51完全版。
任务KEY-BOARD,监测键盘的情况,如果有按键按下,把按键的编码发送到邮箱1,外部中断1等待接收GPS数据,并把数据存储起来,向DISPLAY任务发出信号,进行处理。
任务SEND_OUT,把接收到的数据 进行处理,并发送出去。
任务VOICE进行语音输出。
下面给出简写的源程序:
#include
#defineDISPLAY0
#defineSEND_OUT1
#defineKEY_BOARD2
#defineVOICE3
voidmain(void)
{ initsystem(); //系统初始化
osstartsystem(DISPLAY); //启动RTX51
}
viodtask0(void)_taskDISPLAY
{ ossetslice(1000); //设置时间片大小
osenableisr(0); //允许外部中断0
oscreattask(SEND_OUT); //启动SEND_OUT任务
oscreattask(KEY_BOARD); //启动KEY_BOARD任务
oscreattask(VOICE); //启动VOICE任务
for(;;){
switch(oswait(K_SIG+K_MBX+1255,&keyboard))//等待接收信号和键盘消息,分类处理
{caseEVENT_SIGNAL; //当接收到信号的时候
display1();break;
caseEVENT_MBOX:
//当从邮箱接收到数据的时候
switch(keyboard)
{ case'1':
...
ossendsignal(SEND_OUT); //向任务SEND_OUT发送信号
...
ossendsignal(VOICE);} //向任务VOICE发送信号
...;}
...;}
}
voidtask1(void)_taskSEND_OUT //处理发送数据任务
{while
(1)
{ oswait(K_SIG,255,0) //等待信号
operationsend();
}
voidtask3(void)_taskVOICE
{while
(1){
oswaitsignal(K_SIG,255,0); //等待语音处理信号
voice();}
}
voidinterrupt1(void)interrupt2using1
{ readgpsdata(pgps_data); //接收数据
isrsendsignal(DISPLAY); //向DISPLAY任务发信号
}
#pragmaREGISTERBANK
(2) //使用寄存器组2
voidtask2(void)_task_KEYBOARD_priority_3 //设置为快速任务
{ osattachinterrupt(0); //绑定任务和外部中断0
while
(1){
os_wait(K_INT,255,0); //等待中断的发生
KEY=iicread_keyboard();
ossendmessage(1,KEY,0);} //将键盘编码发送到邮箱1
}
近年来,利用嵌入式实时操作系统来开发嵌入式系统的软件已是大势所趋。
这是因为传统的这类设计中,大多采用了中断结合单任务的顺序机制进行,这种设计方法虽然比较直观,但是也带来了诸如稳定性差、不便于调试等问题。
尤其是当系统比较复杂、实时性要求比较高时,这种单任务机制的缺陷更为明显。
利用嵌入式实时操作系统,程序开发者可以将复杂的系统分成多个相对独立的任务,从而分而治之,降低了系统的复杂性;通过对不同的任务赋以不同的优先级,从而能够保证系统的实时性;同时,由于软件系统有多个任务组成,所以其模块化程度好。
提高了系统的可维护性。
因此,这里利用实时操作系统RTX51来进行软件系统的设计。
TX51实时操作系统介绍
RTX51是美国Keil公司开发的一种运行于8051单片机环境中的实时多任务操作系统(RTOS),其常用于处理复杂的多任务控制系统。
8051单片机支持典型的RTX-51Tiny和RTX-51Full实时多任务操作系统。
在KeilμVison3集成开发环境中提供了RTX-51实时操作系统的编译和仿真调试支持。
在多任务嵌入式系统中,合理的任务调度必不可少。
单纯通过提高处理器速度无法达到目的,这样就要求嵌入式系统的软件必须具有多任务调度能力。
在微控制器应用系统中通常可以分解为多个相互独立的功能模块,在RTX51嵌入式实时操作系统中将这些模块划分为任务,引入多任务机制管理。
依据系统功能优先级分配不同的任务,多个任务分别在各自的时间片内访问CPU,从而产生了微观上轮流运行、宏观上并行运行的多任务效果,保证了对外界的信息足够快的速度进行响应处理,又能并行运行多个任务,因此能很好完成对多个信息的实时测量、处理并进行响应的多个实时控制。
2.2任务分配
在本系统中,依据交通灯控制系统功能的分析,将整个软件系统分解为以下三个任务,系统初始化、红绿黄灯显示、倒计时显示。
具体情况如下:
任务0:
用于系统初始化,开外部中断0;启动任务1和任务2。
任务1:
红绿黄信号指示灯控制,实现红绿黄灯的五种状态控制。
状态0:
东西方向红灯亮,同时南北方向绿灯亮,亮的时间为30S;状态1:
东西方向红灯亮,南北方向黄灯闪烁,时间为3S;状态2:
东西方向绿灯亮,同时南北方向红灯亮,时间为30S;状态3:
东西方向黄灯闪烁,南北方向红灯亮,时间为3S;状态4:
当紧急开关按下时,响应紧急状况或者故障状态,东西南北四个方向红灯均亮,时间为10S。
任务2:
各个状态指示灯倒计时显示。
两个数码管采用动态扫描显示,实时显示当前交通指示灯状态的倒计时时间。
1.2.2时间显示部分
7.定时/计数器
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
2.2系统方框图
2.3工作原理
由软件设置交通灯的初始时间,南北方向通行30秒,东西方向通行20秒,数码管采用动态显示,P0口送字形码,P2口送字位选通信号,通过单片机的P1口控制各种信号灯的燃亮与熄灭。
采用中断方式实现按键的功能。
1.2.3程序设计部分
依据任务分配,将三个任务分别规划为_task_0,_task_1,_task_2,由于完整的程序较大,这里不便给出,只给出部分代码,如下所示。
电路仿真
2.交通灯南北方向绿灯向红灯转变,黄灯闪烁时仿真图(见图-8)。
4.2仿真结果分析
仿真实验实现南北方向车道和东西方向车道两条交叉道路的车辆交替运行,南北方向(主干道)每次通行时间设为30秒、东西方向通行时间设为20秒,时间可以在程序中修改。
同时能够实现红灯、黄灯、绿灯状态转换,红绿灯转换时间为5秒,转黄期间黄灯亮。
可以准确显示每个状态所剩余的时间,按下禁行普通车辆键,东西南北方向都亮红灯;按下南北放行键,南北绿灯亮,东西红灯亮;按下东西放行键,东西绿灯亮,南北红灯亮;任何时候按下返回键,此系统都将回到初始状态,当紧急状况出现时,按下紧急开关,可实现主干道和支干道全部禁止通行,允许紧急车辆安全通行,实现了课程设计的要求。
3电路连接测试
3.1安装焊接调试
在计算机上使用protues,选好要使用的元器件,并绘制成电路图,完成后就把领回来的元器件按照电路图把元器件安装在万用板上,然后就进行焊接。
焊接的时候一定要注意,不能出现短路和虚焊。
焊接完成后还要再认真的检查一遍,确认没有问题后就可以进行调试。
下面图就是我们设计完成的多路数字电压表在调试过程的照片。
实物正面图
实物反面图
4设计体会
本次基于多任务实时操作系统RTX51的交通灯系统由吕凯强同学和凌嘉丽同学合作完成,焊接电路板的部分由吕凯强同学负责,可以说能够的到预期的实验效果,这块电路板的焊接部分尤为重要。
遇到不懂得地方我都会找他商量,与他探讨。
当然最主要的是有包敬海的指导,不然我们的作品没办法完成。
通过这次单片机课程设计,对于我来说,最重要的一点就是加深了我对单片机理论知识的理解。
让理论知识与实践可以结合起来,更有助于我学习单片机。
因为理论知识往往的比较抽象的,很多时候都是难以理解的,但是通过这样一个实践,在做多路数字电压表这门单片机课程设计时,很多以前不怎么理解的理论知识都可以得到理解了,并且印象还会比较深。
这样的一次实践,不仅提高了我们的动手能力,独立分析问题、解决问题能力,还让我们的创新思维得到了很好的发挥。
其实在设计过程中,我们也会遇到一些问题。
比如调试不出想要的效果。
焊锡过程中由于元器件安装不对导致焊过再焊。
同时遇到不同的设计方案我们两犹豫不决的时候就会很努力地翻阅资料去图书馆找到相关材料然后一起探讨。
从这次设计中得到:
1.有一个总的思路是完成一部作品的核心部分,必须要整体规划,分步的,有计划的完成。
2.通过电路的设计、安装、调试、整理资料等环节,初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法;
3.了解它的工作原理,一次次地完成自己设定的参数是设计中不可缺少的部分。
4.我们是以两人为单位的小组,明确的分工是很有必要的。
遇但是到困难时团结互助才是最重要的。
5.焊接电路板需要一个人要有耐心,细心,并且能够及时发现问题。
每个元器件有它特定的位置,有它应该发挥的功能,所以要认识它,弄懂它的功能。
同时对待焊锡也要很仔细。
在此再次感谢老师在这次课程设计中对我的指导,没有老师的帮助和指导我们是不能顺利完成这次课程设计任务的。
参考文献
[1]陈海宴.51单片机原理及应用[M].北京:
北京航空航天大学出版社,2010.
[2]侯玉宝.基于protues的51系列单片机设计与仿真[M].北京:
电子工业出版社,2008.
[3]谭浩强.C语言设计[M].北京:
清华大学出版社,2008.
[4]朱清慧.protues教程——电子线路设计、制作与仿真[M].北京:
清华大学出版社,2008.
[5]郭天祥.新概念51单片机C语言教程[M].北京:
电子工业出版社,2009.
[6]余发山王福忠单片机原理及应用技术[M].徐州:
中国矿业大学出版社2008.
[7]吴黎明单片机原理及应用技术[M].北京:
科学出版社2003.
[8]刘乐善微型计算机接口技术及应用[M].北京:
华中科技大学出版社2004.
[9]吴黎明,王桂棠,洪添胜,等.单片机原理及应用技术[M].北京:
科学出版社,2005.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计