光电测速及LCD1602显示程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit rs=P2^6;

sbit rw=P2^5;

sbit e=P2^7;

float f=0;

int dec0=0;

int dec1;

float dec2=0;

uchar LED0_data,LED1_data,LED2_data,LED3_data; uchar LED0_dat,LED1_dat,LED2_dat,LED3_dat,LED4_dat; uchar speed[]="speed:";

uchar root[]="path:";

uchar cm[]="cm/s";

uchar m[]=".m";

uchar i=0;

void display();

void delay(uint v);

void initime();

/*定时器初始化*/

void initime(){

TMOD=0x51; //T1计数器,T0定时器,方式1

TL0=(65536-10000)%256;

TH0=(65536-10000)/256;

TL1=0;

TH1=0;

ET0=1;

EA=1;

}

void delay1ms(uint c){ //误差 0us

uchar a,b;

for (; c>0; c--){

for (b=199;b>0;b--){

for(a=1;a>0;a--);

}

}

}

void dectobit(){

dec0=f*20.7;

LED3_data=dec0/1000;

dec0=dec0 % 1000;

LED2_data=dec0/100;

dec0=dec0 % 100;

LED1_data=dec0/10;

dec0=dec0 % 10;

LED0_data=dec0;

dec2=f*2.07345+dec2;

dec1=dec2;

LED4_dat=dec1/10000;

dec1=dec1 % 10000;

LED3_dat=dec1/1000;

dec1=dec1 % 1000;

LED2_dat=dec1/100;

dec1=dec1 % 100;

LED1_dat=dec1/10;

dec1=dec1 % 10;

LED0_dat=dec1;

}

void write_com(uchar com){

e=0;

rs=0;

rw=0;

P0=com;

delay1ms(1);

e=1;

delay1ms(5);

e=0;

}

void write_data(uchar dat){

e=0;

rs=1;

rw=0;

P0=dat;

delay1ms(1);

e=1;

delay1ms(1);

e=0;

}

void Init()

{

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

}

void display(){

uchar j;

write_com(0x80);

for(j=0;j<6;j++)

write_data(speed[j]);

write_com(0xc1);

for(j=0;j<5;j++)

write_data(root[j]);

write_com(0x86);

write_data(LED3_data+0x30);

write_data(LED2_data+0x30);

write_data(LED1_data+0x30);

write_data(LED0_data+0x30);

for(j=0;j<4;j++)

write_data(cm[j]);

write_com(0xc6);

write_data(LED4_dat+0x30);

write_data(LED3_dat+0x30);

write_data(LED2_dat+0x30);

write_data(LED1_dat+0x30);

write_data(m[0]);

write_data(LED0_dat+0x30);

write_data(m[1]);

}

void main(void){

initime();

Init();

TR0=1;

TR1=1;

while(1){

display();

}

}

timer()interrupt 1{

i=i+1;

if(i==100){

i=0;

f=TH1*256+TL1;

TL1=0;

TH1=0;

dectobit();

}

TL0=(65536-10000)%256;

TH0=(65536-10000)/256; }

相关文档
最新文档