#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0,n=0;
int juli=0;
uint sudu=0,s=0,d=0;
sbit lcden=P1^5; //使能端
sbit lcdrs=P1^6; //液晶数据命令选择端1
sbit beep=P1^3;
//uchar code table[]={"0123456789"};
void int0_init(void); //函数声明
/***************************************************
* 外部中断0初始化子函数
* 下降沿触发,开启INT0中断,开总中断
****************************************************/
void delayms(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<110;j++); //1ms延时
}
void delayus(int t)
{
while(t--); //1us延时
}
//液晶
void write_com(uchar com)
{
lcdrs=0;
P2=com;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P2=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void init()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void int0_init(void)
{
IT0 = 1; //下降沿触发
EX0 = 1; //开启INT0中断
EA = 1; //开启总中断
}
void display()
{
write_com(0x80);
write_data('V');
write_data('=');
// write_data(0x30+sudu/10000);
write_data(0x30+sudu%10000/1000);
write_data(0x30+sudu%10000%1000/100);
write_data(0x30+sudu%10000%1000%100/10);
write_data(0x30+sudu%10);
write_data('c');
write_data('m');
write_data('/');
write_data('s');
write_com(0x80+0x40);
write_data('S');
write_data('=');
write_data(0x30+juli/10000);
write_data(0x30+juli%10000/1000);
write_data(0x30+juli%1000/100);
write_data(0x30+juli%1000%100/10);
write_data(0x30+juli%10);
write_data('c');
write_data('m');
// write_data(' ');
// write_data(0x30+i/1000);
// write_data(0x30+i%1000/100);
// write_data(0x30+i%1000%100/10);
// write_data(0x30+i%10);
}
//主函数
void main(void)
{
TMOD=0X01;
EA=1;
ET0=1;
TH0=0xb8;
TL0=0x00;
TR0=0;
int0_init(); //外部中断0初始化
init();
while(1)
{
display();
if(sudu>220) {beep=0;}
if(sudu<220) {beep=1;}
} //原地踏步
}
/***************************************************
* 中断响应子函数
* 响应外部中断0,LED翻转,中断标志位自动清零
****************************************************/
void int0_process() interrupt 0
{
n++;
d++;
juli=2*d;
TR0=1;
IE0=0;
}
void time0() interrupt 1
{
TH0=0xb8;//装初值
TL0=0x00;//装初值
num++;
if(num==25)
{
num=0;
sudu=2*n;
n=0;
}
} |