华科单片机课设直流电机转速测量与显示Word文档格式.docx
- 文档编号:19394088
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:10
- 大小:138.64KB
华科单片机课设直流电机转速测量与显示Word文档格式.docx
《华科单片机课设直流电机转速测量与显示Word文档格式.docx》由会员分享,可在线阅读,更多相关《华科单片机课设直流电机转速测量与显示Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
LM339比较器电路将正弦波变成正方波,输入到单片机的P3.5(T1)口,计数器T1计数。
选用4个共阴极数码管,复用单片机P0口,选用两片74HC574分别锁存位选和段选信号用来显示结果。
系统电路图见附录一(用正弦信号代替电机)。
二、软件设计
主程序流程图:
显示子程序流程图:
数据处理子程序:
定时器T0中断子程序:
软件代码见附录二。
结束语
本次设计将模拟电子电路和单片机的知识相结合,对自己所学知识试一次很好的实践机会。
因为我自己对这两门课都比较熟,而且也有相关经验,器件选择没有任何困难,实验室给我们创造了很好的硬件条件,电路板元件齐全。
程序上我们尽量多的借鉴了现有的子程序,节省了大量时间,主要的精力都放在对程序时序的调节和硬件调试上面,最终顺利完成设计,测试的时候能随着频率的变化实时显示,误差在1Hz左右。
在此次的设计的过程中更进一步地熟悉了芯片的结构及掌握了各种硬件电路的工作原理和其具体的使用方法。
也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。
还有一个很大的收获就是接触了Proteus这个非常方便的用来仿真单片机的软件,极大地方便了我们的设计,不用一直呆在实验室,不用担心硬件的问题。
这次实验设计题目较为简单,虽然完成了要求,但是还是留下了一点遗憾。
在程序编写过程中,关于数据处理的部分用汇编语言编写繁复冗长,远远不如用C51简明,体会到了C51的优点。
可惜自己从来没用过C51,希望以后能多加学习。
最后感谢帮助我解决问题的老师和同学,真诚的说声谢谢!
参考文献
[1]康华光主编.电子技术基础(第四版).北京:
高等教育出版社,1999
[2]汪建.单片机原理及应用技术.武汉:
华中科技大学出版社,2012
附录一:
附录二:
D_DAT0EQU50H
D_DAT1EQUD_DAT0+1
D_DAT2EQUD_DAT1+1
D_DAT3EQUD_DAT2+1
H_DAT0EQUD_DAT3+1
H_DAT1EQUH_DAT0+1
ORG0000H
AJMPMAIN
ORG000BH
AJMPINT_T0
ORG0080H
MAIN:
MOVSP,#30H;
初始化堆栈指针
MOVP0,#0
CLRP1.1;
初始化有关I/O口
CLRP1.2
MOVR0,#00H;
初始化显示指针寄存器
;
R0指向第一位显示数字
MOVR1,#01H;
初始化需点亮数码管位置代码
MOVR2,#14H;
定时20个0.05秒
MOVTMOD,#51H
MOVTH0,#3CH;
置定时器初值
MOVTL0,#0B0H
MOVTH1,#00H;
置计数器初值
MOVTL1,#00H
SETBTR0;
启动定时
SETBTR1;
启动计数
SETBET0
SETBEA
DISPLAY:
MOVR0,D_DAT3;
逐位显示
MOVR1,#01H
LCALLDISP
MOVR0,D_DAT2
MOVR1,#02H
MOVR0,D_DAT1
MOVR1,#04H
MOVR0,D_DAT0
MOVR1,#08H
AJMPDISPLAY;
循环执行显示
;
******************************************************
通过574显示6位数字子程序
*****************************************************
DISP:
MOVA,R1;
取位代码
MOVP0,A;
位代码送P0口
SETBP1.2
NOP
CLRP1.2;
产生一个锁存脉冲,锁存位代码
MOVA,R0;
取需显示的数字
MOVDPTR,#DISPD;
装载笔画编码表首地址
MOVCA,@A+DPTR;
取需显示数字笔画代码
笔画代码送到P0口
SETBP1.1
产生一个锁存脉冲,锁存笔画代码
DELAY:
MOVR7,#40H
DELY1:
MOVR6,#0FH
DELY2:
DJNZR6,$;
$代表当前行
DJNZR7,DELY1
RET
HTD:
MOVD_DAT3,#00H;
将结果千位清0
MOVD_DAT2,#00H
MOVD_DAT1,#00H
MOVD_DAT0,#00H
H1000:
CLRC;
进位位C清0
MOVA,H_DAT0;
源数据低位装载到累加器A中
MOVR6,A;
备份源数值低位到寄存器R6中
SUBBA,#0E8H;
源数值低位减去1000的低位0E8H
MOVH_DAT0,A;
余数存回到源数值低位存储单元
MOVA,H_DAT1;
源数值高位装载到累加器A中
MOVR7,A;
备份源数值高位到寄存器R7中
SUBBA,#03H;
源数值高位带借位减1000的高位03H
MOVH_DAT1,A;
INCD_DAT3;
千位增1
JNCH1000;
如果没有借位则利用余数循环再减
有借位表明为最后一次无效减
程序顺序执行,应还原最后一次修改值
MOVH_DAT0,R6
MOVH_DAT1,R7;
用备份值作为新的源数值(余数)
DECD_DAT3;
千位数减1,去掉最后一次无效减的影响
H100:
源数值低位装载到累加器A中
清0进位位C
SUBBA,#100;
减去100
存回余数低位
取源数值高位
SUBBA,#00H;
减100的高位0,实际上是减去借位位
存回余数高位
JCH10;
有借位则跳到下一步继续运算
INCD_DAT2;
没有借位,百位增1
AJMPH100;
没有借位继续减
注意本轮循环中最后一次减时百位未增1
所以不存在还原的问题
进入下一轮时,源数值(余数)都在R6中
H10:
CLRC
MOVA,R6;
源数值(低位)装载到累加器A中
到此源数值高位已经为0,不用再参加计算
MOVD_DAT0,A;
存回源数值低位
如果是最后一次减,则此值即为个位
SUBBA,#10;
减去10
保存余数
JCH1;
有借位,运算结束
INCD_DAT1;
没有借位,十位增1
LJMPH10;
H1:
INT_T0:
MOVTH0,#3CH;
置定时初值
DJNZR2,RETURN;
R2不等于0则转移
MOVR2,#14H
CLRTR1;
停止计数
CLRTR0
MOVH_DAT0,TL1;
TL1值送累加器A
MOVH_DAT1,TH1;
LCALLHTD
SETBTR0;
RETURN:
RETI
数字笔画代码表
0123456789熄
DISPD:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,0
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 直流电机 转速 测量 显示