level 9
看看题目的详细内容和具体要求是什么,用哪种单片机?是否做硬件实物?要表达到哪种程序,比如只是用单片机和超声波测距并根本不同的距离来让LED有不同频率的闪烁提醒或者蜂鸣器急或慢的鸣叫提醒呢,还是完全拟真,就也要做一个小车?等等
2025年10月09日 07点10分
2
我有那个要求,只不过是一个文档
2025年10月09日 08点10分
不用做小车,能模拟出来就可以了应该是
2025年10月09日 08点10分
level 7
#include "reg51.h"
#include "lcd1602.h"
#include"Ds18b20.h"
#include"HC_SR04.h"
sbit k1=P3^5;
sbit k2=P3^6;
sbit k3=P3^7;
sbit beep=P1^4;//蜂鸣器
uchar wendu=0;//温度
uint juli=0,juli_lim=10;//距离
uchar xian1[]="Long:000cm";
uchar xian2[]="T:00 C Lim:000cm";
uchar sec=0;//计时
void main()
{
xian2[4]=0xdf;
init_1602();//LCD初始化
HC_SRinit();//超声波初始化
TMOD|=0X11;
TH1=0X3C;
TL1=0XB0;
ET1=1;//打开定时器0中断允许
EA=1;//打开总中断
TR1=1;//打开定时器
while(1)
{
if(!k2)//阀值加
{
if(juli_lim<100)
juli_lim++;
while(!k2);
}
if(!k3)//阀值减
{
if(juli_lim>1)
juli_lim--;
while(!k3);
}
if(!k1)//倒车确认
{
juli=HC_SRread()/2+1;//测距
//报警
if(juli<juli_lim)
beep=0;
else
beep=1;
}
else
{
juli=0;
beep=1;
}
}
}
void Timer1() interrupt 3
{
if(sec<10)//定时0.5s
sec++;
else
{
sec=0;
wendu=Ds18b20ReadTemp();//测温
xian1[5]=juli/100+0x30;//计算
xian1[6]=juli%100/10+0x30;
xian1[7]=juli%10+0x30;
xian2[2]=wendu/10+0x30;
xian2[3]=wendu%10+0x30;
xian2[11]=juli_lim/100+0x30;
xian2[12]=juli_lim%100/10+0x30;
xian2[13]=juli_lim%10+0x30;
write_string(1,0,xian1);
write_string(2,0,xian2);
}
TH1=0X3C;//50ms
TL1=0XB0;
}
2025年10月10日 10点10分
7
超声波跟18B20的子程序用平常的代码替换就行了
2025年10月10日 10点10分