单片机课程设计总结
《单片机技术实践》课程设计总结
本课程实践的目的是,掌握单片机测量模拟量和数字量的测量方法,掌握单片机的外部控制方法,掌握单片机的显示器、键盘的扩展方法。通过学习和设计为毕业设计和科研开发打下良好的基础。本课程以MCS-51系列单片机为机型,介绍了单片机的基础知识、基本原理结构、51指令系统、中断、定时器/计数器、串行通信、C51程序设计、单片机的扩展、应用实例及抗干扰设计等知识。学生通过学习可较全面的掌握单片机的应用技术。单片机实验室仪器共40台组,每人一题,本次课程设计共5个题目,每个学生抽签选择题目,时间为一周。5个题目为:
1.数字电压表的设计2.数字频率计的设计3.外部输入正脉宽度测量4.正弦信号发生器的设计5.密码锁控制器的设计收获有:
1.将理论教学与实践相结合,使学生对于单片机的实际应用有了较深刻的认识;
2.使学生对单片机应用系统设计的各种方法有所了解;3.通过分工合作,培养学生之间的合作精神;
4.让学生熟悉电子系统设计的全过程;提高学生对设计课题的分析能力、编程能力及解决实际问题的综合能力。5.通过实践,增强了下阶段的学习信心。为毕业设计奠定了基础。
存在的问题:
1.对于基础知识掌握的不牢固,特别是对于单片机的前项通道设计的理解的不够,反映出模拟电路掌握的不好。
2.缺乏对于电子系统设计测试的概念。
3.在所教授的3个班中,B05211班和B05212班的课程实践效果较好,每个班都有6-7人学习态度认真,积极向上,能吃苦,在班级里起到了较好的带头作用。而B05215的学生却缺少这样的人,存在着普遍实践动手能力较差的问题。
201*.
扩展阅读:单片机课程设计总结报告
单片机课程设计
频率计总结报告
姓名:陈艺端学号: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页
友情提示:本文中关于《单片机课程设计总结》给出的范例仅供您参考拓展思维使用,单片机课程设计总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。