write_com(0x80); for(num=0;num<6;num++) { write_data(table[num]); delayms(5); }
delayms(2000); }
//延时函数
void delayms(uint xms) {
uint i,j;
for(i=xms;i>0;i--) for(j=110;j>0;j--); }
//液晶写命令函数
void write_com(uchar com) {
lcdrs=0; P0=com; delayms(5); lcden=1; delayms(5); lcden=0; }
//液晶写数据函数
void write_data(uchar date) {
lcdrs=1; P0=date; delayms(5); lcden=1; delayms(5); lcden=0; }
//设置数据地址指针 //显示字符串table[6]
//数据显示2s
程序2:电阻、电容和电感测量值的显示 //简易电阻、电容、电感测量仪程序
//初始化
#include
#define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define PI 3.1415926
uchar code table1[8]=%uchar table2[16]=%uchar table3[16]=%uchar table4[16]=%uchar table5[16]=\
uchar num,a=0,th0,tl0; uint C,L; ulong f,R;
sbit lcden=P2^4; //液晶使能端 sbit lcdrs=P2^5; //液晶数据命令选择端
sbit key_R=P1^5; //测量电阻按键 sbit key_C=P1^6; //测量电容按键 sbit key_L=P1^7; //测量电感按键
sbit R_out=P1^2; //测量电阻信号输入 sbit C_out=P1^3; //测量电容信号输入 sbit L_out=P1^4; //测量电感信号输入
//声明子函数
void delayms(uint xms); //延时函数 void write_com(uchar com); //液晶写命令函数 void write_data(uchar date); //液晶写数据函数 void led_init(); //液晶初始化函数 void t_init(); //定时器0初始化函数 void keyscan(); //键盘检测函数(确定被测元件为电阻、电容或电感) void display_f(ulong f); //频率显示函数 void display_R(ulong R); //电阻显示函数 void display_C(uint C); //电容显示函数 void display_L(uint L); //电感显示函数
//主函数
void main() {
led_init(); t_init(); keyscan();
write_com(0x01); while(1) { display_f(f); switch(a) { case 1:R=(ulong)(5000000.0/0.6931472/f-150+0.5);display_R(R);break; case 2:C=(int)(100000000.0/153/0.6931472/f+0.5);display_C(C);break; case 3:L=(int)(1000000000000.0/0.1/PI/PI/f/f+0.5);display_L(L);break; } } }
//中断函数
void T0_count() interrupt 1 {
switch(a) {
case 1:while(R_out); while(!R_out); TH0=0; TL0=0; while(R_out); while(!R_out); th0=TH0; tl0=TL0; TR0=0; break;
case 2:while(C_out); while(!C_out); TH0=0; TL0=0; while(C_out); while(!C_out); th0=TH0; tl0=TL0; TR0=0; break; case 3:while(L_out);
while(!L_out); TH0=0; TL0=0; while(L_out); while(!L_out); th0=TH0; tl0=TL0; TR0=0; break; }
f=1000000.0/1.085069/(th0*256+tl0)+0.5; }
//延时函数
void delayms(uint xms) {
uint i,j;
for(i=xms;i>0;i--) for(j=110;j>0;j--); }
//液晶写命令函数
void write_com(uchar com) {
lcdrs=0; P0=com; delayms(5); lcden=1; delayms(5); lcden=0; }
//液晶写数据函数
void write_data(uchar date) {
lcdrs=1; P0=date; delayms(5); lcden=1; delayms(5); lcden=0; }
//液晶初始化函数