字节除三字节商为两字节(最高转速36000r/min足够)的程序。
为数码管能够显示出来,需将二进制转换为十进制,在将十进制转换为非压缩BCD码后,才能调用查表程序,最后送显示。
3.1.2 单片机转速计算程序
由于本次设计的系统要实现的功能是将霍尔传感器的信号送到单片机的外部中断口,再对周期方波进行内部计数,调用计算程序把转速测出来。可以说是核心部分,流程图如图所示:
开 始 被除数初始化 读取定时值 调用除法程序 返 回 图3-2 计算程序流程图
计算程序中又再次调用了除法程序,这里的除法为四字节除三字节商为两
字节,除法的程序的编程思想可以和手工计算的除法相似,比较减法的思想,流程图如图3-3所示具体程序见附录。
3.1.3 二-十进制转换程序
计算程序计算出来的数据为二进制,存到50H、51H单元中以便发送程序中调用传送数据到计算机,计算机可识别二进制,然而,我们需要在LED上显示,查表程序需要拆分的BCD码,所以二进制必须先转换成BCD后才能拆分。这里介绍将(R2R3)中的16位二进制数转换为压缩BCD码十进制整数送R4、R5、R6。
除 法 移位次数 计数器 被除数左移1位 被除数> 除数
图3-3除法程序流程图
按照数制转换方法可以画出流程图
开始 0---R4、R5、R6 16----R7 C(R2R3)左移1位(移出位bi在C中)
图 3-4 双字节整数二翻十程序流程图
单片机显示部分可以用来显示计算出来的数据的。在程序设计中,在
AT89C51RAM存贮器中的四个显示缓冲器单元30H-34H,分别存放着由计算出来的转速的BCD码进行拆分后的非压缩BCD码数据,AT89C51的P1口扫描输出总是只有一位为低电平、其它位为高电平,AT89C51的P0口相应位的显示数据的段数据,使该位显示出一个字符,其它们为暗,依次地改变P1口输出为低高的位,P0口输出对应的段数据,5位LED显示器就显示出由缓冲器中显示数据所确定的字符。
显示部分程序分为两部分:十进制BCD转换成非压缩BCD码;查表程序显示数据。
双字节整数拆分程序流程图如图3-5:
R6与 0F0H相与交换后送33H R5与0FH相与后送32H R5与 0F0H相与交换后送31H 高字节R4送30H 开 始
返 回 R6与0FH相与后送34H 图 3-5双字节整数拆分程序流程图
3.2 程序设计
根据以上设计思路和各个模块的流程图编写出本次毕业设计的程序,完成程序设计的任务,写出初始的程序后,在硬件上运行程序,进行上机调试,调试的具体方法在下章进行详细的叙述。
本文设计的测速系统,是软硬结合的系统,核心部分是主体硬件,而运行在单片机上的软件程序则是完成控制硬件运行、测速计算以及显示控制等工作的主体。
本章的主要内容是说明了软件设计的思想,给出了系统软件的主体流程图,以及各个功能模块的流程图,用以说明各个模块的设计思想。
INC R0 ,A=(R1)
开始 30H---R0,表首地址----DPTR,(R1)=0FEH (R0)赋值给A A+DPTR赋值给P0 (R1)=P1,(R1)=A,RL A N (R1)=0DFH?
相关推荐: