📄 cap.c
字号:
#include"reg51.h"
#include"51usb.h"
#define uchar unsigned char
#define uint unsigned int
/*************初始化定时器及计数器的函数*******************************/
void initsys();
void display();
void delay1(uint ticks);
void LCD_en_command(unsigned char command);//write command function
void LCD_en_dat(unsigned char temp);//write data function
//数据
unsigned char code Tab[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
uchar index=0;
uchar ShuMa[6]={0,0,0,0,0,0};//lcd缓冲区
/////////////中断程序////////////////
uint i=4000;
uchar bdata flag=0;
sbit time_flag=flag^0;
uint Frequency =0;
unsigned long Frequency1 =0;
uchar High=0;
uchar Low=0;
/***********************************************/
void delay1(uint ticks)
{
uchar i;
for(;ticks!=0;ticks--)for(i=100;i!=0;i--);
}
void ISR_Timer0() interrupt 1
{//Timer0 中断服务程序;Timer0 内部时钟模式2
//250us*4000=1000000us=1000ms=1s
if(--i==0)
{
High= TH1; //读取高位
Low=TL1; //读取低位
TH1=0;
TL1=0;
time_flag=1;
i=4000;
}
}
/******************************电容测量的程序********************************/
void cap()
{
display(); //刷新lcd
if(time_flag) //刷新显示缓冲区
{
Frequency=High;
Frequency<<=8;
Frequency+=Low;
/***********************公式计算****************************/
Frequency1=4800000/Frequency;
/**********************************************************/
ShuMa[5]=Frequency1%10;
Frequency1/=10;
ShuMa[4]=Frequency1%10;
Frequency1/=10;
ShuMa[3]=Frequency1%10;
Frequency1/=10;
ShuMa[2]=Frequency1%10;
Frequency1/=10;
ShuMa[1]=Frequency1%10;
Frequency1/=10;
ShuMa[0]=Frequency1%10;
time_flag=0;
}
}
void initsys()
{
TMOD=0x52;//Timer1外部计数,模式1(16位模式);Timer0 内部时钟模式2
TH1=0;
TL1=0;
TH0=6; // Timer0 250us中断一次
TL0=6;
ET0=1;
TF0=0;
EA=1;
TR0=1;
TR1=1;
}
void display()
{
delay1(10); //延时
LCD_en_command(0x84);
LCD_en_dat(Tab[ShuMa[index]]);
index++;
delay1(10);
LCD_en_command(0x85);
LCD_en_dat(Tab[ShuMa[index]]);
index++;
delay1(10);
LCD_en_command(0x86);
LCD_en_dat(Tab[ShuMa[index]]);
index++;
delay1(10);
LCD_en_command(0x87);
LCD_en_dat(Tab[ShuMa[index]]);
index++;
delay1(10);
LCD_en_command(0x88);
LCD_en_dat(Tab[ShuMa[index]]);
index++;
delay1(10);
LCD_en_command(0x89);
LCD_en_dat(Tab[ShuMa[index]]);
index++;
delay1(10);
index=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -