资源简介
void main()
{
uchar num;
delay_ms(40);
init();
while(1)
{
while(flag2);
while(!flag1&&TR0)
{
if(i--==0)
{
EX1=0;/**/
for(num=0;num<8;num++)
{
lcd_send_data(string2[num]);
}
flag1=2;
}
}
if(flag1==1)
{
time=TH1;
time=(time<<8)|TL1;
distance=time*1.72;
convert(distance);
if(dis[0]=='0')
displayonechar(5,1,' ');
else
displayonechar(5,1,dis[0]);
if((dis[0]=='0')&&(dis[1]=='0'))
displayonechar(6,1,' ');
else
displayonechar(6,1,dis[1]);
if((dis[0]=='0')&&(dis[1]=='0')&&(dis[2]=='0'))
代码片段和文件信息
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar string1[]=“--DISTANCE--“;
uchar string2[]=“OVERTIME!“;
uchar dis[7];
uchar time;
uint flag1flag2=0;
sbit p2_0=P2^0;
sbit p2_6=P2^6;
sbit lcd_rs=P2^5;
sbit lcd_en=P2^4;
void init();
void lcd_send_command(uchar command);
void lcd_send_data(uchar dat);
void lcd_display(uchar xuchar yuchar *Data);
void convert(float lenth);
void displayonechar(uchar x uchar y uchar DData);
float distance=0.0;
uint i=40000;
void delay_ms(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uchar num;
delay_ms(40);
init();
while(1)
{
while(flag2);
while(!flag1&&TR0)
{
if(i--==0)
{
EX1=0;/**/
for(num=0;num<8;num++)
{
lcd_send_data(string2[num]);
}
flag1=2;
}
}
if(flag1==1)
{
time=TH1;
time=(time<<8)|TL1;
distance=time*1.72;
convert(distance);
if(dis[0]==‘0‘)
displayonechar(51‘ ‘);
else
displayonechar(51dis[0]);
if((dis[0]==‘0‘)&&(dis[1]==‘0‘))
displayonechar(61‘ ‘);
else
displayonechar(61dis[1]);
if((dis[0]==‘0‘)&&(dis[1]==‘0‘)&&(dis[2]==‘0‘))
displayonechar(71‘ ‘);
else
displayonechar(71dis[2]);
displayonechar(81dis[3]);
displayonechar(91dis[4]);
displayonechar(101dis[5]);
displayonechar(111dis[6]);
displayonechar(121‘c‘);
displayonechar(131‘m‘);
}
else
{
lcd_send_command(0x01);/*显示清屏*/
for(num=0;num<12;num++)
{
lcd_send_data(string1[num]);
}
}
TH1=0;
TL1=0;
flag1=0;
flag2=1;
delay_ms(100);
}
}
void init()
{
uchar num;
TMOD=0X12;
//TR0=1;定时器
ET0=1; /*允许定时器0中断*/
EX1=0;
TH0=250;
TL0=250;
EX0=1;
IT0=1;
TH1=0;
TL1=0;
IT1=0;
EA=1;
lcd_en=0;
lcd_send_command(0x38);/*显示模式设置*/
lcd_send_command(0x0c);/*显示开及光标移动设置*/
lcd_send_command(0x06);/*显示光标移动设置*/
lcd_send_command(0x01);/*显示清屏*/
lcd_send_command(0x80+3);/*设置数据地址指针*/
for(num=0;num<12;num++)
{
lcd_send_data(string1[num]);
}
}
void lcd_send_command(uchar command)
{
lcd_rs=0;
P1=command;
delay_ms(5);
lcd_en=1;
delay_ms(5);
lcd_en=0;
}
void lcd_send_data(uchar dat)
{
lcd_rs=1;
P1=dat;
delay_ms(5);
lcd_en=1;
delay_ms(5);
lcd_en=0;
}
void displayonechar(uchar x uchar y uchar DData)
{
y &= 0x1;
x &= 0xF; //限制X不能大于15,Y不能大于1
if (y) x |= 0x40; //当要显示第二行时地址码+0x40;
x |= 0x80; //算出指令码
lcd_send_command(x); //发命令字
lcd_send_data(DData); //发数据
}
void convert(float lenth)
{
unsigned long lenth1;
lenth1=lenth*100;
dis[6]=lenth1%10+0x30;
lenth1=lenth1/10;
dis[5]=lenth1%10+0x30;
lenth1=lenth1/10;
dis[4]=‘.‘;
dis[3]=lenth1%10+0x30;
lenth1=lenth1/10;
dis[2]=lenth1%10+0x30;
lenth1=lenth1/10;
dis[1]=lenth1%10+0x30;
dis[0]=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 164 2009-02-12 16:02 测试程序\测试程序.plg
文件 3482 2009-02-11 19:15 测试程序\测试程序.c
文件 14599 2009-02-11 19:15 测试程序\测试程序.M51
文件 4795 2009-02-11 19:15 测试程序\测试程序.hex
文件 2009 2009-02-11 19:04 测试程序\测试程序_Uv2.Bak
文件 8758 2009-02-11 19:15 测试程序\测试程序.LST
文件 12877 2009-02-11 19:15 测试程序\测试程序.OBJ
文件 48 2009-02-11 19:15 测试程序\测试程序.lnp
文件 11634 2009-02-11 19:15 测试程序\测试程序
文件 2128 2009-02-11 19:15 测试程序\测试程序.Uv2
....... 1265 2009-02-11 19:15 测试程序\测试程序_Opt.Bak
文件 1266 2009-02-12 16:02 测试程序\测试程序.Opt
目录 0 2009-02-12 08:50 测试程序
----------- --------- ---------- ----- ----
63025 13
- 上一篇:atsha204 认证程序基于I2C通信
- 下一篇:433M发射接收模块资料
评论
共有 条评论