里程计数器课程设计报告Word文档格式.docx
《里程计数器课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《里程计数器课程设计报告Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
3.对数据进行处理,要求用LED显示里程总数和即时速度。
利用软件编程,对数据进行处理得到需要的数值。
最终实现目标:
采用单片机作控制,显示电路可显示里程
五、系统硬件设计
1.单片机最小系统[1]及说明
单片机最小系统是单片机应用的最基电路,由芯片AT89C51、电源、时钟电路和复位电路组成。
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS8位微处理器。
其应用广泛,生活中很多地方都有它的应用,像电子钟、出租车计价器、交通灯等。
其管脚说明如下:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.里程信号的采集
里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送给显示单元的。
其原理如图3所示。
图3传感器测距示意图
霍尔传感器是对磁敏感的传感元件,常用于信号采集的有A44E,该传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,工作电压X围宽,使用非常方便。
A44E的外形如图4所示。
1-VCC2-GND3-OUT
图4A44E外形图
3.显示单元电路设计
由于设计要求有里程数据显示输出,所以采用6位8段LED数码管的分屏显示。
显示电路由8路同相三态双向总线收发器74LS245和6位8段LED数码管组成。
74LS245用于连接51单片机和LED数码管,51单片机的P0.0~P0.7先接LED驱动74LS245再接数码管的A~G和dp,当位P0.0为1时,对应A段点亮,以次类推。
而51单片机的P2.0~P2.5直接与数码管相连,其6个输出口分别接到6个数码管,这样就可以进行控制6个数码管的显示。
如图5所示
图5显示电路
图68子形LED数码管
常用的LED数码管有的共阴和共阳两种,本次用于显示的是8位8段共阴LED显示管
六系统软件设计
1.系统主程序设计
在主程序模块中,需要完成对各接口芯片的初始化、里程计数的初始化、中断向量的设计以及开中断、循环等待等工作。
另外,在主程序模块中还需要设置启动/清除标志寄存器、里程数据寄存器,并对它们进行初始化。
然后,主程序将根据各标志寄存器的内容,分别完成启动和计程等不同的操作。
主程序流程图如图7所示。
当检测到传感器输入信号时,就启动计数,当计数到满后,向单片机申请中断,并把圈数存扫里程寄存器中,单片机将根据里程寄存器中的内容计算行驶里程公里数,再存到相应的寄存器。
数据存到寄存器中后送显示电路显示出来。
中断
图7主程序流程图
2.中断服务程序
当检测到里程信号输入时,计数器就开始计数,当记到10时,相当于1公里,计数器就申请中断,进行中断服务程序,送数据到相应的数据寄存单元,并进行计算。
其程序流程如图8所示。
N
Y
图8中断服务程序
3.显示子程序
里程数据送到相应的寄存器后,就会进行显示。
本次课程设计采用动态扫描显示。
数码管显示里程数程序流程图如图9。
图9显示子程序
七、系统仿真调试与分析
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于条件的限制。
整体电路采用protues软件进行仿真,先点击开始仿真键,一开始显示为0,随着脉冲的输入,显示的数会增大,由于车轮的周长存在RAM中,单片机复位后显示为0。
单片机如果仿真结果不是这样,应停止仿真进行电路检查,由于本电路图比较简单,出错可能性小,我们可从连线上找,也可分析它的电平是否正确,改正后在进行仿真直到结果跟设计的相符合。
调试工具:
proteus仿真软件[3]
Keil程序仿真软件
1.进行程序编译,修改直到无误
2.开始进行仿真时,显示里程数为0.
3.当里程信号的输入10次,即1公里,显示1公里
4.随着信号的输入,显示的里程变数大
八、设计中的问题及解决方法
本次课程设计设计是基于单片机,主要用到很多单片机的知识,由于涉及知识多,单片机课上半学期已结束,很多东西已忘记,于是把单片机教材浏览了一遍,把忘了的知识重新记起来。
在电路的选择上开始设计时遇到很多问题,单片机有很多新型号,比如AT89C52,AT89S52等,由于电路简单,选择AT89C51就可。
在显示电路上,串行比并行需要的单片机口少得多,本次设计电路简单,选用并行比较简单。
课程设计用到两个软件,KeiluVision和proteus,但这两个软件是比较专用的软件,不易安装好,通过在网上查找和同学的帮助,最终把他们装好。
proteus软件是第一次用,因此很多东西都不知道,一开始画电路图连元器件都找不到,通过《单片机原理及课程设计》一书的介绍和从网上找到的元器件关键字对照表及自己慢慢的摸索,最后把电路图画好。
Proteus仿真时,为了源程序的正确性,先把程序放在KeiluVision中检验,修改,在生成hex文件仿真
仿真时一开始得不到预料的结果,通过检查修改源程序和电路图最终仿真出了预想的结果
九、设计心得
本次课程设计时间两周,在这两周里,我学到了很多东西。
课程设计用到的知识主要是单片机方面的,在课程设计的过程中,我对单片机知识理解加深了,以前不懂的很多东西,通过向同学老师请教,也慢慢的搞懂了。
在过两周就是期末考试了,对于单片机的复习可以说是一举两得。
课程设计用到两个软件:
KeiluVision和proteus,KeiluVision在以前的的单片机实验中就有用到,这次再用,感觉还好,对其的基本功能与操作更熟悉了,proteus是第一次用,一开始感到很难,慢慢熟悉后用起来也就比较顺手。
现在想起来觉得其实就是一些简单的东西,但是了解了proteus的基本操作,还是感到学到了东西。
课程设计虽然只有两周,但我觉得它的意义是重大的,它让我们学到了知识,学会应用知识之间的联系、整合知识。
课程设计还可为以后的毕业设计打基础,如果能顺利的搞好课程设计,就能为我们搞好毕业加码。
十、参考文献
[1]曾屹.单片机原理与应用.XX:
中南大学,2009
[2]X一斌余建坤单片机原理及课程设计XX:
[3]江世明传感技术与应用第二版XX:
[3]王晓君等.MCS-51及兼容单片机原理与选型:
电子工业
[4]X淑清等.单片微型计算机接口技术及其应用:
国防工业
附录:
附录A:
电路图
附录B:
源程序
VSDAEQUP1.5
VSCLEQUP1.4
SLAEQU50H
NUMBYTEQU51H
MTDEQU30H
MRDEQU40H
SLAWEQU0A0H
SLAREQU0A1H
DPHHEQU62H
TH1HEQU6CH
TH1HHEQU6DH
ORG0000H
LJMPSTART
ORG0003H
LJMPINTEX0
ORG000BH
RETI
ORG0013H
LJMPINTEX1
ORG001BH
LJMPINTT1
ORG0023H
ORG002BH
CLEARMEN:
MOVTMOD,#90H
MOVSP,#75H
SETBPX0
SETBIT0
SETBIT1
CLRA
MOV20H,A
MOV6CH,A
MOV6DH,A
MOV70H,A
MOV71H,A
MOV72H,A
MOV73H,A
MOV60H,A
MOV61H,A
MOV62H,A
MOV63H,A
DECA
MOV68H,A
MOV69H,A
MOV6AH,A
MOV6BH,A
MOVP1,A
CLEAR1:
P1.2,KEY1
MOV21H,#0FH
LJMPCLEAR2
KEY1:
P1.3,KEY2
MOV21H,#12H
KEY2:
P1.6,KEY3
MOV21H,#14H
KEY3:
P1.7,ERR
MOV21H,#19H
CLEAR2:
SETBTR1
SETBEA
SETBEX0
SETBET1
SETBP3.1
LCALLVIICREAD
RET
ERR:
CPLP3.1
LCALLDL5S
LJMPCLEAR1
START:
LCALLCLEARMEN
START1:
P3.0,DISPLAYS
LCALLDISPLAYV
START2:
SJMPSTART1
INTEX0:
PUSHACC
PUSHPSW
INC60H
CJNEA,60H,INTEX0OUT
INC61H
CJNEA,61H,INTEX0OUT
INC62H
INTEX0OUT:
LCALLVIICWRITE
SETBEX1
POPPSW
POPACC
RETI
INTEX1:
CLREX1
JNB00H,INTEX11
MOVTL1,#0FFH
MOVTH1,#0FFH
MOV6CH,#0FFH
MOV6DH,#0FFH
INTEX11:
MOV68H,TL1
MOV69H,TH1
MOV6AH,6CH
MOV6BH,6DH
MOVTL1,A
MOVTH1,A
CLR00H
INTT1:
INC6CH
MOVA,6CH
JNZINTT11
INC6DH
MOVA,6DH
SETB00H
INTT11:
POPPSW
POPACC
DISPLAYS:
SETBP1.0
CLRP1.1
SETBP3.7
LCALLSSS
LCALLDISPLAY
LJMPSTART1
DISPLAYV:
CLRP1.0
SETBP1.1
CLRP3.7
LCALLVVV
MOVA,71H
SUBBA,#04H
JNCWARING
V1:
LCALLDISPLAY
RET
WARING:
CLRP3.1
AJMPV1
VIICWRITE:
ACALLWMOV9
MOVSLA,#SLAW
MOVNUMBYT,#09H
LCALLWRNBYT
WMOV9:
MOV5FH,#50H
MOVR0,#MTD
MOVR1,#5FH
MOVR2,#09H
WMOV:
MOVA,R1
MOVR0,A
INCR0
INCR1
DJNZR2,WMOV
DISPLAY:
MOVR1,#70H
MOVR2,#0FEH
PLAY:
MOVA,R2
MOVP2,A
MOVA,R1
ANLA,#0FH
MOVDPTR,#TAB
MOVCA,A+DPTR
MOVP0,A
LCALLDL1MS
MOVA,R2
JNBACC.3,ENDOUT
RLA
MOVR2,A
AJMPPLAY
ENDOUT:
SETBP2.0
SETBP2.1
SETBP2.2
SETBP2.3
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DB00H
SSS:
MOV19H,#64H
MOV18H,#00H
MOV17H,#00H
MOV16H,#00H
MOV11H,#00H
MOV12H,#00H
MOV13H,62H
MOV14H,61H
MOV15H,60H
LCALLDIVST
LCALLBCDST
MOVA,25H
MOV70H,A
SWAPA
MOVA,24H
VVV:
MOV18H,68H
MOV17H,69H
MOV16H,6AH
MOV13H,#36H
MOV14H,#0EEH
MOV15H,#80H
MOV14H,#00H
MOV72H,#00H
MOV73H,#00H
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
DL5S:
MOVR5,#0FFH
DL3:
LCALLDL1MS
DJNZR5,DL3
DIVST:
CLRC
MOVA,13H
SUBBA,18H
MOVA,12H
SUBBA,17H
MOVA,11H
SUBBA,16H
JNCLOOP4
MOVB,#10H
NDIV1:
CLRC
MOVA,15H
RLCA
MOV15H,A
MOVA,14H
MOV14H,A
MOVA,13H
MOV13H,A
MOV12H,A
MOV11H,A
MOVF0,C
CLRC
MOV1AH,A
MOV19H,A
F0,NDIV2
JCNDIV3
NDIV2:
MOV11H,A
MOVA,19H
MOVA,1AH
INC15H
NDIV3:
DJNZB,NDIV1
CLRF0
DIVEND:
LOOP4:
SETBF0
SJMPDIVEND
BCDST:
MOVR7,#10H
MOV25H,#00H
MOV24H,#00H
KKK:
RLCA
ADDCA,25H
DAA
MOV25H,A
ADDCA,24H
MOV24H,A
DJNZR7,KKK
END