水滴法测重力加速度
LM311_RV110kLM311_RV210kR1R268KR3R468KU22315k85U32315k8517461746C10.1uLM311DIL08C20.1uLM311DIL0887654321P1.7P1.6P1.5P1.4P1.3P1.2P1.1/T2EXP1.0/T2U1P3.7/RDP3.6/WRP3.5/T1P3.4/T0P3.3/INT1P3.2/INT0P3.1/TXDP3.0/RXDP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8171615141312111028272625242322213233343536373839LED1R15R14LED0313029EAALEPSENRP1123456789RESPACK-89RST1819P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4XTAL2P0.3/AD3AT89C52P0.2/AD2P0.1/AD1CLOCK=11.0592MHzXTAL1P0.0/AD0LCD_RV1k7891011121314D0D1D2D3D4D5D6D7123VSSVDDVEE456RSRWELCD1LM016L
程序
/************************************************************* 重力加速度测量
**************************************************************/ #include #define uchar unsigned char #define uint unsigned int sbit lcde=P2^7 ; sbit lcdrs=P2^6; sbit lcdrw=P2^5; sbit key0=P3^0; sbit key1=P3^1; uint num=0,num0=5000; uchar h=20; uchar code table0[]=\"falltime:\"; uchar table1[6]; uchar table2[13]; uchar table3[3]; void delayms( uint ms) { uchar j; while(ms--) for(j=30;j>0;j--); } /*void delayrs( uint ms) { uchar j; while(ms--) for(j=110;j>0;j--); } */ void init_t() { TMOD=0x01; TH0=0xfc; TL0=0x66; EA=1; ET0=1; } void write_com(uchar com) { lcdrs=0; lcdrw=0; delayms(1); //存放时间 //存放重力加速度g的值 //1602显示延时子程序 //普通延时子程序 //定时器0初始化,为方式1 //1602写命令子程序 lcde=0; delayms(1); P0=com; delayms(1); lcde=1; delayms(1); lcde=0; } void write_dat(uchar dat) //1602写数据子程序 { lcdrs=1; lcdrw=0; delayms(1); lcde=0; delayms(1); P0=dat; delayms(1); lcde=1; delayms(1); lcde=0; } void init_lcd() //1602初始化 { write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80+0x0f); write_dat('s'); write_com(0x80+0x40); write_dat('g'); write_dat(':'); table3[0]=(h/10)%10+'0'; table3[1]=h%10+'0'; write_com(0x80+0x4c); write_dat('h'); write_dat(':'); write_dat(table3[0]); write_dat(table3[1]); } /***************************************************************************** 主程序 ********************************************************************* ********/ void main() { uchar i; uchar a0; float g=0.0; unsigned long tt,tt1,g1; init_lcd(); init_t(); write_com(0x80); while(table0[i]!='\\0') { write_dat(table0[i]); i++; } // P1=0xfe; while(1) { // if(key0==0) // { // delayms(10); if(key0==0) { while(!key0); P1=0xfd; TR0=1; a0=1; } // } while(TR0) { if(num==1) { num=0; tt++; // P1=0xfb; } // if(key1==0) // { // delayms(10); if(key1==0) { //水滴经过开关1 //定时器0打开 //水滴经过开关2 // // tt1=2782;//g=5.168276; table2[0]=(g1/10000000)%10+'0'; table2[1]=(g1/1000000)%10+'0'; table2[3]=((g1/100000)%10)+'0'; table2[4]=((g1/10000)%10)+'0'; write_dat(table2[i]); // TR0=0; //定时器0关 while(!key1); tt1=tt; P1=0xfb; table1[0]=(tt/10000)%10+'0'; table1[1]=(tt/1000)%10+'0'; table1[2]='.'; table1[3]=(tt/100)%10+'0'; table1[4]=(tt/10)%10+'0'; table1[5]=tt%10+'0'; write_com(0x80+0x09); for(i=0;i<6;i++) { write_dat(table1[i]); P1=0xfd; } // tt1=tt1*tt1; g=h*2.0*1000000000/tt1; g1=g*1000; table2[2]='.'; table2[5]=((g1/1000)%10)+'0'; table2[6]=((g1/100)%10)+'0'; table2[7]=((g1/10)%10)+'0'; table2[8]=g1%10+'0'; write_com(0x80+0x42); for(i=0;i<9;i++) { P1=0xf7; } } } while(1) { P1=0xfb; } } void T0_time() interrupt 1 { TH0=0xfc; TL0=0x66; num++; } } 因篇幅问题不能全部显示,请点此查看更多更全内容