单片机课程设计报告范例.doc_第1页
单片机课程设计报告范例.doc_第2页
单片机课程设计报告范例.doc_第3页
单片机课程设计报告范例.doc_第4页
单片机课程设计报告范例.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机课程设计示例交通灯控制系统设计一、 总体设计1、设计要求:交通灯的任务要求为:模拟十字路口的交通灯的亮、灭及闪烁基本工作原理:根据交通灯的亮灭情况,可以分为四种状态,利用定时计数器每20秒产生一次中断,每产生一次中断后由是否有特殊情况决定交通灯的状态变换。2、 硬件和软件功能的划分本课题要求实现的功能比较简单。由单片机的定时/计数器产生八分之一秒的定时时间,通过软件的方式实现20秒的定时时间。交通灯的亮灭由8255A控制,PA口控制东西向,PB口控制南北向。3、 交通灯状态划分十字路口交通灯如下图所示,将12个交通灯进行编号这12个交通灯共有四个状态: 状态1(S1):东西红灯(4、10)亮,南北绿灯(3、9)亮状态2(S2):南北绿灯(3、9)灭,黄灯(2、8)闪烁,东西仍为红灯(4、10)亮状态3(S3):南北红灯(1、7)亮,东西绿灯(6、12)亮状态4(S4):东西绿灯(6、12)灭,黄灯(5、11)闪烁,南北仍为红灯(1、7)亮当东西向(或南北向)有特殊情况,开关K0为低电平则应使交通灯处于S3(东西绿灯、南北),开关K1为低电平则应使交通灯处于S1(南北向绿灯、东西向红灯),当K0、K1均为低电平则取消特殊情况,返回正常显示情况。二、硬件设计根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图。1、 系统扩展最小系统,由8031、地址锁存器和程序存储器组成。根据课题要求,在此基础上进行扩展。地址锁存器选74LS373,程序程序器选2764(8K),尽管本系统程序不长,但考虑以后扩展方便,选用2764。考虑到交通灯数量比较多,控制信号比较多,对单片机的I/O口进行扩展,使用通用I/O接口芯片8255A来对单片机I/O口进行扩展。2、 功能接口所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。本课题只要求显示接口。显示设备为2位七段数码管。要使用七段数码管可以利用8031的串行口、可以利用可编程并行I/O扩展芯片8155或8255。由于仿真系统的限制选用8155。2个共阴极数码管自左至右以两位数的形式显示秒数。为了保证数码管的亮度,必须保证输入电流的大小,因此,选用74LS244作为驱动放大器(实验系统内部已经做好)。3、 系统的组成及统一编址CSIO/M PB7 |PB08155 PA7 |PA0PC5 | PC0AD7 |AD0数码管A12 CE |A8A7 |A0 2764D7 |D0Q7 D7 | |Q0 D0 74LS373 P2.7P1.0 P2.6P2.5 P2.4 |P2.0P0.7 | P0.0 8031蜂鸣器驱动器I/O端口是CPU与I/O设备直接通信的地址。单片机系统对I/O端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。编址技术分线选法和译码法。由于涉及外围芯片很少,所以采用线选法。系统简图如下:由于是线选法,因此芯片地址不是唯一的。而8155与外部数据存储器统一编址,可以与程序程序器重叠编址。因此,我们取它们的地址如下:2764:0000H1FFFH 存储程序8155:命令/状态口 7F80H PA口 7F81H 输出扫描码(字选码) PB口 7F82H 输出字形码 PC口 7F83H 接收回复码 定时器低8位7F84H 没用 定时器高8位7F85H 没用 RAM 3F00H3FFFH没用 工作方式为:定时器不工作,禁止PA、PB中断,PC口为输入方式(方式0),PA口、PB口为输出方式。因此,工作方式字为03H。4、 汇集各芯片及数码管的技术资料,绘制系统原理图。将8031、74LS373、2764、8155、数码管(包括为保证其驱动电流而添加的驱动器74LS244)等资料汇集起来,熟悉各芯片的引脚的功能及连接方法,绘制系统原理图。三、软件设计 1、系统定义1.1、各种数据类型的定义。秒采用采用BCD码,八分之一秒计数采用16进制。1.2、定义和分配存储空间、定义标志位。堆栈区安放在片内RAM的高端60H7FH;0区为工作寄存器;1区为显示程序的工作寄存器;地址为3AH的存储单元内存放LED显示的数据,以压缩BCD码形式存放设计一个标志单元,地址为3CH,用来标示当前交通灯的状态,共四种状态,00H带表状态1,01H代表状态2,02H代表状态3,03代表状态4存储单元列表如下:存储内容变量名地址备注通用工作寄存器R0R700H07H0区显示程序专用的工作寄存器R0R708H0FH1区显示存储区个位LED03AHBCD码十位LED13BHBCD码标志单元3CH16进制数堆栈区60H7FH 位标志在设计过程中,根据需要再添加。 2、 软件结构设计程序总体执行过程是:上电后系统自动进行初始化,定时/计数器开始工作,检测标志单元3CH,根据3CH单元中的内容让交通灯处于对应的状态, 然后调用显示子程序,将3AH和3BH地址内的数据在七段数码管上显示出来。接着循环检测3CH单元中的内容以及特殊情况控制信号和调用显示子程序,让交通灯处于对应的状态,将3AH地址内的数据送七段数码管上显示出来,在整个过程中定时/计数器中断始终打开等待定时/计数器中断。中断服务程序完成状态的变换(3CH的值的改变)以及LED显示内容(3AH)的改变。主程序的框图都如图所示: 3、 模块设计根据主程序框图,定义如下几个模块:初始化模块、状态1显示子程序、状态2显示子程序、状态3显示子程序、状态4显示子程序、出错处理程序、LED显示程序、中断服务程序。由于在程序运行过程中多次出现需要延时的情况,这里将延时程序也作为一个模块。3.1、初始化模块功能:完成变量初始化、8155初始化、定时器初始化和中断初始化。初始化的框图如图所示。根据框图写出如下程序:(注意:后面我们要经常对以下程序进行补充和修改,利用它对其它模块或子程序进行调试。因此,要随时保存不同的版本。为方便起见,以下程序我们称版本1.0)ORG 0000H AJMP START ORG 000BH ;T0中断入口地址 AJMP INT0 ;中断服务程序 ORG 0030HSTART: MOV SP,#60H ;置堆栈顶指针 MOV 3AH,#20H;时间存储区单元初始化 MOV 3CH,#00H MOV R3,00H MOV R2,00H MOV A,#80H ;8255A初始化,置工作方式 MOV DPTR,#0FF2BH MOVX DPTR,A MOV A,#03H ;置8155命令格式MOV DPTR,#0FF20H ;指向命令口MOVX DPTR,A MOV TMOD,#01H ;置T0为定时器,工作方式1 MOV TH0,0BH MOV TL0,0DCH SETB EA ;中断初始化 SETB ET0 SETB TR0 程序中的时间常数是从要求一秒中断一次,但8051单片机的最大定时时间达不到1秒,所以选择1/8秒作为定时时间。DVCC的晶振频率为6MHz,则机器周期为2s。设时间初值为X,工作方式1时定时器为16位,最大计数值为216=65536,则:1/8=(65536-X)210-6解得X=3036D=0BDCH则TH0 =0BH,TL0 =0DCH。3.2状态1显示程序模块功能:交通灯处于状态1状态1(S1)为东西红灯(4、10)亮,南北绿灯(3、9)亮,所以本程序模块即为将3、4、9、10号灯点亮3.2.1、程序由于本模块的程序比较简单,只是简单的将4个高电平打到对应的端口就可以了,所以程序框图略,在这里直接给出程序:DISP1: MOV DPTR,#0FF29H MOV A,#00H MOVX DPTR,A INC DPTR MOV A,00H ;让所有灯熄灭 MOVX DPTR,AMOV DPTR,#0FF29H MOV A,#03H MOVX DPTR,A INC DPTR MOV A,0CH MOVX DPTR,A ;东西红灯亮,南北绿灯亮 RET3.3状态2显示程序状态2(S2)为东西红灯(4、10)亮,南北黄灯黄灯(2、8)闪烁,本程序模块比状态1显示程序稍稍复杂一点,除了要将高电平打入对应的端口外还要控制黄灯的闪烁,黄灯的闪烁采用软件延时的办法实现,即黄灯亮后延时一段时间再灭,然后再延时一段时间再亮。3.3.1程序程序框图如下:程序如下:DISP2: MOV DPTR,#0FF29H MOV A,#00H MOVX DPTR,A INC DPTR MOV A,00H ;让所有灯熄灭 MOVX DPTR,AMOV DPTR,#0FF29H MOV A,#02H MOVX DPTR,A INC DPTR MOV A,8AH MOVX DPTR,A ;东西红灯亮,南北黄灯亮 ACALL DELAY ;延时1秒 MOV A,08H MOVX DPTR,A ;南北黄灯灭 ACALL DELAY ;延时1秒 RET 3.4状态3显示程序及状态4显示程序状态3显示程序与状态1显示程序类似,状态4显示程序与状态2显示程序类似,请同学们参照状态1和状态2显示程序自行完成状态3和状态4显示程序,这里就不详细叙述了。3.5出错处程序出错处理程序指的是状态标志字节中的数据超过了正常范围(00H03H)时的处理程序,正常情况下一般不会出现。当系统出现故障时,出现这种情况应该将所有红灯变亮。其程序与框图与状态1类似。3.6延时程序延时程序用来实现延时1秒的功能,采用软件延时的方式。显然延时程序要用循环结构来实现,由于延时1秒是一个比较长时间的延时所以要采用三重循环来实现。延时程序是一个比较简单的纯粹的循环程序,结构比较简单,框图就省略,这里直接给出程序。3.6.1延时程序 DEALY: MOV R7,#02H LOOP1: MOV R6,#0FFH LOOP2: MOV R5,0FFH LOOP3: NOP DJNZ R5,LOOP3 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET当然,采用软件延时由于存在中断以及其它因素的影响,不可能达到精确的1秒,这里的延时程序大概延时0.9秒,如果需要更加精确请同学们自己调整每层循环的循环次数。在实际的应用过成中由于LED显示的需要,LED显示程序调用的间隔时间不能太长,所以在实际应用中我们常常将上述延时程序改为如下程序: DELAY: MOV R7,#0FFH LOOP1: MOV R6,0FFH LOOP2: ACALL DISP DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET3.7 LED显示程序LED显示程序就是将3AH单元的内容在两个LED显示器上显示出来。由于3AH单元内存储的是压缩BCD码,所以必须在显示前对其进行拆字,即将一个字节压缩BCD码拆成两个单字节BCD码,如图所示:3.7.1拆字程序子程序名:CZ功能:将将3AH单元存储的压缩BCD码拆成单字节BCD码,存储到显示存储区3DH、3EH中。入口条件:3AH出口条件:3DH、3EH程序框图如右:程序清单如下:CZ: MOV R0,#3AH MOV R1,#3DHCZ1: MOV A,R0 ANL A,#0FH MOV R1,A ;存个位 INC R1 MOV A,R0 ANL A,#0F0H SWAP A MOV R1,A ;存十位 RET用下列程序调试:MOV 3AH,#12H ACALL CZ SJMP $单步执行观察3DH、3EH的值是否为02H和01H。调试成功后保存子程序CZ备用。3.7.2、显示子程序显示的原理如下:从最左边数码管开始,由PA口输出字选码(在这里为00100000B,即20H),由8155的PB口输出欲显示的字形码(如字符“0”,共阴极的字形码为“0C0H”),则在最左边的数码管显示字符“0”。然后,由PA口输出字选码(在这里为00010000B,即40H),由8155的PB口输出欲显示的字形码,则在下一个数码管显示相应字符。40H可以由对20H循环移位得到。共循环2次,则2个数码管自左至右顺序显示一次,调整好中间的间隔时间(用延时程序实现),利用人的视觉暂留,得到同时显示的效果。由于字形码无规律可寻,编程不方便,因此,将字形码按0、1、,9,A,F的顺序排列,其它字符如H、_、空字符(熄灭)排在其后,构成字形表。在LED5LED0存放欲显示字符在表中的序号,通过查表程序得到相应的字形码,由PB口输出。如显示“0”时,在LED5中不是字形码为“0C0H”,而是“00H”,因为字形码“0C0H”在字形表中的序号是“0”,16进制表示为“00H”。由此,可绘制程序框图如右图所示。显示子程序名:DISP功能:将3DH3EH中的内容在数码管上显示出来。入口条件:3DH、3EH出口条件:无DISP: SETB RS0 ;置工作寄存器1区 MOV R1,#3EH ;指向3EH MOV R4,#02H ;扫描码00000010B从最左边开始 MOV DPTR,#DTAB;字形码表首地址送DPTR MOV A,R1 MOVC A,A+DPTR ;查表得字形码 MOV DPTR,#0FF22H MOVX DPTR,A ;PB口送字形码 MOV DPTR,#0FF21H MOV A,R4 MOVX DPTR,A ;PA口送扫描码 MOV R5,#30HDISP1: NOPDJNZ R5,DISP2 ;延时 DEC R1 ;指下一显示存储单元 MOV A,R4 ;扫描码循环右移 RR A MOV R4,A CLR RS0 ;返回工作寄存器0区 RET ;返回DTAB: DB 0C0H,0F9H,0A4H,0B0H ;字形码表 DB 99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H DB 8EH,0FFH,0C7H,89H DB 0FFH,0C0H,0C7H,0C7H,86H,89H注意要根据实际情况调整两个LED显示之间的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论