华科单片机课设直流电机转速测量与显示Word文档格式.docx

上传人:b****6 文档编号:19394088 上传时间:2023-01-05 格式:DOCX 页数:10 大小:138.64KB
下载 相关 举报
华科单片机课设直流电机转速测量与显示Word文档格式.docx_第1页
第1页 / 共10页
华科单片机课设直流电机转速测量与显示Word文档格式.docx_第2页
第2页 / 共10页
华科单片机课设直流电机转速测量与显示Word文档格式.docx_第3页
第3页 / 共10页
华科单片机课设直流电机转速测量与显示Word文档格式.docx_第4页
第4页 / 共10页
华科单片机课设直流电机转速测量与显示Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

华科单片机课设直流电机转速测量与显示Word文档格式.docx

《华科单片机课设直流电机转速测量与显示Word文档格式.docx》由会员分享,可在线阅读,更多相关《华科单片机课设直流电机转速测量与显示Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

华科单片机课设直流电机转速测量与显示Word文档格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1