单片机测电容实验.doc
一、实验目的:
1,熟悉MCU51单片机的基本工作原理和组成结构;
2,掌握汇编语言,能用汇编语言编写简单程序;
3,以实验板为基础用MCU51单片机系统实现测量电容功能
二、实验要求:
1.频率值能循环不断地被测量读取;
2.测量结果显示在外部LCD屏上;
3.利用本设计测量102、103、104三个电容的容值。
三、实验原理
原理电路:555多谐振荡电路
由555定时器组成的多谐振荡器如左图所示,其中R1、R2和电容C为外接元件。其工作波如右图所示。
电容充电时,定时器输出,电容放电时,0,电容不断地进行充、放电,输出端便获得矩形波。多谐振荡器无外部信号输入,却能输出矩形波,
其实质是将直流形式的电能变为矩形波形式的电能。
振荡周期。为电容充电时间,为电容放电时间。
充电时间
放电时间
矩形波的振荡周期
因此改变、和电容C的值,便可改变矩形波的周期和频率。
由此得到本实验的R1=R2=20K
所以我们发现,通过测量该振荡器的频率,通过逆变换就可以得到待测的电容C。
四、实验分析:
整个程序可以采用自底向上的,模块化的设计思想进行设计,即一个一个功能模块进行设计调试,完成后再组合完整,其中可细分为以下几个模块:
eq\o\ac(○,1)外部中断计数:定时/计数器T0和T1的工作方式设置,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=11.0592MHz,对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,采用定时50ms,共定时20次,即可完成1秒的定时功能,每定时1秒(0.1秒,10秒)中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理,送到LCD显示;
eq\o\ac(○,2)数据处理:具体分析见实验原理。
eq\o\ac(○,3)LCD显示输出:控制器接收来着来自数据总线DB0~DB7和E,R/W,RS三个输入控制端与MPU接口,并从CGROM中找到欲显示的字符的字符码,送入DDRAM,在LCD显示屏上与DDRAM存储单元对应的规定位置显示出该字符;
五、实验过程:
1,主程序流程图如下:
其中计时子程序采用中断方式。
2.频率电容换算
由于采用的555多谐振荡电路计算公式不是准确的,只是一个估计出来的公式,为了调整,我们采用了查表法。
六、设计感想:
在查找了大量资料后终于完成了此次单片机频率计的实验任务,实现了实验要求中的各项功能。通过这次实验,我加深了对51单片机的工作原理和内部组成结构及LCD液晶显示器件的理解,熟悉用汇编语言编写简单的程序,掌握了单片机程序调试的基本方法,提高了自己的编程能力。
此次实验相对前一次数字时钟的实验较为简单,但对了新内容LCD的使用,通过这次单片机的实验我收获了很多,在前次实验的基础上进一步加深了单片机知识的学习
后附:实验程序源代码
ORG0000H
AJMPSTART
ORG000BH
JMPINTERUPT_T0 ;计数中断
ORG001BH
JMPINTERUPT_T1 ;定时1秒中断
CAP1 EQU 41H
CAP2 EQU 42H
CAP3 EQU 43H
CAP4 EQU 44H
CAP5 EQU 45H
CAPH EQU 46H
CAPL EQU 47H
ORG0100H
START:;初始化部分
MOVSP,#90H
MOVTMOD,#15H;Timer0和Timer1工作于模式
01且Timer0处于计数状态
SETBEA
SETBET0
SETBET1
MOVIP,#08H;中断优先级控制
MOV38H,#00H;计数器高八位辅助进位
MOVTH0,#00H
MOVTL0,#00H
MOVTH1,#4CH
MOVTL1,#08H
MOV3EH,#00H
MOVR3,#0
MOVR4,#0
MOVR5,#0
MOVR6,#0
MOVR7,#0
MOV3DH,#0
MOVCAP1,#0