搜索
您的当前位置:首页正文

水滴法测重力加速度原创

来源:小奈知识网


水滴法测重力加速度

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++; }

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top