转速表单片机课程设计任务书.docx
《转速表单片机课程设计任务书.docx》由会员分享,可在线阅读,更多相关《转速表单片机课程设计任务书.docx(18页珍藏版)》请在冰豆网上搜索。
转速表单片机课程设计任务书
课程设计任务书
学院名称计算机与信息学院
设计题目转速表
专业(班级)
姓名(学号)
指导教师
成绩
日期
1、课程设计题目:
转速表
2、课程设计任务与要求
1、本设计课题硬件要增加转速测量电路、转速显示电路、打印机及声光报警电路,工作量较大,要求学生完成系统的部分功能,如仅作转速测量及显示。
画出系统部分硬件电路图,并完成硬件增加电路的安装及调试工作。
2、转速测量:
只要能够启求出脉冲个数,即可求出转速。
为了得到计数脉冲,可以采用门控方式的硬件计数方法,也可以采用中断方式的软件计数器。
本设计采用
(2)中断方式计数,及(3)串行显示接口。
转速表系统有关功能键、打印机及声控报警电路可作为附加要求,由学生自行分析、设计。
3、设计、编写系统软件程序包括转速测量模块,误差分析模块,计算转速n模块,串转并及显示模块并调试通过,画出各程序模块的流程图。
3、设计方案
1、实验板工作原理:
(1)根据霍尔效应原理,将一块永久磁钢固定在直流电机转轴上的转盘边沿,当直流电机转动时,转盘随转轴旋转,因此磁钢也跟着转动。
在转盘附近安装一个霍尔开关传感器3020T,当转盘随转轴旋转时,受磁钢转动产生的磁场影响,霍尔器件输出脉冲信号,其脉冲信号的频率和转速成正比,这样只要测出脉冲信号的频率或周期既可计算出直流电机的转速。
(2)直流电机的转速与施加于电机两端的电压有关,电动机驱动电路有D/A转换和PWM两种方式,本次设计我选择PWM驱动直流电机。
实验板连接方式如图1-1及图1-2,PWM模块与CKMOT连接。
(按第四部分图1-3连接硬件线路)
图1-1图1-2
2、设计思路:
通过单片机外部中断信号INT0的中断程序对电机转速脉冲CKMOT进行计数,CKMOT输出一个脉冲信号,电机即转动一周,INT0引脚产生一次中断,中断程序中软件计数器加1。
当软件计数器值为10的时候(即CKMOT输出10个脉冲信号)对单片机P1.0引脚取反控制L0等的亮或灭,这样单片机P1.0引脚输出的信号即为电机的转速脉冲周期信号,通过L0灯的亮或灭课观察到电机转速的变化。
电机转速计算:
用单片机内部定时器T0产生50ms定时中断,在T0的中断程序中也采用软件计数器对中断次数计数,当软件计数器值为200时(即中断200次10s)读出CKMOT的脉冲计数值,计算出电机的转速(n/s)送显示缓冲区。
四、硬件系统说明与电路原理图
1、硬件系统说明
(1)DAC0832
*DAC0832是NATIONAL公司生产的8位D/A转换CMOS器件。
具有两个输入数据寄存器,两级锁存便于异步工作。
*DAC0832与8051芯片相连的几个引脚
DI7-0数据输入(DAC中的D)
ILE数据允许储存(高电平有效)
CS输入寄存器选择(低电平有效)
WR1输入寄存器写(高电平有效)
WR2DAC寄存器写(高电平有效)
XFER数据传送(低电平有效)
*工作方式:
由双缓冲、单缓冲、直通三种。
(2)8279
<1>DB0~DB7:
双向数据总线。
在CPU与8279间做数据与命令传送。
<2>CLK:
8279的系统时钟,100KHz为最佳选择。
<3>RESET:
复位输入线。
输入HI时可复位8279。
<4>CS:
芯片选择信号线。
当这个输入引脚为低电平时,可将命令写入8279或读
取8279的数据。
<5>A0:
缓冲器地址选择线。
A0=0时,读写一般数据;A0=1时,读取状态标志位
或写入命令。
<6>RD:
读取控制线。
RD=0时,8279输送数据到外部总线。
<7>WR:
写入控制线。
WR=0时,8279从外部总线接收数据。
<8>IRQ:
中断请求。
平常IRQ为LO,在键盘模式下,每次读取FIFO/SENSOR RAM
的数据时,IRQ变为HI,读取后转为LO;在传感器模式下,只要传感器一有变化,就会使IRQ变为HI,读取后转为LO。
<9>SL0~SL3:
扫描按键开关或传感器矩阵及显示器,可以是编码模式(16对1)
或解码模式(4对1)。
<10>RL0~RL7:
键盘/传感器的返回线。
无按键被按时,返回线为HI;有按键被
按时,该按键的返回线为LO。
在激发输入模式时,为8位的数据输入。
<11>SHIFT:
在键盘扫描模式时,引脚的输入状态会与其它按键的状态一同储存
(在BIT6),内部有上拉电阻,未按时为HI,按时为LO。
<12>CNTL/STB:
在键盘扫描模式时,引脚的输入状态会与SHIFT以及其它按键的状态同一储存,内部有上拉电阻,未按时为HI,按时为LO。
在激发输入模式时,作为返回线8位数据的使能引脚。
<13>OUTA0~OUTA3:
动态扫描显示的输出口(高4位)。
<14>OUTB0~OUTB3:
动态扫描显示的输出口(低4位)。
<15>BD:
消隐输出线。
2、电路原理图
图1-3DAC0832及直流电机实验电路原理图
图1-48279、键盘及LED显示电路原理图
五、软件主要模块流程图及源程序和程序注释
1、模块流程图
图1-5主程序流程图图1-6INT0中断程序流程图
用计算出电机的转速与设定值进行比较,若电机转速大于设定值,则送0832控制输出电压减1,否则加1,在主程序中进行显示处理。
注:
40H单元为定时器T0软件计数器单元;41H单元为送0832控制输出电压值,42H单元存放电机转速。
图1-7直流电机控制程序流程图
2、源程序及程序注释
DAOTEQU40H;定时器T0软件计数器单元
SCNTEQU41H;送0832控制输出电压值
CKCHEQU42H;电机转速
CKCNEQU43H
SETPEQU44H
TEMPEQU45H
ORG0000H
STRT:
LJMPMAIN
ORG0003H;外部中断0
LJMPPINT0
ORG000BH;定时器0
LJMPPTF0
ORG0013H
LJMPLINT1;外部中断1
ORG0030H
PTF0:
MOVTH0,#0D0H;以下是计算转速部分
PUSHAcc
PUSHPSW
SETBPSW.3
DJNZSCNT,PTFJ
MOVSCNT,#64H
MOVA,CKCN
MOVB,#0AH;B为十秒
DIVAB;先除以10秒
MOV39H,B;把值给39H
MOVB,#0AH;B为十次
DIVAB;除以十次
MOV3AH,B
MOV3BH,A
MOVA,CKCN
CJNEA,SETP,PTFX;观察显示几位,3位还是两位
SJMPPTFY
PTFX:
JCPTFZ
DECDAOT
SJMPPTFY
PTFZ:
CJNEA,#3,$+3
JCPTFR
INCDAOT
PTFR:
INCDAOT
PTFY:
MOVCKCN,#0
MOVDPTR,#7FFFH
MOVA,DAOT
MOVX@DPTR,A
MOVX@DPTR,A
PTFJ:
NOP
POPPSW
POPAcc
RETI
MAIN:
MOVSP,#06FH;堆栈指针赋值
MOVDPTR,#5FFFH;指向8279命令/状态口
MOVA,#0DCH
MOVX@DPTR,A;送显示RAM清零命令字0DCH
LP:
MOVXA,@DPTR
JBAcc.7,LP;读8279的状态,直到DU不为1
MOVA,#00H
MOVX@DPTR,A
MOVA,#34H;分频系数为20
MOVX@DPTR,A
CLR12H
NOP
MOVR0,#39H
MOVR7,#06H
MLP0:
MOV@R0,#17H
INCR0
DJNZR7,MLP0
LCALLDIR
MOVDAOT,#06FH
MOVSCNT,#04H
MOVCKCH,#00H
MOVCKCN,#00H
SETBEA;开总中断
NOP
SETBEX1;开外部中断1
NOP
CLRIT1;设置触发方式
NOP
MLP1:
LCALLKEYI
ANLA,#0FH
CJNEA,#0AH,$+3
JNCMLP1
MOV3EH,A
LCALLDIR
MLP2:
LCALLKEYI
ANLA,#0FH
CJNEA,#0AH,$+3
JNCMLP2
MOV3DH,A
MOVA,3EH
MOVB,#0AH
MULAB;时间乘以转的圈数
ADDA,3DH
MOVSETP,A
MOVDPTR,#7FFFH;指向0832地址
MOVA,DAOT
MOVX@DPTR,A
MOVA,#1
ORLA,TMOD
MOVTMOD,A;设置定时器方式为计数
MOVTH0,#0F0H
MOVTL0,#00H
SETBTR0
SETBEA;开相关中断,就是一些开关
SETBET0
SETBEX0
SETBIT0
SETBEX1
CLRIT1
NOP
MOVIP,#04H
MLP4:
MOVDPTR,#7FFFH
MOVA,DAOT
MOVX@DPTR,A
LCALLDIR;调用显示程序
LJMPMLP4
PINT0:
PUSHAcc
INCCKCN
MOVA,CKCN
JNZPIPI
INCCKCN;一次中断脉冲数加一
PIPI:
POPAcc
RETI
LINT1:
PUSHAcc;压入堆栈,现场保护
PUSHDPH
PUSHDPL
MOVDPTR,#5FFFH;指向8279
MOVA,#40H;40H值为200
MOVX@DPTR,A
MOVDPTR,#5EFFH;取数据
MOVXA,@DPTR
MOV27H,A;把取数据(转速)给27H
SETB12H;中断标志位打开
NOP
POPDPL
POPDPH
POPAcc
RETI
KEYI:
JNB12H,KEYI;等待中断到来
MOVA,27H
CLRC
SUBBA,#10;十次脉冲信号到,灯取反
JNCTTT1
MOVA,27H
CLR12H
RET
TTT1:
MOVA,27H
CLRC
SUBBA,#04H
CLR12H;中断标志位手动清0
RET
DIR:
MOVR2,#06H;显示程序
MOVA,#92H;输入显示命令字
MOVDPTR,#5FFFH
MOVX@DPTR,A
MOVR1,#39H;显示数据首地址
TY11:
MOVA,@R1
MOVDPTR,#LCODE
MOVCA,@A+DPTR
MOVDPTR,#5EFFH
MOVX@DPTR,A;写入显示RAM
INCR1;显示地址加一
DJNZR2,TY11
RET
LCODE:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H,88H
DB83H,0C6H,0A1H,86H,8EH,8CH
DB0C1H,89H,0C7H,0BFH,91H
DB00H,0FFH
END
3、程序实现结果
(注:
数码管显示转速93,用手人为地降低电机转速,数码管转速降低。
)
六、课程设计总结
1、收获与体会
这次的课程设计对我来说是前所未有的,当我选中这个课题时我根本无法下手,遇到了很大的困难。
平时我的单片机基础并不好,我感觉课本里那些概念很生涩难懂,这个设计就更是我的难题。
所以在设计开始的时候我在实验指导书中查找相关知识,利用网络资源查找转速表和霍尔元件的相关知识,遇到不会的问题询问熟悉单片机的同学。
在课程设计的过程中因为身体的原因也耽误了一些时间,所以设计的效果并不是很好,还请老师包容。
这次设计我深有体会,这是对自己大三上学期所学知识归纳总结后的应用,是把理论知识用到实践之中去的一次宝贵尝试,这是一个再学习的过程,培养了自己独立思考,动手解决问题的能力,从而从各个方面得到提高与完善了自己,使自己的各个方面提高到一个新的台阶,同时为以后的工作打下基础。
在人生及其重要的大三阶段,这样的学习活动无疑锻炼了我,丰富了我的知识面和见识,这是对个人能力是一次考验,我得到了很多有用的东西,感觉应对问题更加从容不迫、做事井井有条了。
除此之外,在整个设计过程中,要有信心和耐心,相信自己能够很好的完成本次设计任务,这是一个成功的重要因素。
不论结果如何,只要努力过并且认真的去学习,那就一定有收获。
2、作品存在的问题及改进设想
(1)问题:
(41H)存放0832输出电压值,所以只有改变(41H)存储的值才能改变电机转速。
改进设想:
在程序中设置转速控制入口,初始化地址数值后,可通过键盘输入改变(41H)的值,改变0832输出电压值,从而改变直流电机的转速。
七、参考文献
【1】王琼单片机原理及应用实验教程(第2版)合肥工业大学出版社2013.8
【2】王琼单片机原理及应用(第2版)合肥工业大学出版社2013.6
【3】万福君 凌文玉等单片微机原理系统设计与开发应用中国科学技术大学出版社,1995.46-52.
【4】张毅坤,陈善久,裘雪红单片机原理及应用西安电子科技大学出版社2007.28~30
【5】刘涳主编毕业设计宝典西安电子科技大学出版社2008年