数字电容测量仪
EN=0; }
/*****************初始化********************/ void LCDINIT() {
Delay1ms(15);
wcomd(0x38);//功能设置 Delay1ms(5);
wcomd(0x38);//功能设置 Delay1ms(5); wcomd(0x01);//清屏 Delay1ms(5); wcomd(0x08);//关显示 Delay1ms(5);
wcomd(0x0c);//开显示,不开光标 }
/***********显示函数**************/ void Display(void) //显示函数 {
unsigned char i,j; unsigned char
a[12]={0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53};//显示measurements
LCDINIT();
for(i=0;i<12;i++)//写显示第一行 { wcomd(0x80+i); Delay1ms(1); wdata(a[i]); Delay1ms(1);
23
数字电容测量仪
}
for(j=0;j<6;j++)//写显示第二行 {
wcomd(0xc0+j); Delay1ms(1); wdata(0x30+b[j]); Delay1ms(1); }
Delay1ms(150); }
void main() {
IE=0x81; TMOD=0x09; IT0=1; TH0=0x00; TL0=0x00; T_flag=0; _reset=0; while(1) {
while(!b_test) { i=0;
_reset=1; EX0=1; while(_reset) { i++;
if(i>5000) {
//打开全部的中断控制,并开启外部中断允许 //T0为16位计数工作方式1
//设置外部中断的触发的方式为脉冲触发 //如果有测量按键输入就往下执行 //启动555时基芯片 //开启中断0
//超出等待时间,中断还没有过来,就退出 //设置最长等待时间 24
数字电容测量仪
_reset=0; //最长等待时间到还没有中断,停止555 } }
if(N<100) //如果计数值小于100,显示SM,表示应换用小一点的量程 {
b[3]=0X1D; b[2]=0X23; }
if(N>5000) //如果计数值大于5000,显示LA,表示应换用大一点的量程 {
b[3]=0X11; b[2]=0X1C; }
if(N>=100 && N<=5000) {
C=N/100; //计算电容的大小 b[2]=C/10; //计算电容值的十位 b[3]=C-b[2]*10; //计算电容值的各位 } }
Display(); //显示电容的大小 } }
void int0(void) interrupt 0 //第一次中断开始计数,第二个中断停止计数 {
T_flag=!T_flag; if(T_flag==1) {
TR0=1; //开始计时 }
if(T_flag==0)
25
数字电容测量仪
{
TR0=0; //停止计时 EX0=0; //关闭中断 _reset=0; //停止发出方波 N=TH0*256+TL0; //计算计数器的值 N=N*5/3;
TH0=0x00; TL0=0x00; } }
//恢复初值 26
数字电容测量仪
致谢
此次毕业设计是本科四年来对自己所学知识的一个总结,其难度、复杂性、对设计的要求都是以前所不能比拟的。所要用到的知识及相关的资料有相当部分超出我们四年的所学,需要通过其他途径来获取信息。通过这次毕业设计让我更加了解了自己的专业,并且提高了自己的自学能力。
在此要特别感谢我的指导老师,该毕业论文是在尊敬的杨小玲老师的细心指导和热情鼓励下完成的。无论是论文的选题、设计思路、理论概括还是系统设计到论文撰写,处处浸透着杨老师的心血,杨老师对我的关心和帮助让我动力十足。杨老师渊博的专业知识、活跃的学术思想、严谨的教学态度、求实的工作作风、孜孜不倦的精神和精心培养人才的风范,都使我受益非浅。这些精神和态度都值得我们这些年轻的学子们学习,杨老师谦逊无私、平易近人的高尚品格及热情教导的朴实作风也一直是我学习的榜样。
在此,我向您致以最深挚的谢意!您辛苦了!
同时借此机会,感谢所有工学院的老师四年以来对我的悉心教导,谢谢! 还要特别感谢帮助我的同学,正是与他们在许多问题上的交流和讨论,才使得我的论文得以顺利完成。
最后,对本次阅读评审此论文的老师们表示忠心的感谢。
27