#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS=P2^7;
sbit LCD_RW=P2^6;
sbit LCD_EN=P2^5;
sbit sensor0=P3^2;
sbit sensor1=P3^3;
uchar a;
uint b,c;
uchar flag;
void Delay(uint z);
void write_com(uchar com);
void write_data(uchar dat);
void lcd_init();
void init();
void delay100us(void) ; //?? 0us
void main()
{
init();
lcd_init();
while(1)
{
if(flag==1)
{
flag=0;
TR1=0;
c=TH1*256+TL1;
TH1=0;
TL1=0;
TR1=1;
write_com(0xc0);
write_data(c/1000+0x30);
write_data(c%1000/100+0x30);
write_data(c%100/10+0x30);
write_data(c%10+0x30);
/*
TH0=0;
TL0=0;
*/
}
}
}
void init()
{
TMOD=0x51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
ET0=1;
// IT1=1;
// EX1=1;
EA=1;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
LCD_RW=0;
LCD_RS=0;
P0=com;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void write_data(uchar dat)
{
LCD_RW=0;
LCD_RS=1;
P0=dat;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void lcd_init()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20)
{
a=0;
flag=1;
}
}
霍爾傳感器測速程序,每一秒計算脈沖數,一個輪上有5個磁鐵,可轉一圈測出二十幾個,有大神知道怎么回事嗎,求解答
|