目录
前 言 1
第一章 总体设计方案 2
1.1 总设计框图 2
1.2 硬件设计分析 2
1.2.1 电源的设计 2
(4):LCD1602的指令说明及时序 10
(5): LCD1602的RAM地址映射及标准字库表 13
第二章 软件设计与分析 15
2.1 软件设计的组成 15
2.2 各部分软件分析 15
2.2.1 定时器0中断子函数 15
2.2.2 定时器1中断子函数 15
2.2.3 主函数 16
2.3 总源程序 18
第三章 软件介绍 28
3.1 PROTEUS简介 28
3.2 PROTEL 99 SE简介 29
3.2.1 电路工程设计部分 29
3.2.2 电路仿真与PLD部分 30
3.3 Protel 99 SE的功能特性 30
3.4 Protel99SE快捷键大全 30
3.6仿真图 36
3.7原理图 37
第四章 减小误差措施及扩展方面 39
4.1减小误差措施 39
4.2扩展方面 39
(1)预处理电路部分 39
(2)增加电源部分 39
4.3 功能上的完善 40
4.3.1 增加键盘控制 40
4.3.2 实现自动量程转换 40
4.3.3 液晶显示器(LCD)进行数据的显示 41
总结 42
致谢词 43
参考文献 44
第二章 软件设计与分析
2.1 软件设计的组成
该系统由定时器0中断子函数、定时器1中断子函数、主函数和数据定义这几部分组成。
2.2 各部分软件分析
2.2.1 定时器0中断子函数
void t0() interrupt 1 using 1
{
}
2.2.2 定时器1中断子函数
void t1() interrupt 3 using 3//定时器T1中断服务程序
{
if(num==3999)
{
GATE=0;
TR0=0;
TR1=0;
aaa=TH0*256+TL0;
bbb=P1;
d=c/100.0;
c=0;
e=f;
f=1;
CLR=1;
CLR=0;
TH0=0x00;
TL0=0x00;
TH1=0x06;
TL1=0x06;
num=0;
GATE=1;
TR0=1;
TR1=1;
}
else
num++;
}
2.2.3 主函数
void main()//主函数
{
unsigned long a=0;
bit b=0;
uchar tab[10];
uint temp=0;
LCD_init();
init();
LCD_sfj1(0,0);
LCD_print("Welcome to use ");
LCD_sfj1(0,1);
LCD_print("Please Wating...");
delay3();
LCD_write(0,0x01);
while(1)
{
if(K1==0)
{
delay2(10);
if(K1==0)
{
while(K1==0);
b=~b;
LCD_write(0,0x01);
}
}
temp=fenjie(0);
if(temp>c)
c=temp;
if(temp>c>>3&&temp<c>>1)
f=0;
if(b==0)
{
a=(aaa*256)+bbb;
if(a==0)
{
LCD_sfj1(0,0);
LCD_print("F= 0000000000 Hz");
LCD_sfj1(0,1);
LCD_print("F= 0000000000 Hz");
}
else
{
LCD_sfj1(0,0);
LCD_print("F= Hz");
sprintf(tab,"%ld",a);
LCD_sfj1(2,0);LCD_print(tab);
LCD_sfj1(0,1);
LCD_print("P= ms");
sprintf(tab,"%0.6f",1000.0/a);
LCD_sfj1(2,1);
LCD_print(tab);
}
}
else
{
sprintf(tab,"%bd",e);
LCD_sfj1(0,0);
LCD_print(tab);
sprintf(tab,"Upp=%0.3fV",d);
LCD_sfj1(0,1);
LCD_print(tab);
}
}
}