单片机课程设计。
频率计。总结报告。
姓名:陈艺端
学号:08292003
班级:电气0809
所在组: 陈艺端。
白英杰。实验准备】
在实验前,我通过上网、上图书馆查找了一些关于频率计的资料,结合单片机所学的中断和定时器的知识,并对电路板各个元器件、接线等的清楚认识,完成了对电路板**图的绘制,以及初步的程序,并实现了初步的**效果。
设计内容】设计一个频率计。
设计要求】分频段(高频、低频),在10k~20khz范围做切换。
cpu为at89s51,利用内部t0、t1的定时计数器或外部int0中断功能来完成对输入的信号进行频率计数或脉宽计时,计数(计时)的频率结果通过6位七段led数码管显示出来。
数字式频率计原理框图:
设计方案】一、实验原理:
1、测频方式。
利用单片机计数器t0和定时器t1中断。定时器t1中断产生闸门时间,在闸门时间ts内,用计数器记录输入脉冲的个数n,从而计算出被测频率fx =n/ts。
2、测周方式。
利用单片机外部中断int0和定时器t1中断。定时器t1中断产生时标信号ts,用外部中断int0控制定时器t1的计数,计算出在被测信号的一个周期内定时器t1计得的数n,从而计算出被测频率fx =nts。
二、电路结构:
ne555构成多谐振荡器,产生频率可调的方波信号;
74hc74里的一个d触发器连成计数器,用来对555产生的方波分频;
74hc14非门做驱动,防止产生的信号不能驱动单片机的i/o口;
方波信号连接在单片机的int0和t0口上。
单片机的p1口做字位,连接74hc245驱动数码管的共阴端;
⑥ p0口做字形,连接74hc573锁存器和74hc245驱动数码管的a~dp端。
三、测频测周转换的讨论以及试验参数:
1、测频方式和测周方式的转换频率。
依要求来说在10khz~20khz之间做切换。
2、转换频率过程中产生的问题。
当被测信号频率与转换频率非常接近,并且抖动时,容易产生两种方式一直跳变的现象,进入死循环,可以利用迟滞比较器的原理进行解决。通常将测频方式和测周方式的转换频率设为程序判断测频还是测周的比较点,但为避免在转换频率附近产生死循环,设置两个比较点,分别为f1和f2,从高频测频方式向低频测周方式变化时,比较点为f1,从低频测周方式向高频测频方式变化时,比较点为f2,使f13、参数设定。
根据以上讨论,测频方式的闸门周期要大于1/f1,并且越大测量结果越精确,但还要考虑到闸门周期太大会导致测量得到的脉冲数n过大,影响程序大小。同理,测周方式的时标周期要小于1/f2,并且越小越精确,同样要考虑到程序大小以及程序执行时间。
四、程序流程图。
测频法: 主程序:
t0中断子程序:
t1中断子程序:
测周法: 主程序:
t1定时子程序:
五、**图。
可见,改变电阻值或电容值,即改变ne555输入方波的频率,**实现的数码管显示值与用频率计测量的理论值相差不大,基本满足设计要求,但还是存在一定的误差,可以加以改进,增加精确度。
说明:由于软件版本问题,没有可调节的滑动变阻器,于是,我用多选开关来代替,通过开关选择不同的电阻来模拟滑动变阻器滑片的移动。
七、总结。在去实验室前,我经过多番努力,将电路板上的电路用**软件画出,并且确保了每一条连线都包含了,芯片的每一个管脚都清楚的认识到是用来干什么的,怎么连接的,**时各个点将会出现什么情况。尔后,我又进行了初步的编程,将程序模块化,分为了主程序、中断子程序(测频和测周)、显示子程序、十六进制转化为十进制的子程序、延时子程序等,但在十六进制转化为十进制的子程序的编程过程中,我不是很了解怎么实现这个过程,导致未能完成该子程序的编写。
验收当天,我和我的组员在互相讨论了自己的编程思路后,综合了对方的意见,得到了初步的程序,但是在**过程中,还是存在诸多问题,我们合力讨论了很久,但还是有点问题,于是我们和另外一组一起商讨,在测频和测周的转换过程方面讨论了很久,还尝试了用双闸门的方法,来代替测频和测周的转换,但是结果还是不理想,尝试了烧程序看看电路板能否实现,但经过了一天的努力,我们还是未能实现所要的结果。临走前,我们询问老师,老师的意思是我们做得复杂了,想太多了,重心已经偏移了,于是,我们经过一个晚上的修改,初步定型了程序,第二天又到实验室去调试。
调试的时候发现显示出来的总是乱码,后用万用表测数码管,才发现电路板上的数码管接反了,于是我们将数码管重新插了一遍。
编程时的值都是理论计算得到的值,调试时发现测得的频率和实际频率总有点差别,原因是忽略了程序中其他语句执行所需要的时间,而且一开始由于为将某些语句在等待中断的时间完成,导致**结果是一段时间显示一次,时延较长,细微修改定时器定时,并修改程序结果后,减小了测得值和实际值的差别,显示结果也较稳定。
在烧程序的过程**现了很多的问题,比如,接线的问题,芯片的问题等,我们第一天没能将课设验收完成,但我们不断地检查电路板和我们的程序,以及**图,不断地寻找问题所在,最终成功地将设计在电路板上实现出来。
六、实验程序。
测频法:org 0000h
ajmp start
org 000bh ;t0中断入口。
ajmp t0int
org 001bh ;t1中断入口。
ajmp t1int
org 0030h
start: mov sp,#70h
mov ie,#8ah10001010b,开放t0、t1中断。
mov tmod,#15h ;00010101,t1定时,t0计数,允许t0溢出中断。
mov th1,#0ech
mov tl1,#78h ;定时10ms
mov 20h,#100 ;100*10ms=1s
mov th0,#00h
mov tl0,#00h
mov 21h,#
mov 22h,#
mov 23h,#0 ;存放采集到的频率。
setb tr1 ;开始计数。
setb tr0
wait:ajmp wait ;等待中断。
t0int:
inc 23h ;t0计数器溢出则23h单元自增1
retit1int定时10ms产生中断。
mov r2,#06 ;显示初始化。
mov r4,#0feh
mov r1,#60h ;显示缓冲区起始地址。
setb p3.0
loop: mov a,r4
mov p1,a ;字位。
mov a,@r1
mov p0,a ;字形。
lcall delay
inc r1
mov a,r4
rl a ;字位左移。
mov r4,a
djnz r2,loop ;判断6个数码管是否显示完。
djnz 20h,next1 ;判断1s定时。
clr tr1 ;停止计数。
clr tr0
mov 20h,#
mov 22h,th0 ;1s时间到则采集数据。
mov 21h,tl0
lcall display
mov th0,#00h ;计数初值置0
mov tl0,#00h
next1: mov th1,#0ech ;继续定时。
mov tl1,#78h
setb tr1
setb tr0
exit: reti
display:
mov r0,#60h
mov r1,#06h ;对60h-65h单元清零。
next2: mov @r0,#
inc r0
djnz r1,next2
zhuanhuan进制转换。
mov a,23h
mov b,#0ah
div ab
mov 24h,a ;存储第一位商。
mov a,b
mov 30h,22h
anl 30h,#0f0h
add a,30h
swap a
mov b,#0ah
div ab
mov 25h,a ;存储第二位商。
mov a,b
swap a
anl 22h,#0fh
add a,22h
mov b,#0ah
div ab
mov 26h,a ;存储第三位商。
mov a,b
mov 30h,21h
anl 30h,#0f0h
add a,30h
单片机课程设计报告
单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....
单片机课程设计报告
韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...
单片机课程设计报告
南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...