公文素材库 首页

单片机课程设计总结

时间:2019-05-29 21:39:41 网站:公文素材库

单片机课程设计总结

单片机课程设计心得体会:

这个学期的单片机课已经早早的上完了,但是理论纯属理论,没有与实践的结合总让我们学的不踏实,感觉没有达到学以致用的效果。所庆幸的是在课程介绍考试完之后,老师给我们安排了这次单片机课程设计,给了我们学以致用的做好的实践。

关于这次课程设计,我们花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等,在摸索中学习,在摸索中成长,在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获,在真正设计之前我们做了相当丰富的准备,首先巩固一下课程理论,再一遍熟悉课程知识的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的的软件流程图之后才着手设计。在设计程序时,我们不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;养成注释程序的好习惯是非常必要的,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也能为资料的保存和交流提供了方便;我觉得在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计又出错了。

除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。

此次的设计,其实也是我们所学知识的一次综合运用,让我深深的认识到了学习单片机要有一定的基础,要有电子技术方面的数字电路和模拟电路等方面的理论基础,特别是数字电路;也要有编程语言的汇编语言或C语言。要想成为单片机高手,我们首先要学好汇编语言,然后转入C语言学习,所以我们不能学到后面就忘了前面的知识,更应该将所学的知识紧紧的结合在一起,综合运用,所谓设计,就是要求创新,只有将知识综合运用起来才能真正的设计好。

扩展阅读:单片机课程设计总结报告

单片机课程设计

频率计总结报告

姓名:陈艺端学号: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页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

ADDA,26HMOVB,#0AHDIVAB

MOV25H,A;存储第二位商

MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB

MOV26H,A;存储第三位商

MOVA,BSWAPAADDA,28HMOVB,#0AHDIVAB

MOV27H,A;存储第四位商MOV51H,B;存储十进制数十位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商

MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB

MOV25H,A;存储第二位商

MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB

MOV26H,A;存储第三位商MOV52H,B;存储十进制数百位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商

第16页共22页电气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页

友情提示:本文中关于《单片机课程设计总结》给出的范例仅供您参考拓展思维使用,单片机课程设计总结:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


单片机课程设计总结
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/743463.html
相关阅读
最近更新
推荐专题