用AT89C51单片机做超声波测距

2020-09-26 科技 104阅读
程序中本身就有段选和位选显示百位、十位、个位,你没有显示,我想应该是数据位的问题,看看你的硬件和这个软件是否一致。
//****************************************************************
//定时器0中断,用做显示
timer0() interrupt 1 // 定时器0中断是1号
{
TH0=0xfd; //写入定时器0初始值
TL0=0x77;
switch(flag) //这之下完成位选,00、01、02分别选择个、十、百位
{case 0x00:P0=ge; P2=0x7f;flag++;break;
case 0x01:P0=shi;P2=0xbf;flag++;break;
case 0x02:P0=bai;P2=0xdf;flag=0;break;
}
}
显示数据转换程序
void conversion(uint temp_data)
{
uchar ge_data,shi_data,bai_data ;
bai_data=temp_data/100 ;
temp_data=temp_data%100; //取余运算
shi_data=temp_data/10 ;
temp_data=temp_data%10; //取余运算
ge_data=temp_data;
bai_data=SEG7[bai_data]; //这之下完成段选,分别赋值百、十、个位的数据
shi_data=SEG7[shi_data]&0x7f;
ge_data =SEG7[ge_data];
EA=0;
bai = bai_data;
shi = shi_data;
ge = ge_data ;
EA=1;
}
从上表两段程序可以看出,P0口是段码数据,P2口是位码控制,你可以修改这两处试试
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com