课程设计报告
〔2022—2022学年第2学期〕
课程名称:单片机课程设计
班级:
学号:
姓名:
指导教师:
2022年03月
一、目的
运用所学理论知识及实验方法解决实际咨询题,通过这些活动培养分析咨询题和解决咨询题的能力。具体表现在构造一个操纵系统框架的能力;检索和阅读文献资料的能力;综合运用所学专业知识使之对所设计系统具有独立调试的能力和故障处理的能力;绘图能力;计算机运用能力;逻辑思维能力与形象思维能力;文字及口头表达的能力;撰写实习报告的能力。
二、内容和要求
1、用PROTEL99SE画单片机系统原理图;
2、焊接电路板;
3、依据编程任务要求编写并调试程序;
4、撰写报告;
5、参加实习成果验收及面试或考试;debug灯
任务1:交通灯
(1)根基要求:以单片机为核心设计一个完整的交通灯模拟系统。所谓模拟确实是根基以每组有绿,红,黄3支共两组发光二极管表示交通信号灯,数码管2只共两组以递减的方式表示各信号灯的时刻。在双干线路口上,交通信号灯的变化是定时的。假定:
(1)、放行线:绿灯亮放行25秒,黄灯亮警告5秒然后红灯亮禁止。
(2)、禁止线:红灯亮禁止30秒,然后绿灯亮放行。
使两条路线交替地成为放行线和禁止线,就能够实现定时交通操纵。假定以P1口线接6支发光二极管〔即交通信号灯〕,因为电路中有反相器的关系,因此口线输出高电平因此“信号灯〞熄灭,口线输出低电平因此“信号灯“亮。
(2)进阶要求一:在根基要求的本原上,要求红绿灯时刻可通过按键设置,例如红灯60秒,绿灯52秒,黄灯8秒。提示:时刻设置一定是要遵循以下规律:红灯时刻=绿灯时刻+黄灯时刻。
任务2:秒表
三、过程〔如实际程序开发、电子制作,具体讲明有关原理、开发过程、调试过程、结果〕
交通灯:
(一)、功能描述:
这是一个交通灯模拟系统,每组有绿,红,黄3支共两组发光二极管表示交通信号灯,数码管2只共两组以递减的方式表示各信号灯的时刻。在双干线路口上,交通信号灯的变化是定时的。初始时刻设定为红灯30秒,绿灯25秒,黄灯5秒,在此本原上可通过按键修改红绿灯的时刻。
(二)、硬件局限:
电源模块:
1、模块功能简介:此模块为整个系统提供稳定的5V电压。
2、电路图:
3、所用芯片介绍:
LM2576系列开关稳压集成电路是线性三端稳压器件的替代品,它具有可靠的工作性能、较高的工作效率和较强的输出电流驱动能力,从而为MCU的稳定、可靠工作提供了强有力的保证。
要紧特性:最大输出电流:3A;最高输进电压:LM257640VLM2576HV60V;输出电压:5V12V15VADJ〔可调〕等可选;振动频率:52kHz;转换效率:75%88%〔不同电压输出时的效率不同〕
单片机最小系统模块:
1、模块功能介绍:本系统包括时钟电路和复位电路。本课程设计采纳的单片机是SST89E58,晶振采纳12MHz
2、电路图:
以上电路包括时钟电路和复位电路。
时钟电路是由振荡电路和分频电路组成,其中振荡电路是由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲;分频电路因此用于把振荡脉冲分频,以得到所需要的时钟信号。晶振采纳12MHz
复位电路是采纳的按键电平复位,通过使复位端经电阻与VCC电源接通而实现的。
3、所用芯片介绍:
SST89E58是通用的8位系列兼容微处理器,工作电压在和之间;内部RAM共有1KB48位并行双向I/O口(32I/O引足);有4个中断源(2个定时器中断和2个外部中断);采纳40引足双列直插式的封装形式。
8段数码管显示模块:
1、模块功能介绍:此模块用来显示实验中药显示的时刻等数字。这是由条形发光二极管组成“8”字形的LED显示器。发光响应快,亮度强,高频特性好。
2、电路图:
为了给发光二极管加驱动电压,上图中公共引足的接法为共阳极接法,把发光二极管的阳极连在一起作为阳极公共引足,如此阴极引足上加低电平常即可导通点亮。
3、显示原理介绍:
本次课程设计中为并排使用的4位数码管,采纳动态显示方式。显示时通过位控信号采纳扫描的方法逐位地循环点亮各位数码管。尽管在任一时刻只有一位数码管被点亮,然而由于人眼具有的视觉残留效应,瞧起来与全部数码管持续点亮的效果一样。
动态显示需要为各位提供段控和位控,把段码表预先存放在存储器中,使用时通过查表就能够得到段码。而通过并行口输出的相互独立的位码因此是起选通作用的,用于选择显示位。因此,需要用到接口芯片的两个数据口。本设计中所用的是8155,下面介绍。
4、所用芯片介绍:
见下页
8155:
芯片引足介绍:
CE:芯片片选端。
/RD、/WR:读写信号。
ALE:地址锁存信号。
IO/E:为IO/RAM选择线,低电平选择RAM,高电平选择I/O。
PA0~PA7为端口A。PB0~PB7为端口B。PC0~PC7为端口C。
在设计中,使用PB口为位码输出口,以PB7~PB4输出位控线。PA口为段码输出口,加接74HC244进行段控输出驱动。因为8155只能输出显示段码而不具有操纵功能,因此动态显示要靠程序实现。
LED灯模块:
1、模块功能介绍:此模块用来作为模拟交通灯的红黄绿灯的闪耀。
2、电路图:
3、显示原理介绍:
本设计中使用两组发光二极管,采纳共阳极接法,阳极公共引足接+5V,阴极引足上加低电平常即可导通点亮。
按键模块:
1、模块功能介绍:此模块用来作为开关选择。
2、电路图:
使用时,用跳线将所需引足与相应开关相连接。
(三)、软件局限:
1设计思想:
此次设计是在根基功能上修改的,实现了可修改红黄绿灯时刻的功能。
首先,根基功能是两组发光二极管表示交通灯信号,4个数码管分2组以递减的方式表示各信号灯的时刻。然后,在此本原之上,要求红绿灯时刻可通过按键设置,因此需要用到相应存储单元来操纵时刻。
2流程图:
交通灯的根基功能大致可分为两局限,一局限为信号灯的操纵,另一局限为数码管时刻的显示,这两局限根基上通过相应的关系操纵的。可分为4种情况:(1)A组红灯亮,B组绿灯亮;(2)A组红灯接着亮,B组黄灯亮;(3)B组红灯亮,A组绿灯亮;(4)B组红灯接着亮,A组黄灯亮。
流程图如下:
定时中断子程序:
中断侍候程序的要紧功能是进行计时操作,设计一个以1秒为周期的中断子程序。流程图如下:
(四)、程序的调试与运行:
程序的调试运行采纳KEILC51编译器,支持汇编语言和标准C语言。通过一系列的调试之后,终于能够成功运行。
秒表:
()、功能描述:
这是一个简易秒表,具有4个功能:启动计时、暂定计时、接着计时、时刻清零。其中。
(二)、硬件局限:
具体请见交通灯硬件局限(除往LED灯局限)
(三)、软件局限:
1、设计思想:
使用3个按键实现4个功能,其中暂停和接着是一个键,那个地点通过判定存储单元的奇偶来选择暂停和接着。要紧采纳按键查询加中判定时的方法。
2、流程图:
其中定时中断子程序与交通灯思想类似,此处不再讲述。
(四)、程序的调试与运行:
秒表程序设计过程中,初步完成时碰到2个bug:
1、未开始时,按两下暂停键,秒表也会开始计数;后来加了开始键计数单元,来判定有没有开始,要是没有开始,暂停键不作用。
2、暂停后,按开始键也会接着;后来加了暂停键计数单元来判定暂停键是否按过,要是已按过,开始键因此不作用。
总电路图:
这是总的PCB图,其中电源模块没有画出来。
附:设计程序(要紧局限)
任务一:交通灯
/******交通灯的根基功能********/
LOOP:SETBTR0
MOVA,60H
ADDA,61H
MOV62H,A;62H存放红灯时刻
MOVA,61H
ADDA,62H
MOV63H,A;63H存放红灯时刻加绿灯时刻
ADDA,60H
MOV64H,A;64H存放红黄绿时刻之和
CLRC
MOVA,51H
SUBBA,61H
JCLOOP1;计数值与61H对比
CLRC
MOVA,51H
SUBBA,62H
JCLOOP2;计数值与62H对比
CLRC
MOVA,51H
SUBBA,63H
JCLOOP3;计数值与63H对比
CLRC
MOVA,51H
SUBBA,64H
JCLOOP4;计数值与64H对比
CLRC
LOOP1:MOVP1,#0DEH;A组红灯亮,B组绿灯亮11011110
MOVA,62H
SETBC
SUBBA,51H
MOV53H,A;62H-当前计数值送到53HA组灯
CLRC
SUBBA,60H
MOV52H,A;61H-当前计数值送到52HB组灯
CLRC
SJMPSHUMA1
LOOP2:MOVP1,#0EEH;A组红灯接着亮,B组黄灯亮11101110
MOVA,62H
SETBC
SUBBA,51H
MOV53H,A;62H-当前计数值送到两组
MOV52H,A
CLRC
SJMPSHUMA1
LOOP3:MOVP1,#0F3H;B组红灯亮,A组绿灯亮11110011
MOVA,63H
SETBC
SUBBA,51H
MOV53H,A
ADDA,60H
MOV52H,A
CLRC
LJMPSHUMA1
LOOP4:MOVP1,#0F5H;B组红灯接着亮,A组黄灯亮11110101
MOVA,64H
SETBC
SUBBA,51H
MOV53H,A
MOV52H,A
LJMPSHUMA1
/*********设置黄灯绿灯的时刻********/
NEXT1:CLRTR0
LCALLDELAY2
LCALLDELAY2
MOV60H,#00H
MOV61H,#00H
MOV20H,#00H
MOV21H,#00H
MOVP1,#0FFH
NEXT:
JNBP3.2,COUNTER0;查询INT0口,有外部脉冲时60H自加1
JNBP3.3,COUNTER1;查询INT1口,有外部脉冲时61H自加1
JNBP3.5,L;查询,有外部脉冲时执行交通灯红黄绿根基功能
LJMPSHUMA
L:LCALLDELAY2
LCALLDELAY2
LJMPLOOP
COUNTER0:
LCALLDELAY2
INC60H
MOV52H,60H
LJMPSHUMA
COUNTER1:
LCALLDELAY2
INC61H
MOV53H,61H
LJMPSHUMA
DELAY2:MOVR6,#0FFH
DELAY3:MOVR5,#0FFH
DJNZR5,$
DJNZR6,DELAY3
    RET
以上设置时刻局限要紧采纳查询按键的方法来进行设置时刻,同时送到数码管显示。
任务二:秒表
NEXT:MOVR5,25H
CJNER5,#01H,L
JNBP3.2,BEGIN
L:JNBP3.3,COUNT0;以上能够使在暂停的情况下,按开始键可不能接着
JNBP3.4,CLEAR
LCALLDISP;调用显示子程序
SJMPNEXT;重新循环
NOP
NOP
NOP
COUNT0:
LCALLDELAY2;此段用来判定有没有开始,要是没有开始,摁两下暂停键也可不能开始
MOVR6,26H
CJNER6,#00H,COUNT1
LJMPL
COUNT1:;当按键存储单元为奇数时接着,为偶数因此暂停
LCALLDELAY2
INC25H
MOVA,25H
MOVB,#02H
DIVAB
MOVR7,B
CJNER7,#00H,CONTINUE
JMPSTOP
JMPNEXT
BEGIN:LCALLDELAY2;开始,并用26H记录
INC26H
SETBTR0
JMPNEXT
STOP:LCALLDELAY2;暂停
CLRTR0
JMPNEXT
CONTINUE:LCALLDELAY2;接着
SETBTR0
JMPNEXT
CLEAR:LCALLDELAY2;清零
LJMPMAIN
DELAY2:MOVR6,#0FFH
DELAY3:MOVR5,#0FFH
DJNZR5,$
DJNZR6,DELAY3
    RET
/************定时中断处理程序*************/
TIME:PUSHACC;保卫现场
PUSHPSW
MOVTL0,#0B4H;赋定时初值
MOVTH0,#3CH
INC20H
MOVA,20H
CJNEA,#2,RETI1
MOV20H,#00H;0.1秒钟时刻到
ADDA,#01H
MOV21H,A
CJNEA,#10,RETI1
MOV21H,#00H;一秒时刻到
MOVA,22H;22H存放1秒
ADDA,#01H
MOV22H,A
CJNEA,#10,RETI1
MOV22H,#00H;10秒时刻到
MOVA,23H;23H存放10秒
ADDA,#01H
MOV23H,A
CJNEA,#10,RETI1;100秒时刻到
MOV23H,#00H
MOVA,24H;24H存放100秒
ADDA,#01H
MOV24H,A
CJNEA,#10,RETI1
MOV24H,#00H
RETI1:POPPSW;恢复现场
POPACC
RETI
NOP
NOP
四、小结
本次课程设计,我运用单片机相关知识及实验方法设计了交通灯模拟系统和秒表。通过运用所学方法和检索阅读相关资料,将各个模块调试运行,最终得以成功。此次设计中,我重新熟悉了用PROTEL99SE画系统原理图的步骤与方法,重点复习了汇编语言的相关细节与法因此。
在设计交通灯系统的过程中,碰到了一些咨询题。由于在之前差不多有过根基功能的设计,因此要紧是考虑在正常运行的时候如何通过按键修改时刻。在开始的程序中,没有把握好按键延时,导致不能进进修改状态。由于实验板上只有三个按键,在加上汇编语言的弊端,因此最后改变时刻时只能加计数。
在设计秒表时,要紧时如何处理好三个按键查询之间的关系。最初调试的时候,出现了2bug:一个是在没开始时暂停键按两下也会开始;另一个是暂停后按开始键也会接着。后来通过加上相关按键的计数判定单元,这些咨询题才得到解决。而同学用C语言编写因此比汇编要方便。
通过这次课程设计,加强了动手、考虑和解决咨询题的能力平常瞧课本时,有时咨询题老是弄不明白,做完课程设计,那些咨询题就迎刃而解了。在制作PCB时,发现细心耐心,恒心一定要有才能做好情况,首先是线的布局上既要美瞧又要有用和走线简单,兼顾到方方面面往考虑是特别需要的。
参考文献
[1]李广弟等.单片机本原[M].北京:北京航空航天大学出版社,2007.
成绩
日期
批阅人

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。