电子开发 | 基础入门 | 电路原理图 | 濮婎垰鑸伴崶鎯х杽娓氾拷 | PLC閸╄櫣顢�   閵嗗﹤顩ч弸婊冩灘濞嗐垺婀扮粩娆欑礉鐠囬攱瀵� Ctrl+D 閹靛濮╅弨鎯版閿涗焦鍔呯拫銏″亶閻ㄥ嫭鏁幐浣碘偓锟�娑撯偓鐠у嘲顒熸稊鐘辩鐠х柉绻樺銉礉閻㈤潧鐡欏鈧崣鎴犲竾濞嗐垼绻嬮幃顭掔磼.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

閳藉懐鏁哥捄顖氬彆瀵繑澧滈崘宀嬬礉閺堚偓閺傛壆澧楅妴濠勬暩鐎涙劗鏁哥捄顖氬彆瀵繗顓哥粻妤€娅掗妴瀣剁礉閻絻鐭鹃崗顒€绱¢弻銉嚄閹靛鍞� 閻絻鐭鹃崗顒€绱$拋锛勭暬閸c劊鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
閳藉棗宕勬径鈺侇劅娴兼艾宕熼悧鍥ㄦ簚鐎圭偘绶�100 c鐠囶叀鈻� chm閺嶇厧绱¢妴鍌濈カ閺傛瑥鍞寸€圭顕涚紒鍡礉鐟曞棛娲婃笟瀣摍婢舵熬绱濋崘鍛啇楠炶¥鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

超声波测距+温度+报警的单片机代码_51单片机超声波测距C语言程序

作者:佚名    文章来源:本站原创    点击数:1477    更新时间:2023/8/6

可以测当前距离,当超过阈值距离时,蜂蜜器报警,并且实时显示温度数据,51单片机超声波测距C语言程序

制作出来的实物图如下:

源代码资料下载 : www.dzkfw.com.cn/Soft/mcu/92.html

 
单片机超声波测距 

单片机超声波测距 

单片机超声波测距实验 
51单片机超声波测距C语言程序部分代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
int num=0;
unsigned char table[]={"0123456789"};//显示的数值
//   1602的引脚定义
sbit RW=P2^5;
sbit RS=P2^6; 
sbit E=P2^7;  
//报警引脚定义
sbit feng=P2^4;
sbit led=P1^2;
sbit key1=P1^0;
sbit key2=P1^1;
int numm=0,nnum=0;
void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}
bit flag;           //温度变量
uint temp;
sbit ds=P1^3;  //温度引脚
//超声波位定义
sbit Trig = P2^1;
sbit Echo = P2^0;
uint time=0;
unsigned long S=0;
bit flagg=0;
void delay2(uchar p)
        {
          uchar l,k;
           for(l=p;l>0;l--)
              for(k=110;k>0;k--);
        }
void delay(uchar z)
{
    while(z--);
}
//温度初始化函数                       
void ds_reste()         
{
        ds=1;
        delay(5);
        ds=0;
        delay(80);
        ds=1;
        delay(14);
        if(ds==0)                 //判断ds总线被拉低
        flag=1;
        else
        flag=0;
        delay(20);
}
//读一位字节
bit ds_read_byte()       
{
         bit dat;
         ds=0;               
         _nop_();
         _nop_();
         ds=1;
         _nop_();
         dat=ds;        
         delay(10);
         return dat;
}
//读一位字节
uchar ds_read()       
{
        uchar i,j,k;
      for(i=0;i<8;i++)
        {
        j=ds_read_byte();
        k=(j<<7)|(k>>1);
        }
         return k;
}
//写入数据
void ds_write(uchar dat)
{
         uchar i;
         for(i=0;i<8;i++)
    {
         ds=0;
         _nop_();
         ds=dat&0x01;
         delay(6);
         ds=1;
         dat=dat>>1;
        }
         delay(6);
}
//读取温度
uint read_temp()         
{
        uchar a,b;
        ds_reste();
        ds_write(0xcc);
        ds_write(0xbe);
        a=ds_read();
        b=ds_read();
        temp=b;
        temp=temp<<8;
        temp=temp|a;
        temp=temp*0.0625*10+0.5;                
        return temp;
}
//写入命令1602
void write_com(uchar com)          
{
        RS=0;
        RW=0;
        E=0;
        P0=com;          
        delay2(5);
        E=1;
        delay2(5);
        E=0;
}
//写入数据 1602
void write_data(uchar date)       
{
        RS=1;
        RW=0;
        E=0;
        P0=date;               
        delay2(5);
        E=1;
        delay2(5);
        E=0;
}
//1602初始化显示
void init()                                
{
    RS=0;
        write_com(0x38);
         write_com(0x0c);
         write_com(0x06);
        write_com(0x01);
        write_com(0x80);
}
//温度在1602上显示出来
void display(uint tempp)          
         write_com(0x80+0x0b);                        
         write_data(table[tempp/100]);        
         delay2(0);
         write_com(0x80+0x0c);
         write_data(table[tempp%100/10]);          
         delay2(0);       
            write_com(0x80+0x0d);
         write_data('.');                          
         delay2(0);
            write_com(0x80+0x0e);
         write_data(table[tempp%100%10]);
         delay2(0);                                                        
         write_com(0x80+0x0f);
         write_data('C');                                   
         delay2(0);
         write_com(0x80+0x09);
         write_data('T');                                   
         delay2(0);
         write_com(0x80+0x0a);
         write_data(':');                                 
         delay2(0);
}
</intrins.h></reg52.h>

全部代码到页面下载 www.dzkfw.com.cn/Soft/mcu/92.html
Tags:超声波测距,51单片机,单片机,温度  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
閻㈤潧鐡欏鈧崣鎴犵秹閿涙碍鐪归梿鍡欐偅閸氬牆鎮囩猾鑽ゆ暩鐎涙劕鍩楁担婊€绗岄悽浣冪熅閸ュ墽娈戠純鎴犵彲閿涘lc瀹搞儲甯堕幎鈧張锟�,濡紕鏁搁弫鎵暩閻儴鐦�,閸楁洜澧栭張绡岲A缁涘鐡戦敍浣藉疮閽€鍐暩鐠侯垰娴樼純鎴犵彲缁儳宕曢敍灞艰礋瀹搞儳鈻肩敮鍫濆灡闁姳鐜崐绗衡偓鍌涱偨鏉╁骸鍙у▔銊ヤ簳娣団€冲彆娴兼褰块敍姘辨暩鐎涙劕绱戦崣鎴犵秹閿涳拷
最新推荐
鐠у嫭鏋¢崠鍛瑓鏉烇拷
 [闁告娲滄晶鏍嫉妤﹁法銈柡鍌︽嫹]闁告ぞ绀侀妵澶屸偓娑崇細缁变即宕¢弴鐘差暬闁哄牆鎼悿鍕瑹閿燂拷100 c閻犲浄鎷�
 [閺夌儐鍨▎銏㈢尵閿燂拷]濞戞挸顦宠ぐ绀烲C閻庢冻缂氱弧鍕鐠恒劍鍩傞弶鐑嗗灟濞嗩敩X-TR
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]LM324閺夆晜鍔栭弬锟�4~20mA閺夌儑鎷�1~5V闁汇垹鐏氱粊锟�
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]LM386濡炲湱绮悗顒佹媴閹捐顔婇柛蹇擃儔椤ユ捇寮ㄩ幆褋浜i柛锝冨妼鐢拷
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]936闁绘帒锕よぐ鎾偨娴e啰鐔呴柛妯煎枔閹﹪宕堕敓锟�
 [闁告娲滄晶鏍嫉妤﹁法銈柡鍌︽嫹]閻℃帒鎳庨敍鎰枖閵忥紕銈撮悹鐚存嫹+婵炴挴鏅涚€癸拷+闁硅翰鍎撮鐔兼儍閸曨偄绀�
 [闂侇偅姘ㄩ弫銈夋偨闂堟稓鎽嶉悹浣瑰礃椤撳憡娼娆愵偨]S7-200PLC闁汇劌瀚挒銏ゆ儑閻旀槒鎷ù鐙呮嫹 S7_2
 [閺夌儐鍨▎銏㈢尵閿燂拷]S7-200閹煎瓨鎸婚弸鍐╃鐠佸湱绀勯柛蹇g厜缁憋拷,STEP7
 [閺夌儐鍨▎銏㈢尵閿燂拷]ModbusPoll闁告粌顒爋dbusSalve闁稿骏鎷�
 [閺夌儐鍨▎銏㈢尵閿燂拷]STEP7婵☆垪鍓濈€氭瑩鏌岃箛鏂跨樄濞寸姰鍊曠花锟� Smart_
 [閺夌儐鍨▎銏㈢尵閿燂拷]Modbus閻犲鍟抽惁顖滃垝閸撗傜触 v1.024 缂備緤鎷�
 [閺夌儐鍨▎銏㈢尵閿燂拷]Modscan32闁告粌顒爋dsim32,modb
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]89c51闁稿繐顦遍悵娑㈠棘闁稖闆归柣顏嗗櫐缁辨獤rotues
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]濞戞挸娲ら崟楣冨储閸炴姰otues濞寸姾娉曞﹢锛勭矙鐎n亞纰嶆繝褎鍔楅悥锟�
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]51闁告娲滄晶鏍嫉閸濆嫬鍧婄紒瀣舵嫹 protues濞寸姾娉曞﹢锟�
閺堚偓閺傜増鏋冪粩锟�
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询