专业基础综合实验报告08测控Word文件下载.docx
- 文档编号:22128391
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:161.79KB
专业基础综合实验报告08测控Word文件下载.docx
《专业基础综合实验报告08测控Word文件下载.docx》由会员分享,可在线阅读,更多相关《专业基础综合实验报告08测控Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
由此可以轻松的实现小车坐标不变的90度转弯。
在安装时我们保证两个驱动电机同轴,这种结构使得小车在前进时比较平稳,可以避免出现后轮过低而使左右两驱动轮驱动力不够的情况。
为了防止小车重心的偏移,前轮起支撑作用。
(2)控制器模块
采用stc宏晶公司的stc89c52单片机作为主控制器。
stc89c5是一个低功耗,高可靠性,超低价,无法解密,高性能的8位单片机,片内含32k空间的可反复擦写100,000次的Flash只读存储器,32个IO口,且stc系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。
(3)电源模块
采用12V蓄电池为直流电机供电,将12V电压降压、稳压后给单片机系统和其他芯片供电。
蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。
虽然蓄电池的体积过于庞大,在小型电动车上使用极为不方便,但由于我们的车体设计时留出了足够的空间,并且蓄电池的价格比较低。
(4)稳压模块
直接用两7805把电压直接稳压到5V,理论上由于降压过大容易烧稳压块,用两个7805并联。
(5)电机模块
本系统为智能电动车,对于电动车来说,其驱动轮的驱动电机的选择就显得十分重要。
采用直流减速电机。
直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。
由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。
因我们用软件对电机调速,实际值要比这小一些
注意:
在实际计算时用的是理论值。
(6)电机驱动模块
采用专用芯片LG9110作为电机驱动芯片。
LG9110是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以控制一个直流电机,而且还带有控制使能端。
用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
(7)矩阵按键输入模块
使用16个矩阵式按键开关组成一个矩阵按键输入模块,实现对系统输入的要求。
(8)显示模块
使用两个74HC573芯片驱动一块SR410561K四位液晶显示,实现系统的显示功能。
1.2.2软件设计方案
(1)程序主函数流程图
2硬件设计
2.1单片机最小系统
2.2电机驱动电路
2.3LED显示电路
2.4按键电路
2.5元器件清单
Description
Designator
Footprint
LibRef
Quantity
MulticellBattery
BAT-2
Battery
1
电池6V
PolarizedCapacitor(Axial)
C1
POLAR0.8
CapPol2
电容10uF
Capacitor
C2
RAD-0.3
Cap
电容104
C3
C4
C6
C7
电容30p
C8
C9
C10
C11
C12
C13
TypicalREDGaAsLED
D1
LED-1
LED1
发光二极管
D2
D3
D4
D5
D6
D7
D8
Diode
D9
DIODE
二极管
D10
D11
D12
IC2
PE16A
MAX232CPE
芯片
Header,4-Pin,Dualrow
IC3
MHDR2X4
LG9110
IC4
Motor,GeneralKind
M1
RB5-10.5
Motor
电机
M2
Resistor
R1
AXIAL-0.4
Res2
电阻10K
R2
R3
R4
R5
R6
R7
R16
电阻560Ω
R18
R19
R20
R21
R22
R23
R25
RX11
RX12
RX13
RX14
RX15
RX16
RX17
RX18
Switch
S1
SPST-2
SW-PB
矩阵式按键开关
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S15
S16
S17
按键开关
S18
Single-Pole,Single-ThrowSwitch
S19
SW-SPST
单刀开关
U1
DIP-20
74HC573
电源
U2
CP-SR410561K
U3
SR410561
SR410561K
8-BitMicrocontrollerwith8KISPFlashROM
U4
DIP-40
AT89S51
8位单片机AT89S51
CrystalOscillator
Z1
R38
XTAL
晶体振荡器
3软件设计
3.1主程序设计
主程序清单如下:
limiwequ30h;
厘米位
miaoequ31h;
秒位
fenmiequ32h;
分米位
fmiaoequ33h;
分秒位
meterequ34h;
米位
fenzhequ35h;
分位
pointequ36h;
小数点位
shimiequ37h;
十米位
shifnequ38h;
十分位
suduequ39h;
速度控制
jishkequ3ah;
记时开始
zhondequ3bh
zhoduequ3ch
zhonequ3eh
maichoequ3fh
jinwebequ40h
bhcsequ41h
dpanequ42h
fenchuequ43h
fencunequ44h
pandequ45h
fenmcequ51h
org0000h
ajmpmain
org000bh
ajmpst0
org001bh
ajmpst1
org0100h
main:
movlimiw,#00h
movmiao,#00h
movfenmi,#00h
movfmiao,#00h
movmeter,#00h
movfenzh,#00h
movpoint,#0bh
movshimi,#00h
movshifn,#00h
movjishk,#00h
movzhond,#00h
movzhodu,#00h
movzhon,#00h
movmaicho,#00h
movjinweb,#03h
movbhcs,#00h
movsp,#6fh
movtmod,#21h
movth0,#3ch
movtl0,#0b0h
movth1,#9ch
movtl1,#9ch
setbea
setbet0
setbet1
movp1,#0aah
acallxianshi
3.2子程序设计
3.2.1显示子程序设计
xianshi:
movp1,#0cch
mova,limiw
swapa
adda,miao
movp1,a
nop
movp1,#0ddh
mova,fenmi
adda,fmiao
movp1,#0eeh
mova,#0b0h
adda,point
mova,meter
adda,fenzh
movp1,#0ffh
mova,shimi
adda,shifn
ret
3.2.2定时子程序设计
//[Timer.h]定时器头文件-----------------------------------------------------
//定时器需要用到的头文件
#include<
mc9s12dg128.h>
//MCU映像寄存器名
#include"
Type.h"
//类型别名定义
//定时器相关函数声明
voidTimerInit(void);
//定时器初始化函数声明
voidTimerUpDate(void);
//定时器更新函数声明
//外部变量声明
externINT8Utime[3];
//存放时,分,秒
externINT8UTimInterCoun
//[Timer.c]定时器----------------------------------------------------------*
//本文件包含:
*
//
(1)TimerInit:
定时器初始化
//
(2)TimerUpDate:
定时器更新
//------------------------------------------------------------------------
//头文件
Timer.h"
//定时器头文件
//TimerInit:
定时器初始化函
-----------------------------------------------*
//功能:
定时器初始化,中断一次时间为1/38秒
//参数:
无
//返回:
voidTimerInit(void)
{
//禁止定时器溢出中断,分频因子p=8
//中断一次时间计算:
t=n/(fbus/p)=1/38秒,其中n=65535,fbus=19.6608MHZ
TSCR2=0x03;
TSCR1=0x80;
//允许主定时器开始计数
}
//TimerUpDate:
定时器更新函数
-----------------------------------------------
更新显示的时间
voidTimerUpDate(void)
time[2]++;
//秒数加1
if(time[2]!
=60)gotoisrTIMER1_exit;
//秒数未增加到60,转
time[2]=0;
time[1]++;
//秒数增加到60,清0,分钟数加1
if(time[1]!
//分钟数未增到60,转
time[1]=0;
time[0]++;
//分钟数增加到60,清0,小时数加1
if(time[0]!
=24)gotoisrTIMER1_exit;
//小时数未增到24,转
time[0]=0;
//时数增加到24,清0
isrTIMER1_exit:
TimInterCount=0;
//中断次数清零
//[isr.h]中断处理函数头文
------------------------------------------------*
//
(1)用于声明中断子函数
//-------------------------------------------------------------------------*
#ifndefISR_H//避免重复定义
#defineISR_H//头文件
#include"
SCI.h"
//串行通信头文件
//开关总中断的宏定义
#defineENABLE_INTERRUPTSasm("
cli"
)//开中断
#defineDISABLE_INTERRUPTSasm("
sei"
)//关中断
//开关各模块中断的宏定义
//开放或禁止SCI0的接收中断的宏定义
#defineEnableSCIReIntSCI0CR2|=0x20//开放接收中断
#defineDisableSCIReIntSCI0CR2&
=0xDF//禁止接收中断
//开放或禁止定时器1溢出中断的宏定义
#defineEnableT1OVIntTSCR2|=0x80//开放定时器1溢出中断
#defineDisableT1OVIntTSCR2&
=0x7F//禁止定时器1溢出中断
#endif
//[isr.c]中断处理函
------------------------------------------------------*
//
(1)定义中断处理函数
isr.h"
//中断处理函数头文件
#pragmaCODE_SEG__NEAR_SEGNON_BANKED//外部变量声明
externINT8UTimInterCount;
//中断次数
//isrTimOver:
定时器溢出中断处理程
----------------------------------------*
时,分,秒的处理
__interrupt16voidisrTimOver(void)
DISABLE_INTERRUPTS;
//关总中断
TimInterCount++;
//中断次数加一,中断38次为一秒
if(TimInterCount==38)
{
TimerUpDate();
//定时器更新
}
TFLG2=0x80;
//清除定时器溢出标志位
ENABLE_INTERRUPTS;
//开总中断
//isrRe:
SCI0接收中断处理函
接收3字节基准时分秒放入内存单元Time[0-2]
__interrupt20voidisrRe(void)
DISABLE_INTERRUPTS;
//禁止总中断
SCIReN(3,time);
//接收数据
ENABLE_INTERRUPTS;
//开放总中断
4专业基础综合实验体会
通过这次专业基础综合实验,我收获很多,在老师的指导和帮助下,我学到了很多专业基础知识,并且能够将学到的知识运用于实践中,学以致用,这不仅让我能够更好掌握所学的专业知识,同时也培养了我个人的运用知识的能力。
这次的综合实验是由我们小组四个人共同完成的,从中我明白了,设计是一个团队性的工作,如果某一个人能力很强,而其他人不行,这个团队可能做不出来很好的东西,但是团队各成员分别有一定的技术功底,精诚合作,一定能完成一个好的作品。
团队要合作,要民主,同时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业 基础 综合 实验 报告 08 测控