计算机控制技术课程设计doc资料文档格式.docx
《计算机控制技术课程设计doc资料文档格式.docx》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计doc资料文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
4)在修改参数过程中各个方向都黄灯闪亮,指示车辆减速慢行。
5)提供具体的修改参数方法,便于用户操作。
6)为简化设计,不考虑行人通道。
2.3控制方案
1)本例中用通用的LED数码管作为时间显示器件,LED二极管作为交通控制的指示灯(实际交通灯中都是高亮度的二极管点阵构成,和本例的区别仅是驱动电路,控制的过程是一致的)。
共需要8个数码管、12个二极管(红、黄、绿各4个)。
2)现场修改参数系统必须设计键盘,本例设计有4个按钮组成的独立式键盘,采用中断控制扫描方式,定义键的功能如下:
第一个键:
从指挥交通状态进入参数修改状态,并调出系统原来的参数,前面两个数码管显示南北方向红灯时间,后两个显示南北方向绿灯时间(东西方向可以根据切换规则计算出来,修改参数只需要改变某一个方向的参数),以备修改,修改时有一个数码管闪烁,表示该位显示的数可以修改。
第二个键:
(在指挥交通状态该键不起作用,后面两个键也只这样)加一键,使闪烁的数码管加1,并在0~9之间变化。
第三个键:
移位键,使4个数码管杉树状态依次循环切换,和第二个键配合可以修改四个数码管上的数据,达到修改参数的目的。
第四个键:
运行键,保存设置的参数,并按照修改的参数进入指挥交通状态
3)考虑到现场可能停电,为防止片外的数据存储器来保存参数,数据量不是很多,也不经常变动,采用ATMEL公司的AT24C02。
图2.3交通灯控制系统结构框图
3设计内容
3.1硬件设计
3.1.1单片机最小硬件电路
单片机最小硬件电路组成简述:
要使单片机工作起来,最基本的电路的构成为本系统采用AT89S51单片机,程序量不大,使用内部的存储器。
电源电路:
向单片机供电。
时钟电路:
单片机工作的时间基准,决定单片机工作速度。
复位电路:
确定单片机工作的起始状态,完成单片机的启动过程。
图3.1单片机最小硬件电路
1、电源
AT89S51单片机的工作电压范围:
4.0V—5.5V,所以通常给单片机外接5V直流电源。
连接方式如图
图3.2电源图
2、时钟电路:
时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。
AT89S51单片机时钟频率范围:
0—33MHz。
3.3时钟电路连接方式
图中的电容C1和C2起稳定作用。
3、复位电路
复位电路产生复位信号,使单片机从固定的起始状态开始工作,完成单片机的“启机”过程。
AT89S51单片机复位信号是高电平有效,通过RST/VPD(9脚)输入。
复位电路连接方式有两种。
(1)上电复位
单片机接通电源时产生复位信号,完成单片机启动,确定单片机起始工作状态。
(2)手动复位
手动按键产生复位信号,完成单片机启动,确定单片机的初始状态。
通常在单片机工作出现混乱或“死机”时,使用手动复位可实现单片机“重启”。
(3)混合复位电路
将上电复位电路和手动复位电路结合到一起构成,通常使用的都是这种混合复位电路。
4、最小硬件系统电路图
图3.4最小硬件系统电路图
3.1.2芯片介绍
1、AT89S51芯片的介绍
EA/VP(31脚)接+5V。
单片机的P0、P1、P2、P3四个端口用于输入/输出数字电信号。
(1)电源引脚:
连接电源
Vcc(40脚):
电源正极Vss(20脚):
电源负极
(2)时钟引脚:
连接时钟电路
XTAL1(19脚):
输入引脚XTAL2(18脚):
输出引脚
(3)复位引脚:
连接复位电路
RST/VPD(9脚):
复位引脚
(4)控制引脚:
辅助控制作用
PSEN(29脚)ALE/PROG(30脚)EA/VPP(31脚):
接高电平
(5)I/O端口引脚:
用来连接单片机和外部设备,实现数据的输入/输出。
P0.0—P0.7(39脚—32脚):
P0端口
P1.0—P1.7(1脚—8脚):
P1端口
P2.0—P2.7(21脚—28脚):
P2端口P3.0—P3.7(10脚—17脚):
P3端口
图3.5AT89S51引脚图
2、8155芯片简介
8155可编程并行接口芯片有三个输入输出端口,即PA口、PB口和PC口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。
其内部还有一个控制寄存器,即控制口。
通常PA口、PB口作为输入输出的数据端口。
PC口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。
它们分别与端口PA/PB配合使用,可以用作控制信号输出或作为状态信号输入。
8155可编程并行接口芯片工作方式:
方式0:
基本输入/输出方式。
适用于三个端口中的任何一个。
每一个端口都可以用作输入或输出。
输出可被锁存,输入不能锁存。
方式1:
选通输入/输出方式。
这时PA或PB口的8位外设线用作输入或输出,PC口的4条线中三条用作数据传输的联络信号和中断请求信号。
方式2:
双向总线方式。
只有PA口具备双向总线方式,8位外设线用作输入或输出,此时PC口的5条线用作通讯联络信号和中断请求信号
3.1.3数码管显示电路
采用共阳型数码管,6个LED灯如图中接法,灯的负载依次接到数码挂的a-f段,采用动态扫描电路,并把显示程序作为主程序。
数码管的段用P0口控制,P2.0-P2.3作为数码管的控制,p2.4作为指示灯的控制。
图3-8共阳图3-6管脚图 图3-7共阴
LED数码管的管脚配置如图3-1所示。
LED数码管有共阴极和共阳极两类。
共阴极LED数码管的发光二极管的阴极共地,如图3-2(a),当某个发光二极管的阳极电压为高电平时,二极管发光;
而共阳极LED数码管是发光二极管的阳极共接,如图3-2(b),当某个二极管的阴极电压为低电平时,二极管发光。
图3.9显示电路
3.1.4键盘接口电路
图3.10键盘接口电路如图
P1.0-P1.3作为接键的输入信号,采用中断控制草庙方式,采用简单的二极管与门电路,与门输出接到外部中断0,外中断设置成边沿触发方式。
任意键按下时都会在P3.2引脚产生下降沿,从而触发中断,在中断服务程序中检测P1.0-P1.3引脚,判断是哪个键按下,执行该键按下,执行该键功能。
3.1.5存储器电路
AT24WC02是一个2K位串行CMOSE2PROM内部含有256个8位字节缓冲器AT24WC02有一个16字节页写缓冲器该器件通过I2C总线接口进行操作有一个专门的写保护功能。
芯片引脚地址全部接地,用P2.6作为串行的数据线SDA,P2.7作为串行的时钟线SCL。
图3.11存储器芯片引脚
图3.12存储器接口电路
3.2软件设计
3.2.1总体设计
程序模块包括:
主程序(系统初始化、显示程序)、外中断服务程序(按键处理)、定时器服务程序(倒计时处理)、AT24C02操作程序等。
主程序的框图如图所示。
图3.13主程序结构框图
主程序包括对定时/计数器、外部中断的初始化,读出系统运行参数,将交通灯时间参数送对应的显示缓冲区,然后反复调用显示子程序。
并在现实过程中等待见哦按中断处理键盘功能,等待定时器中断改变数码管显示指挥交通。
系统用两个定时器,一个用交通灯的计时处理,一个用来控制数码管的闪烁显示,结合显示程序进行综合设计。
其他与实践有关的处理程序也用该定时器实现,进行多延时程序设计。
3.2.2主程序设计
定时器设置,交通灯控制需要产生秒信号,定时器一半不能直接产生,如系统晶振才哟个6MHz,系统的机器中期是2um,最大定时约131ms,可以将定时器设置为反复定时125ms,数中断的次数,没=每8次就是1s。
闪烁显示定时的时间也可设置为125ms,1s亮灭几次可以看出闪烁效果。
两个定时器都设置为方式1定时,初值为:
216-125*1000/2=0BDCH
主程序如下;
ORG0000H
LJMPSETUP;
程序开头,跳过入口地址区
ORG0003H;
外中断0入口地址
LJMPINEX0P;
转移到键盘处理程序
ORG000BH;
T0入口地址
LJMPINET0P;
交通控制时间处理程序
ORG001BH;
T1入口地址
LJMPINET1P;
闪烁控制等处理程序
ORG0030H
SETUP:
MOVSP,#30H;
设置堆栈指针
MOVTMOD,#11H;
T0、T1方式1定时
MOVTH0,#0BH;
MOVTL0,#0DCH;
125ms初值
MOVTH1,#0BH;
MOVTL1,#0DCH;
SETBTR0;
T0启动运行
SETBTR1;
T1启动运行
SETBET0;
开通T0中断
SETBET1;
开通T1中断
SETBIT0;
外中断0下降沿触发
SETBEX0;
开通外中断
SETBEA;
开通总允许位
LCALLSTATUS;
调系统初始状态设置子程序
LCALLRCS;
调用读系统参数子程序
MAIN:
MOV0A6H,#1EH;
前两句,第一次执行启动看门狗
MOV0A6H,#0E1H;
以后再执行到时喂狗指令
LCALLDIS;
调显子示程序
SJMPMAIN;
主程序
读系统初始状态设置子程序时对系统初始运行需要的信息(如显示程序中的标志位等)进行设置。
3.3.3显示及闪烁程序设计
图3.14为显示程序分配的RAM资源
数码管显示控制的原理:
在显示程序中判断该数码管的亮灭标志决定是否跳过位开通指令,从而达到控制数码管亮和灭的控制,在定时器程序中判断该位的闪烁标志,决定是否对该数码管亮灭标志位的求反操作,实现数码管的闪烁控制。
以后只要对闪烁标志设置就可控制数码管的闪烁。
控制的方法是判断闪烁标志位,通过对显示缓冲区内容的改变(该位亮或灭信息),达到闪烁的效果。
(1)显示子程序
亮灭标志位:
0-亮,1-灭闪烁标准化:
0-不闪,1-闪烁
DIS:
显示子程序
MOVDPTR,#TAB;
表格首地址送DPTR
MOVA,70H;
显示缓冲区送A
MOVCA,@A+DPTR;
查表求出字段码
MOVP0,A;
字段码送段输出口
JB50H,MIEO;
判亮灭标志,1转移
CLRP2.0;
开通位,0不转移亮
MIEO:
LCALLDEL;
调延时
SETBP2.0;
关断位,第1个显示完
MOVA,71H;
第2位数码管
JB51H,MIE1;
CLRP2.1,开通位,0不转移亮
MIE1:
SETBP2.1;
关断位,第2个显示完
MOVA,72H;
第3位数码管
JB52H,MIE2;
CLRP2.2;
MIE2:
SETBP2.2;
关断位,第3个显示完
MOVA,73H;
第4位数码管
MOVP3,A;
JB53H,MIE3;
CLRP2.3;
MIE3:
SETBP2.3;
关断位,第4个显示完
MOVA,74H;
第5位数码管
MOVP4,A;
JB50H,MIE4;
CLRP2.4;
MIE4:
SETBP2.4;
关断位,第5个显示完
MOVA,75H;
第6位数码管
MOVP5,A;
JB55H,MIE5;
CLRP2.5;
MIE5:
SETBP2.5;
关断位,第6个显示完
MOVA,76H;
第7位数码管
MOVP6,A;
JB56H,MIE6;
CLRP2.6;
MIE6:
SETBP2.6;
关断位,第7个显示完
MOVA,77H;
第8个数码管
MOVCA,@A+DPTR
MOVP7,A
JNB57H,MIE7
CLRP2.7
MIE7:
LCALLDEL
SETBP2.7
MOVP0,78H;
送交通状态灯信息,不需查表
CLRP3.0
SETBP3.0
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H
DB0F8H,80H,90H
DEL:
MOVR7,#0;
延时子程序
DJNZR7,$
END
(2)定时器服务程序
INETIP;
T1服务程序
MOVTH1,#0BH;
从装初值
MOVTL1,#0DCH;
125ms初值
JNB58H,SHAN0;
判第1数码管闪烁标志,0转移
CPL50H;
1不转移,亮灭标志取反
SHAN0:
JNB59H,SHAN1;
判第2数码管闪烁标志,0转移
CPL51H
SHAN1:
JNB60H,SHAN2;
判第3数码管闪烁标志,0转移
CPL52H
SHAN2:
JNB61H,SHAN3;
判第4数码管闪烁标志,0转移
CPL53H
SHAN3:
JNB62H,SHAN4;
判第5数码管闪烁标志,0转移
CPL54H
SHAN4:
JNB63H,SHAN4;
判第6数码管闪烁标志,0转移
CPL55H
JNB64H,SHAN5;
判第7数码管闪烁标志,0转移
CPL56H
SHAN5:
JNB65H,SHAN6;
判第8数码管闪烁标志,0转移
CPL57H
SHAN6:
JNB66H,SHAN7
RETI
其他功能程序如键盘操作只要对闪烁的标志位进行操作,就可控制相应的数码管闪烁,但要注意在有闪烁到不闪烁的控制中,应同时数码管亮灭的标志。
因为有可能时在闪烁过程中灭的阶段停止闪烁,亮灭的标志被置为灭的状态,数码管熄灭。
3.3.4交通控制时间处理程序
1)软件设计基础思想:
由定时器产生0.05s定时,软件计数得到秒信号,设30s计数器,30s计数器计满,绿灯灭、黄灯闪烁5次,黄灯灭、红灯亮;
同时,另两路口红灯灭、绿灯亮。
2)定时器T0工作方式1,产生0.05s定时。
P0口及P2口的低4位输出控制信号。
30s计数器的地址为40H。
图3.15控制引脚与灯的对应关系
图3.16流程图
程序如下:
BRDEQUPA0
BYDEQUPA1
BLDEQUPA2
NRDEQUPB1
NYDEQUPB2
NLDEQUPB3
DRDEQUPA0
DYDEQUPA1
DLDEQUPA2
XRDEQUPA6
XYDEQUPA7
XLDEQUPB0
NHDBIT00H
DHDBIT00H
S30EQU40H
BUFEQU41H
初始化及主程序:
ORG0000H
LJMPMAIN
ORG000BH
LJMPTOVLOCK;
0.05s中断服务程序
MAIN:
MOVSP,#30H;
堆栈指针
CLRA;
A=00H
MOVBUF,A;
0.05s计数器清0
MOVS30,A;
30s计数器清0
MOVTMOD,#01H;
定时器T0工作在方式1
MOVTHO,#3CH;
T0用于时钟定时,0.05s定时初值
MOVTL0,#0B0H
开中断
SETBET0
启动定时
NOP
MOVP0,#0FFH;
路口灯全灭
MOVP2,#0FFH
DEN_0:
CLRNLD;
南绿灯亮
CLRBLD;
北绿灯亮
CLRDRD;
东红灯亮
CLRXRD;
西红灯亮
CLRS30,#00H;
DEN_1:
MOVA,S30
CJNZA,#30,DEN_1;
不到30s等待
SETBNLD;
南绿灯灭
SETBBLD;
北绿灯
DEN_2:
CLRNYD;
南黄灯亮
CLRBYD;
北黄灯亮
ACALLDEL05S;
调用0.5子程序
SETBNYD;
南黄灯灭
SETBBYD;
北黄灯灭
DJNZR1,DEN_2
CLRNRD;
南红灯亮
CLRBRD;
北红灯亮
CLRDLD;
东绿灯亮
CLRXLD;
西绿灯亮
DEN_3:
MOVA,S30
CJNEA,#30,DEN_3;
SETBDLD;
东绿灯灭
SETBXLD;
西绿灯灭
DEN_4:
CLRDYD;
东黄灯亮
CLRXYD;
西黄灯亮
SETBDYD;
东黄灯灭
SETBXYD;
西黄灯灭
DJNZR1,DEN_4
LJMPDEN_0
T0中断服务程序
TOCLOCK:
MOVTH0,#3CH;
重装初值
MOVTL0,#0B7H
PUSHPSW
PUSHACC
INCBUF;
BUF+1
MOVA,BUF
CJNEA,#20,TCHU;
累计20次为一秒
MOVBUF,#00H;
一秒到,计数器清0
MOVA,S30;
修改30s计数器
INCA
MOVS30,A
CJNEA,#31,TCHU;
计数不到30返回
MOVS30,#00H;
计数超30清0
TCHU:
POPACC
POPPSW
0.5S延时子程序
DEL05S:
MOV74H,#03H
LOOP0:
MOV73H,#0FFH
LOOP1:
MOV72H,#0FFH
LOOP2:
NOP
DJNZ72H,LOOP2
DJNZ73H,LOOP1
DJNA74H,LOOP0
RET
3.3.5键盘功能处理程序设计
键盘用外部中断来处理,首先判断那个键按下,然后按照总体方案中规划编写每个按键的功能程序,下面列出四个按键的功能描述和处理程序。
系统由运行状态进入修改参数状态,需做一下工作:
1)停止倒计时。
2)将某一个方向的红灯参数和绿灯参数调出来,送显示缓冲区。
3)第一个数码管闪烁,标志进入设置状态。
KEY1:
;
第一个键功能
PUSHACC;
保护现场
CLRTR0;
关闭定时器,停止倒计时
调用读系统参数子程序
SETB54H;
第一个闪烁,其余不闪烁
CLR55H
CLR56H
CLR57H
POPACC;
恢复现场
RET1;
中断返回
加1键。
按照表3.14分配的位标志和显示缓冲区单元,依次对四个数码管的闪烁标志位进行判断,对相应的显示缓冲区进行加1处理(0~9变化)。
程序结构如图3.17所示
KEY2:
PUSHACC;
S2键功能程序
INC55H;
加1
MOVR2,70H
CJNER2,#10,KEY1A;
判断是否为10,否转返回
MOV55H,#0;
清为0
图3.17加1键程序框图
移位键。
使数码管闪烁依次移位,和第二键配合修改四个数码管上的数据。
程序结构和第二个键一样,仅是处理内容不同,进行移位操作,框图略去。
在编