📄 hongwai.lst
字号:
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE HONGWAI
OBJECT MODULE PLACED IN hongwai.OBJ
COMPILER INVOKED BY: D:\安装程序\UV3\C51\BIN\C51.EXE hongwai.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************************************************
2 函数名称:红外通信 *
3 函数功能:实现红外无限温度传输 *
4 说明: *
5 P0_0=D0 P0_1=D1 P0_2=D2 P0_3=D3 *
6 P0_4=D4 P0_5=D5 P0_6=D6 P0_7=D7 *
7 P2_0=RS P2_1=RW P2_2=E *
8 P3_3为温度数据接收端 *
9 按下P3_2发送读取的温度数据,接收端显示数据,将"1"回送给发送端
10 当温度超过33摄氏度时,接收方P1_0灯亮,将“0”回送给发送端 *
11 李灿松
12 2008.7.20
13 ***********************************************************************/
14 #include<reg52.h>
15 #include<intrins.h>
16 #include<absacc.h>
17 #define uchar unsigned char
18 //uchar code tab[10]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0,} ;
19 uchar data str[5];
20 uchar data dat[5];
21 sbit P3_2=P3^2;
22 sbit P1_0=P1^0;
23
24 #define T_cont 0.0625 //温度转换常数
25 #define uchar unsigned char
26 #define uint unsigned int
27 #define L1602_DB0_DB7 P0 //定义1602的数据总线
28 bit T_sign=0; //温度正负符号
29 float temp1=0;
30 sbit DQ=P3^3; //单口线说明
31 sbit L1602_RS=P2^0; //定义1602得RS控制线
32 sbit L1602_RW=P2^1; //定义1602得RW控制线
33 sbit L1602_E=P2^2; //定义1602的E控制线
34 sbit L1602_Busy=P0^7; //定义1602的测忙线
35 uchar code Welcome[]={"wlecome"};
36 uchar code Welcome1[]={"tempture"};
37 uchar code Welcome2[]={"cansong:"};
38 uchar code Temp[]={"temp"};
39 unsigned char sdata,t_bai,t_shi,t_ge,t_feng,t_miao;
40 typedef bit BOOL ;
41
42 /**********************************************************************************************
43 函数名称:初始化函数
44 函数功能:串口初始化函数
45 说明:
46 **********************************************************************************************/
47 void init(void)
48 {
49 1 TMOD=0x20; //定时器1工作在方式2
50 1 PCON=0x00; //波特率不增倍
51 1 SCON=0x50; //串行工作方式3
52 1 TH1=0xFD; //SMOD=0时的初值
53 1 TL1=0xFD;
54 1 TR1=1;
55 1 }
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 2
56
57 /**********************************************************************************************
58 函数名称:存储函数
59 函数功能:将温度数据存储在str[]
60 说明:
61 **********************************************************************************************/
62 void save()
63 {
64 1 str[0]=t_bai;
65 1 str[1]=t_shi;
66 1 str[2]=t_ge;
67 1 str[3]=t_feng;
68 1 str[4]=t_miao;
69 1
70 1 }
71
72 /**********************************************************************************************
73 函数名称:发送函数
74 函数功能:将数组中的温度数据通过串口发送
75 说明:
76 **********************************************************************************************/
77 void send_str()
78 // 传送字串
79 {
80 1 uchar i;
81 1 for(i=0;i<5;i++)
82 1 {
83 2 SBUF = str[i];
84 2 while(!TI); // 等特数据传送
85 2 TI = 0; // 清除数据传送
86 2 }
87 1 }
88
89 /**********************************************************************************************
90 函数名称:主函数
91 函数功能:主函数
92 说明:
93 **********************************************************************************************/
94
95 void main()
96 {
97 1 void print(uchar a,uchar *str);
98 1 void print1(uchar a,uchar t);
99 1 void LCM1602_Init();
100 1 void LCM1602_Delay(uchar count);
101 1 void ReadTemperature();
102 1 void DS18B20_init();
103 1 DS18B20_init();
104 1 LCM1602_Init();
105 1 print(0x80,Welcome);
106 1 print(0xc0,Welcome1);
107 1 LCM1602_Delay(500);
108 1 P2=0xff;
109 1 P0=0xff;
110 1 EA=1;
111 1 ES=1; //串行口中断开
112 1 init();
113 1 while(1)
114 1 {
115 2 ReadTemperature();
116 2 print(0x80, Welcome2);
117 2 if(T_sign==1)
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 3
118 2 print1(0xc0,0x2d);
119 2 else
120 2 print1(0xc0,0x2b);
121 2 //if(t_bai!=0)
122 2 print1(0xc1,t_bai+0x30);
123 2 // else
124 2 // print1(0xc1,t_shi+0x30); //消隐,不显示
125 2 // t_shi=3;
126 2 print1(0xc2,t_shi+0x30);
127 2 print1(0xc3,t_ge+0x30);
128 2 print1(0xc4,0x2e); //显示点
129 2 print1(0xc5,t_feng+0x30);
130 2 print1(0xc6,t_miao+0x30);
131 2 print1(0xc7,0x43); //显示'C
132 2 save();
133 2 if(P3_2==0)
134 2 {
135 3 // SBUF='L'; //发送
136 3 // while(TI==0); //等待串口发送完毕
137 3 // TI=0;
138 3 send_str();
139 3 while(P3_2==0); //等待按键放
140 3 }
141 2
142 2 }
143 1
144 1 }
145 /**********************************************************************************************
146 函数名称:串口中断
147 函数功能:串口中断函数
148 说明:接受和返回主机的数据
149 **********************************************************************************************/
150 serial () interrupt 4 using 1
151 {
152 1 uchar i;
153 1 /* void print1(uchar a,uchar t);
154 1 void LCM1602_Init();
155 1 void LCM1602_Delay(uchar count);
156 1
157 1 LCM1602_Init();
158 1 LCM1602_Delay(5000);
159 1 */
160 1 if(RI==1)
161 1 {
162 2 RI=0;
163 2 for(i=0;i<5;i++)
164 2 {
165 3 dat[i]=SBUF; //接受
166 3 }
167 2 t_bai=dat[0];t_shi=dat[1];t_ge=dat[2];t_feng=dat[3];t_miao=dat[4];
168 2 if(t_shi==0x03&&t_ge>0x04)
169 2 {
170 3 SBUF='0'; //发送
171 3 P1_0=0;
172 3
173 3 }
174 2 else
175 2 SBUF='1';
176 2
177 2 /* print1(0xc1,t_bai+0x30);
178 2 print1(0xc2,t_shi+0x30);
179 2 print1(0xc3,t_ge+0x30);
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 4
180 2 print1(0xc4,0x2e); //显示点
181 2 print1(0xc5,t_feng+0x30);
182 2 print1(0xc6,t_miao+0x30);
183 2 print1(0xc7,0x43); //显示'C
184 2 */ while(TI==0);
185 2 TI=0;
186 2 }
187 1 }
188
189
190
191 /**********************************************************************************************
192 函数名称:读取温度函数
193 函数功能:读取DS18B20的转换温度值
194 说明:
195 **********************************************************************************************/
196
197 void ReadTemperature() //获取温度源程序
198 {
199 1 void delay(unsigned int delay_time);
200 1 void DS18B20_init();
201 1 void DS18B20_send(unsigned char out_data);
202 1 uchar DS18B20_read(void);
203 1 unsigned int y=0;
204 1 uchar a=0;
205 1 uchar b=0;
206 1 // unsigned char k;
207 1 DS18B20_init(); //初始化DS18B20
208 1 DS18B20_send (0xcc);
209 1 DS18B20_send (0x44); //启动温度转换
210 1 delay(125);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -