单片机课程设计总结(2)
山东大学物理学院单片机课程设计泉韵新声作者:吕畅华吕吕胡玉婷
山东大学物理学院
201*年单片机课程设计
总结报告
题目:泉韵新声
队员:吕畅胡玉婷华吕吕指导老师:李茂奎张兴成
付运旭
201*年6月15日
山东大学物理学院单片机课程设计泉韵新声作者:吕畅华吕吕胡玉婷
第一部分:整个过程中出现的问题及解决的方案。
1.1选题
开始的时候选题的难度比较大,选择的空间很大,看着这么多的题目,我们不知道该做什么题目,后来在经过咨询老师和师兄师姐们并搜集资料后,我们选择了这个题目。恰逢济南即将举办全运会,这次的课程设计就当做我们对全运会的献礼吧。1.2电动机组的选择
本设计需要较精确的控制,需要用配置较高的直流电机才能实现本设计的全部功能。开始的时候,我们只是买了电机,没有水管等配套器件,发现不好控制,经过李老师的指导,我们采用风窗洗涤器系统直流电机,电机运转平稳,精度也可以得到保证。1.3驱动电路的选择
刚开始的时候,我们不知道选择什么样的驱动电路,经过查阅资料,采用了驱动能力较强的驱动芯片L298,该芯片电压电流的范围宽,响应频率高,方便使用PWM调节电机,实现喷泉的功能。1.4电源的选择
我们的设计需要12V稳压电源,在选择电源的时候,我们考虑了使用变压器电源,但变压器电源具有如下两个缺点:
①效率低。由于变压器是一个“电磁电”的转换过程,避免不了存在铁损和铜损,效率低。
②输入范围窄。一般只有200V240V之间吧,小于这个范围,输出电压不够,大于这个范围,变压器可能就会烧毁。这个电压范围绝大多数的场合是够用的,不必去过多的考虑,再者变压器体积较开关电源大,笨重。
最后,我们决定使用开关电源。开关电源是相对线性电源而言的,线性电源是利用功率半导体器件的线性工作区,通过调节线性阻抗来达到调节输出的目的;而开关电源是利用功率半导体器件的饱和区通过调整它的开通时间或频率来达到调节输出的目的。其有如下优点:①效率较高,体积小。由于开关电源的电压控制是利用功率半导体
山东大学物理学院单片机课程设计泉韵新声作者:吕畅华吕吕胡玉婷
器件的饱和区通过调整他的开通时间或频率达到的,所以就不存在铁损和铜损,元器件的损耗可以忽略不计,比较变压器而言效率较高;由于它只有元器件和电路板,因而体积就会很小,重量也较轻。
②电压输入范围宽。一般可达到160V-270之间。1.5硬件的连接
在这次的设计中,我们的硬件出了很多问题,尤其是L298,我们就少了4个,我们总结经验,觉得可能是我们电路连接的过程中,出现了短路,我们仔细检查了电路,又重新焊接了一次开发板。但是还是没有什么效果。最后,我们买了插座,直接将L298插在面包板上,并用散热片帮助它散热,这样才做出了预计的效果。1.5调试中出现的问题
在调试中,我们出现了不少问题;例如:芯片烧掉了、泉水喷不起来等。每次出现问题,我们就认真的调试,查找问题,直到成功为止。
第二部分:团队管理的心得体会。
我们之所以称为是一个团队,是因为我们有共同的目标完
成好课程设计。团队成员之间要相互信任、相互帮助。但遇到困难时,要同心协力,不要相互推脱责任,更不能相互指责,我们应该心平气和的好好商量一下,这个问题到底该怎么解决。在团队的管理中,要充分照顾好每一个人的意见,对于一个问题,要集思广益,运用集体的智慧来完成它。
关于团队管理,我们有以下几点体会:
①每个成员都必须要有团队精神,能够有向心力,每个人都努力去做,这样才能彰显团队的力量。
②团队内部要有明确的分工,每个人负责什么任务,什么时候完成,这些都要细化,只有这样,才能各司其职,才能有很好的效率。③团队要有一个核心,我们认为这是很重要的。如果没有核心,那我们的团队就是一盘散沙,没有任何战斗力;相反,如果有三个核心,那就会出现谁也不服谁的局面,也就没有了向心力。
④成员之间要相互信任,相互帮助。我们既然组队了,那就是一个整体,我们要信任我们的队友,并在遇到困难的时候,相互帮助,这样我们的团队才能不断进步。
山东大学物理学院单片机课程设计泉韵新声作者:吕畅华吕吕胡玉婷
⑤成员之间要经常交流想法、意见等。在课程设计中,不能只是依靠一个人的力量去完成,我们要经常交流、讨论,集思广益,这样才能做出好作品。
⑥队员的配置要合理。每个人都各有所长,我们要扬长避短,就像在我们的团队里,华吕吕同学比较适合于焊接,而胡玉婷同学则比较喜欢做硬件的连接,所以我们团队也是这么分工的,避免资源的浪费。
⑦要有为了整体而奉献的精神。在一个团队中,每个人负责的任务是不同的,难易不同,多少更是不同,多做的人不要抱怨,要从大局出发,以团队为重。
⑧团队内部要有奖惩制度,这样才能使队员有动力,任务才能完成的更加出色,也避免了大家都不干活这种现象的出现。
⑨要有信心,相信我们始终都会做出来的,尤其在调试的时候非常重要,只有我们相信我们会做出来,我们才会有动力,才能成功。
第三部分:课程设计的心得体会。
在这一学期的单片机课程中,我们学到了许多关于单片机系统开
发的知识,从最开始选题到最后的结题,更使我们得到了充分的锻炼。虽然在这期间,我们也曾灰心,也曾茫然,也曾不知所措,从一开始的自信满满,到最后的紧张繁杂,所有的这些都令我们回味无穷,这已经成为了我们人生的一个宝藏。我想今后的学习和工作也是这样的,汗水见证着成功,我想十年过后,但我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,最先映入脑海里的就是这门课程吧,就是这些为了一个共同的目标,相互合作,共同奋斗的日子吧!
在这次的课程设计中,我们遇到了很多困难,过程很艰难,但是我们都克服了,这是对我们自己的肯定。我们也发现理论和实际的差别,书本上的知识固然重要,但是我们也需要学会使用它们,把他们运用到我们的课程设计中。
这次的单片机课程使我们学到了很多,不单单是课本上那些知识,更重要的是一些课本上没有但是有很重要的知识,像是团队合作精神,查找电路的故障等等。我们觉得这些无形之中学到的知识更加弥足珍贵!
最后,我们真心感谢李老师能够开设这样一门课程,虽然我们
山东大学物理学院单片机课程设计泉韵新声作者:吕畅华吕吕胡玉婷
付出了很多精力,但是觉得这是值得的,这门课使我所经历的第一个以这种方式考核的课程,它充满了挑战,给了我们无穷的动力,更让我们回味不已!
第四部分:团队的分工情况以及队员的贡献排序。
4.1分工情况
吕畅:软件编程、课程设计论文、课程设计总结以及最后的调试,
占0.36。
胡玉婷:硬件连接、网页制作以及最后的调试,占0.32。华吕吕:硬件焊接、PPT制作以及最后的调试,占0.32。4.2贡献排序
吕畅>胡玉婷=华吕吕
第五部分:课程改革的建议
经过这一学期的学习,我们觉得单片机这门课很好,让我们在设计中掌握课程,具有很强的实用性,另外它的考核方法也很特别,我很欣赏着这种考核方法,做出一个实际的作品比我们做多少道题都更具有生动性,更能考查我们的学习!对于这样的一门课程,我们的建议如下:
①单片机是一个很难的课程,而我们中的大多数又是第一次接触单片机,所以我们希望能够增加单片机课程的课时,可以让我们学到更多的有关单片机的知识,也便于我们课程设计的进行。②如果可能的话,可以编写一本具体的课本,现在的马老师编写的课本虽然很全面,但是并不是我们授课的顺序,而且老师在上课的时候讲了很多很有启发性的实例,课本上都没有,所以我们建议有一本和老师授课同步的教材。
③希望可以把这么一门有挑战性和创造性的课程推广到其它相关学院,例如软件学院、计算机学院、信息学院等,这样具有不同特长的学生就可以组队,也就能够作出来更好的作品。
④我们觉得这种授课方式非常的好,可以极大地提高学生的能力,并且我们希望这样的课程改革能够在我们学院的更多门课程中进行。
第六部分:单片机课程的总体总结
我是第一次遇到单片机这种授课方式和考核方法,起初我很害
山东大学物理学院单片机课程设计泉韵新声作者:吕畅华吕吕胡玉婷
怕自己做不出来东西,但是经过了这几个月的学习,能使我从完全不知道单片机是什么到完成了课程设计,我觉得很充实。在这几个月的时间中,我们学会了很多东西,收获了很多,而这些东西我在课本上根本就学不到,像是团队管理的经验、团队意识的提升和协调能力等等,这些都会让我们终身受益。我们看见了单片机的巨大应用市场,觉得这是一个非常有用的东西,学习它会很有助于我们日后的学习和工作。另外我们的团队经过这次的努力,开始凝聚成一个整体,我想在以后的日子里,我再回忆起这些泛着汗水的时光的时候,定然会被我们的团队感动,就像老师说的,很多年过后想起曾经一起睡地铺的兄弟,会有多么的感动!汗水,是我们努力的过程,更是成功的使者。最后,我要感谢所有帮助过我们的人,尤其是李老师和两位实验老师!最后,希望这样的课程能够继续下去,并不断地前进,帮助更多的学生了解单片机,并能够在使用中发现它的无穷魅力!
扩展阅读:单片机课程设计总结报告
单片机课程设计
频率计总结报告
姓名:陈艺端学号:0829201*
班级:电气0809
所在组:陈艺端白英杰
电气0809班0829201*陈艺端单片机课程设计频率计总结报告
【实验准备】在实验前,我通过上网、上图书馆查找了一些关于频率计的资料,结合单片机所学的中断和定时器的知识,并对电路板各个元器件、接线等的清楚认识,完成了对电路板仿真图的绘制,以及初步的程序,并实现了初步的仿真效果。【设计内容】
设计一个频率计。【设计要求】
分频段(高频、低频),在10k~20kHz范围做切换。
CPU为AT89S51,利用内部T0、T1的定时计数器或外部INT0中断功能来完成对输入的信号进行频率计数或脉宽计时,计数(计时)的频率结果通过6位七段LED数码管显示出来。数字式频率计原理框图:
【设计方案】一、实验原理:1、测频方式
利用单片机计数器T0和定时器T1中断。定时器T1中断产生闸门时间,在闸门时间Ts内,用计数器记录输入脉冲的个数N,从而计算出被测频率Fx=N/Ts。
第2页共22页
电气0809班0829201*陈艺端单片机课程设计频率计总结报告
2、测周方式
利用单片机外部中断INT0和定时器T1中断。定时器T1中断产生时标信号Ts,用外部中断INT0控制定时器T1的计数,计算出在被测信号的一个周期内定时器T1计得的数N,从而计算出被测频率Fx=NTs。
二、电路结构:
①NE555构成多谐振荡器,产生频率可调的方波信号;
②74HC74里的一个D触发器连成计数器,用来对555产生的方波分频;
③74HC14非门做驱动,防止产生的信号不能驱动单片机的I/O口;
第3页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
④方波信号连接在单片机的INT0和T0口上。
⑤单片机的P1口做字位,连接74HC245驱动数码管的共阴端;⑥P0口做字形,连接74HC573锁存器和74HC245驱动数码管的a~dp端。
三、测频测周转换的讨论以及试验参数:1、测频方式和测周方式的转换频率
依要求来说在10kHz~20kHz之间做切换。
2、转换频率过程中产生的问题
当被测信号频率与转换频率非常接近,并且抖动时,容易产生两种方式一直跳变的现象,进入死循环,可以利用迟滞比较器的原理进行解决。通常将测频方式和测周方式的转换频率设为程序判断测频还是测周的比较点,但为避免在转换频率附近产生死循环,设置两个比较点,分别为f1和f2,从高频测频方式向低频测周方式变化时,比较点为f1,从低频测周方式向高频测频方式变化时,比较点为f2,使f1电气0809班0829201*陈艺端单片机课程设计频率计总结报告
3、参数设定
根据以上讨论,测频方式的闸门周期要大于1/f1,并且越大测量结果越精确,但还要考虑到闸门周期太大会导致测量得到的脉冲数N过大,影响程序大小。同理,测周方式的时标周期要小于1/f2,并且越小越精确,同样要考虑到程序大小以及程序执行时间。
四、程序流程图⑴测频法:①主程序:
②T0中断子程序:②T1中断子程序:
开始中间变量初始化,定时计数器T0、T1初始化启动T1定时10ms,T0开始计数等待中断
中T0计数器溢出中断断返回,存储T0溢出次数的单继元自增1续计数
第5页共22页
电气0809班0829201*陈艺端单片机课程设计频率计总结报告
显示初始化(显示位数、字位初值、显示缓冲区起始地址)573锁存器使能端置1中断返回,继续定时和重新计数调用显示子程序,显示计数值判断1s定时是否到达停止计数,采集数据计数值由十六进制转化为十进制数查表,存储六个字形定时计数初值重置⑵测周法:①主程序:
开始
中间变量初始化,定时器T1初始化启动T1定时50us等待中断
第6页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
②T1定时子程序:定时器时间到中断返回,继续定时和重新计数判断INT0口是否为1脉冲计数单元自增1检测到INT0口为0时采集数据计数值由十六进制转化为十进制数查表,存储六个字形定时初值重置五、仿真图
第7页共22页
电气0809班0829201*陈艺端单片机课程设计频率计总结报告
可见,改变电阻值或电容值,即改变NE555输入方波的频率,仿真实现的数码管显示值与用频率计测量的理论值相差不大,基本满足设计要求,但还是存在一定的误差,可以加以改进,增加精确度。
说明:由于软件版本问题,没有可调节的滑动变阻器,于是,我用多选开关来代替,通过开关选择不同的电阻来模拟滑动变阻器滑片的移动。
第8页共22页
电气0809班0829201*陈艺端单片机课程设计频率计总结报告
七、总结
在去实验室前,我经过多番努力,将电路板上的电路用仿真软件画出,并且确保了每一条连线都包含了,芯片的每一个管脚都清楚的认识到是用来干什么的,怎么连接的,仿真时各个点将会出现什么情况。尔后,我又进行了初步的编程,将程序模块化,分为了主程序、中断子程序(测频和测周)、显示子程序、十六进制转化为十进制的子程序、延时子程序等,但在十六进制转化为十进制的子程序的编程过程中,我不是很了解怎么实现这个过程,导致未能完成该子程序的编写。
验收当天,我和我的组员在互相讨论了自己的编程思路后,综合了对方的意见,得到了初步的程序,但是在仿真过程中,还是存在诸多问题,我们合力讨论了很久,但还是有点问题,于是我们和另外一组一起商讨,在测频和测周的转换过程方面讨论了很久,还尝试了用双闸门的方法,来代替测频和测周的转换,但是结果还是不理想,尝试了烧程序看看电路板能否实现,但经过了一天的努力,我们还是未能实现所要的结果。临走前,我们询问老师,老师的意思是我们做得复杂了,想太多了,重心已经偏移了,于是,我们经过一个晚上的修改,初步定型了程序,第二天又到实验室去调试。
调试的时候发现显示出来的总是乱码,后用万用表测数码管,才发现电路板上的数码管接反了,于是我们将数码管重新插了一遍。编程时的值都是理论计算得到的值,调试时发现测得的频率和实际频率总有点差别,原因是忽略了程序中其他语句执行所需要的时间,而且一开始由于为将某些语句在等待中断的时间完成,导致仿真结果是一段时间显示一次,时延较长,细微修改定时器定时,并修改程序结果后,减小了测得值和实际值的差别,显示结果也较稳定。在烧程序的过程中出现了很多的问题,比如,接线的问题,芯片的问题等,我们第一天没能将课设验收完成,但我们不断地检查电路板和我们的程序,以及仿真图,不断地寻找问题所在,最终成功地将设计在电路板上实现出来。
六、实验程序①测频法:
ORG0000H
AJMPSTART
ORG000BH;T0中断入口AJMPT0INT
ORG001BH;T1中断入口AJMPT1INTORG0030HSTART:MOVSP,#70H
第9页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
MOVIE,#8AH;10001010B,开放T0、T1中断
MOVTMOD,#15H;00010101,T1定时,T0计数,允许T0溢出中断MOVTH1,#0ECH
MOVTL1,#78H;定时10msMOV20H,#100;100*10ms=1s
MOVTH0,#00HMOVTL0,#00H
MOV21H,#0MOV22H,#0
MOV23H,#0;存放采集到的频率
SETBTR1;开始计数SETBTR0WAIT:
AJMPWAIT;等待中断
T0INT:
INC23H;T0计数器溢出则23H单元自增1RETI
T1INT:;定时10ms产生中断MOVR2,#06;显示初始化MOVR4,#0FEH
MOVR1,#60H;显示缓冲区起始地址SETBP3.0
LOOP:MOVA,R4
MOVP1,A;字位MOVA,@R1
MOVP0,A;字形LCALLDELAY
INCR1MOVA,R4
RLA;字位左移MOVR4,A
DJNZR2,LOOP;判断6个数码管是否显示完
DJNZ20H,NEXT1;判断1s定时CLRTR1;停止计数CLRTR0
MOV20H,#100
MOV22H,TH0;1s时间到则采集数据MOV21H,TL0
第10页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
LCALLDISPLAY
MOVTH0,#00H;计数初值置0MOVTL0,#00H
NEXT1:MOVTH1,#0ECH;继续定时MOVTL1,#78HSETBTR1SETBTR0EXIT:RETI
DISPLAY:
MOVR0,#60H
MOVR1,#06H;对60H-65H单元清零NEXT2:MOV@R0,#0INCR0
DJNZR1,NEXT2
ZHUANHUAN:;进制转换MOVA,23HMOVB,#0AHDIVAB
MOV24H,A;存储第一位商
MOVA,B
MOV30H,22HANL30H,#0F0HADDA,30HSWAPA
MOVB,#0AHDIVAB
MOV25H,A;存储第二位商
MOVA,BSWAPA
ANL22H,#0FHADDA,22HMOVB,#0AHDIVAB
MOV26H,A;存储第三位商
MOVA,B
MOV30H,21HANL30H,#0F0HADDA,30HSWAPA
MOVB,#0AHDIVAB
MOV27H,A;存储第四位商
第11页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
MOVA,BSWAPA
ANL21H,#0FHADDA,21HMOVB,#0AHDIVAB
MOV28H,A;存储第五位商MOV50H,B;存储十进制数个位
MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB
MOV24H,A
MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB
MOV25H,A
MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB
MOV26H,A
MOVA,BSWAPAADDA,28HMOVB,#0AHDIVAB
MOV27H,AMOV51H,B
MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB
MOV24H,A
MOVA,BSWAPAADDA,26HMOVB,#0AH
;存储第一位商;存储第二位商;存储第三位商;存储第四位商;存储十进制数十位;存储第一位商第12页共22页
电气0809班0829201*陈艺端单片机课程设计频率计总结报告
DIVAB
MOV25H,A;存储第二位商
MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB
MOV26H,A;存储第三位商MOV52H,B;存储十进制数百位
MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB
MOV24H,A;存储第一位商
MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB
MOV25H,A;存储第二位商MOV53H,B;存储十进制数千位
MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB
MOV54H,B;存储十进制数万位MOV55H,A;存储十进制数十万位
MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TABNEXT3:MOVA,@R0
MOVCA,@A+DPTR;查表,字形INCR0INCR1
MOV@R1,ADJNZR2,NEXT3RET
TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HDELAY:MOV40H,#250LP0:NOP
第13页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
DJNZ40H,LP0RETEND
②测周法:
ORG0000HLJMPMAINORG0100H
MAIN:MOVDPTR,#0000H
SETBC
MOVP3.4,CMOV23H,#00HF1:MOVC,P3.4
JCF1
F2:MOVC,P3.4
JNCF2
F3:MOV22H,DPH
MOV21H,DPLMOVA,#0FFHCJNEA,22H,JIACJNEA,21H,JIAINC23H
JIA:INCDPTR
MOVC,P3.4JCF3
F4:MOV22H,DPH
MOV21H,DPLMOVA,#0FFHCJNEA,22H,JIA1CJNEA,21H,JIA1INC23H
JIA1:INCDPTR
MOVC,P3.4JNCF4
MOV22H,DPHMOV21H,DPL
ACALLDISPLAY
MOV21H,#0MOV22H,#0MOV23H,#0
LJMPMAIN
DISPLAY:MOVR0,#60H
MOVR1,#06HNEXT2:MOV@R0,#0
INCR0
DJNZR1,NEXT2
第14页;对60H-65H单元清零
共22页
电气0809班0829201*陈艺端单片机课程设计频率计总结报告
ZHUANHUAN:;进制转换MOVA,23HMOVB,#0AHDIVAB
MOV24H,A;存储第一位商
MOVA,B
MOV30H,22HANL30H,#0F0HADDA,30HSWAPA
MOVB,#0AHDIVAB
MOV25H,A;存储第二位商
MOVA,BSWAPA
ANL22H,#0FHADDA,22HMOVB,#0AHDIVAB
MOV26H,A;存储第三位商
MOVA,B
MOV30H,21HANL30H,#0F0HADDA,30HSWAPA
MOVB,#0AHDIVAB
MOV27H,A;存储第四位商
MOVA,BSWAPA
ANL21H,#0FHADDA,21HMOVB,#0AHDIVAB
MOV28H,A;存储第五位商MOV50H,B;存储十进制数个位
MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB
MOV24H,A;存储第一位商MOVA,BSWAPA
第15页共22页wenku_16({"font":{"1f93e6c0bb4cf7ec4afed0a00050010":"宋体","1f93e6c0bb4cf7ec4afed0a00060010":"TimesNewRoman"},"style":[{"t":"style","c":[1,4,0],"s":{"font-size":"15.84"}},{"t":"style","c":[1],"s":{"font-family":"1f93e6c0bb4cf7ec4afed0a00050010"}},{"t":"style","c":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,2],"s":{"color":"#00000电气0809班0829201*陈艺端单片机课程设计频率计总结报告
MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB
MOV25H,A;存储第二位商MOV53H,B;存储十进制数千位
MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB
MOV54H,B;存储十进制数万位MOV55H,A;存储十进制数十万位
MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TABNEXT3:MOVA,@R0
MOVCA,@A+DPTRINCR0INCR1
MOV@R1,ADJNZR2,NEXT3
MOVR2,#06MOVR4,#0FEHMOVR1,#60HSETBP3.0
LOOP:MOVA,R4
MOVP1,AMOVA,@R1MOVP0,A
LCALLDELAY
INCR1MOVA,R4RLA
MOVR4,A
DJNZR2,LOOP
RET
TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HDELAY:MOV40H,#250LP0:NOP
DJNZ40H,LP0RET
第17页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
END
十六进制转化为十进制的方法:
第一步将最高位的高半字节提出来,除以10,把商存储起来,余数与最高位的低半字节组合成一个字节,再除以10,再存储商,余数以此类推,直到最后一次计算得到的余数即为十进制数的个位;第二步把第一步存储的商组合成一个字节,依次除以10,仍然把每次得到的商存储起来,以此类推最后一次得到的余数即为十进制数的十位;以后也是以此类推得到十进制数的百位、千位……以上算法必须要注意的一个问题是,每次得到的余数与低位的半字节组合成一个字节时,余数必须放在该字节的高半字节,否则计算错误。该本次频率计系待测的时钟信号的最高频率为460800Hz,对应的十六进制数为70800H,这里就以70800H转换为十进制数为例来说明这种算法。
第一步:用7H除以10,商0H余7H,把商0存储在24H单元,余数7H与下一个字节08H的高半字节0H组合成一个字节70H。70H除以10,商BH余2H,把商BH存储在25H单元,余数2H与8H组合成一个字节28H。28H除以10,商4H余0H,把商4H存储在26H单元,余数0H与0H组合成一个字节00H。00H除以10,商0H余0H,把商0H存储在27H单元,余数0H与0H组合成一个字节00H。00H除以10,商0H余0H,把商0H存储在28H单元,余数0即为所需十进制数的个位。
第二步:把存储在24H与25H单元的商组合成一个字节0BH。0BH除以10,同第一步,存储商,余数与下一个商组合成一个字节,再除以10,一次类推得到十进制数的十位0。
第三步:方法同第二步,得到十进制数的百位8。第四步:方法同第三步,得到十进制数的千位0。
第五步:方法同第四步,得到十进制数的万位6和十万位4。
最后得到了十进制数460800。图5.3详细的展示了这种进制转换算法的过程。
第18页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
个位为0(23H)=07H(22H)=08H(21H)=00H07H/10商0余770H/10商B余228H/10商4余000H/10商0余000H/10商0余0
0BH/10商1余114H/10商2余000H/10商0余000H/10商0余0十位为012H/10商1余880H/10商C余880H/10商C余8百位为81CH/10商2余88CH/10商E余0千位为02E/10商4余6万位为6十万位为4③双闸门法:
ORG0000H
AJMPSTART
ORG000BH;T0中断入口AJMPT0INT
ORG001BH;T1中断入口AJMPT1INTORG0030HSTART:MOVSP,#70H
MOVIE,#8AH;10001010B,开放T0、T1中断MOVTMOD,#15H;00010101B,T1定时,T0计数MOVTH1,#3CH
MOVTL1,#0B0H;定时100msMOV20H,#100;100*100ms=10sMOV24H,#10MOVTH0,#00HMOVTL0,#00HMOV21H,#0MOV22H,#0
MOV23H,#0;存放采集到的频率SETBTR1;开始计数SETBTR0
第19页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
WAIT:AJMPWAIT;等待中断MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TAB
NEXT30:MOVA,@R0;50H55H查表,字形存在60H65HMOVCA,@A+DPTRINCR0INCR1
MOV@R1,A
DJNZR2,NEXT30;6次
MOVR6,#100;循环显示100次MOV66H,#3FH;最高位显示0KOP0:MOVR2,#06
MOVR4,#0FEH;字位初值MOVR1,#61H;乘以10SETBP3.0
LOOP0:MOVA,R4;字位MOVP1,A
MOVA,@R1;字形MOVP0,A
LCALLDELAYINCR1MOVA,R4RLA
MOVR4,A
DJNZR2,LOOP0DJNZR6,KOP0
T0INT:INC23H;计数器溢出则23H单元自增1RETI
T1INT:DJNZ20H,NEXT1;定时100ms产生中断CLRTR1;停止计数CLRTR0
MOV20H,#100
MOV22H,TH0;10s时间到则采集数据MOV21H,TL0CLRC
MOVA,22HSUBBA,#30HJNCCEPINGCLRC
MOVA,23HSUBBA,#01HJNCCEPINGMOVTH0,#00HMOVTL0,#00H
CEZHOU:LCALLDISPLAY0LJMPKK
第20页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
CEPING:LCALLDISPLAY1KK:MOV21H,#0MOV22H,#0MOV23H,#0
NEXT1:MOVTH1,#3CH;继续定时MOVTL1,#0B0HSETBTR1SETBTR0EXIT:RETI
DISPLAY0:MOVR0,#60H
MOVR1,#07H;对60H-66H单元清零NEXT20:MOV@R0,#0INCR0
DJNZR1,NEXT20ZHUANHUAN0:;进制转换
;////////////////////////////////////////////////////////////////////////////////////////////DISPLAY1:
MOVR0,#60H
MOVR1,#06H;对60H-65H单元清零
NEXT2:MOV@R0,#0
INCR0
DJNZR1,NEXT2
ZHUANHUAN:;进制转换
MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TAB
NEXT3:MOVA,@R0
MOVCA,@A+DPTRINCR0INCR1
MOV@R1,ADJNZR2,NEXT3MOVR6,#20
KOP:MOVR2,#06
MOVR4,#0FEHMOVR1,#60HSETBP3.0LOOP:MOVA,R4
MOVP1,AMOVA,@R1MOVP0,A
LCALLDELAYINCR1
MOVA,R4RLA
第21页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告
MOVR4,A
DJNZR2,LOOPDJNZR6,KOPRET
TAB:DB03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HDELAY:MOV40H,#250LP0:NOP
DJNZ40H,LP0RETEND
第22页共22页
友情提示:本文中关于《单片机课程设计总结(2)》给出的范例仅供您参考拓展思维使用,单片机课程设计总结(2):该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。