📄 hongwai1.lst
字号:
C51 COMPILER V8.02 HONGWAI1 08/13/2008 21:16:44 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE HONGWAI1
OBJECT MODULE PLACED IN hongwai1.OBJ
COMPILER INVOKED BY: D:\安装程序\UV3\C51\BIN\C51.EXE hongwai1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 红外发送程序
3
4
5
6
7 */
8 #include<reg52.h>
9 #include<intrins.h>
10 #include<absacc.h>
11 #define uchar unsigned char
12 uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
13 //uchar code bb[4]={0xf7,0xfb,0xfd,0xfe};
14 uchar data str[5];
15 uchar data dat[5];
16 sbit P3_2=P3^2;
17 sbit P2_0=P2^0;
18 sbit DQ=P2^2; //单口线说明
19 bit T_sign=0; //温度正负符号
20 #define T_cont 0.0625 //温度转换常数
21 #define uchar unsigned char
22 #define uint unsigned int
23 float temp1=0;
24 unsigned char sdata,t_bai=0,t_shi=0,t_ge=0,t_feng=0,t_miao=0;
25
26 /**********************************************************************************************
27 函数名称:初始化函数
28 函数功能:串口初始化函数
29 说明:
30 **********************************************************************************************/
31 void init(void)
32 {
33 1 TMOD=0x20; //定时器1工作在方式2
34 1 PCON=0x00; //波特率不增倍
35 1 SCON=0x50; //串行工作方式3
36 1 TH1=0xFD; //SMOD=0时的初值
37 1 TL1=0xFD;
38 1 TR1=1;
39 1 }
40
41 /**********************************************************************************************
42 函数名称:存储函数
43 函数功能:将温度数据存储在str[]
44 说明:
45 **********************************************************************************************/
46 void save()
47 {
48 1
49 1 // str[0]=0xff;
50 1 str[0]=t_shi;
51 1 str[1]=t_ge;
52 1 str[2]=t_feng;
53 1 str[3]=t_miao;
54 1
55 1 }
C51 COMPILER V8.02 HONGWAI1 08/13/2008 21:16:44 PAGE 2
56 /**********************************************************************************************
57 函数名称:发送函数
58 函数功能:将数组中的温度数据通过串口发送
59 说明:
60 **********************************************************************************************/
61 void send_str()
62 // 传送字串
63 {
64 1 uchar i;
65 1 for(i=0;i<4;i++)
66 1 {
67 2 SBUF = str[i];
68 2 while(!TI); // 等特数据传送
69 2 TI = 0; // 清除数据传送
70 2 }
71 1 }
72
73 /**********************************************************************************************
74 函数名称:读取温度函数
75 函数功能:读取DS18B20的转换温度值
76 说明:
77 **********************************************************************************************/
78
79 void ReadTemperature() //获取温度源程序
80 {
81 1 void delay(unsigned int delay_time);
82 1 void DS18B20_init();
83 1 void DS18B20_send(unsigned char out_data);
84 1 uchar DS18B20_read(void);
85 1 unsigned int y=0;
86 1 uchar a=0;
87 1 uchar b=0;
88 1 // unsigned char k;
89 1 DS18B20_init(); //初始化DS18B20
90 1 DS18B20_send (0xcc);
91 1 DS18B20_send (0x44); //启动温度转换
92 1 delay(125);
93 1 DS18B20_init();
94 1 DS18B20_send (0xcc);
95 1 DS18B20_send (0xbe); //读取温度寄存器
96 1 a=DS18B20_read(); //读取低位
97 1 b=DS18B20_read(); //读取高位
98 1 //k=b&0X08;
99 1 //if(k==0x08) T_sign=1; //温度是负数
100 1 //else T_sign=0;
101 1
102 1 if(b>0x7f)
103 1 {
104 2 a=~a;b=~b+1; //补码转换,取反加一
105 2 T_sign=1; //温度为负时flag=0
106 2
107 2 }
108 1 sdata=a/16+b*16;
109 1 t_bai=sdata/100;
110 1 t_shi=sdata/10;
111 1 t_ge=sdata%10;
112 1 t_feng=(a&0x0f)*10/16;
113 1 t_miao=(a&0x0f)*100/16%10;
114 1
115 1 }
116
117
C51 COMPILER V8.02 HONGWAI1 08/13/2008 21:16:44 PAGE 3
118 /**********************************************************************************************
119 函数名称:延时函数
120 函数功能:转换延时和显示延时
121 说明:LCM1602_Delay()是液晶显示延时,delay()是温度转换延时
122 **********************************************************************************************/
123 void delay(unsigned int delay_time) // 延时程序
124 {
125 1 while(delay_time--);
126 1 }
127
128 void Delay1(uchar count)
129 {
130 1 uchar i;
131 1 while(--count!=0)
132 1 {for(i=0;i<250;i++);}
133 1 }
134
135 /**********************************************************************************************
136 函数名称:初始化函数
137 函数功能:对DS18B20进行初始化
138 说明:
139 **********************************************************************************************/
140 void DS18B20_init() //初始化DS18B20
141 {
142 1 unsigned char i=0;
143 1 DQ=1;
144 1 delay(8);
145 1 DQ=0;
146 1 delay(85); //精确延时484 us
147 1 DQ=1;
148 1 delay(14); //精确延时34us
149 1 i=DQ;
150 1 delay(20);
151 1
152 1 }
153
154 /**********************************************************************************************
155 函数名称:写函数
156 函数功能:向DS18B20写命令
157 说明:
158 **********************************************************************************************/
159 void DS18B20_send(unsigned char out_data) //主机发送一字节到DS18B20
160 {
161 1 unsigned char i=0;
162 1
163 1 for(i=8;i>0;i--)
164 1 {
165 2 DQ=0;
166 2 DQ=out_data&0x01; //数据从低位送出
167 2 delay(5); //精确延时61us
168 2 DQ=1;
169 2 out_data>>=1;
170 2 }
171 1 delay(4);
172 1 }
173
174 /**********************************************************************************************
175 函数名称:读函数
176 函数功能:从DS18B20读取数据
177 说明:
178 **********************************************************************************************/
179 uchar DS18B20_read(void)//主机从DS18B20中读取一字节
C51 COMPILER V8.02 HONGWAI1 08/13/2008 21:16:44 PAGE 4
180 {
181 1 unsigned char i,in_data;
182 1 in_data=0;
183 1 for(i=8;i>0;i--)
184 1 {
185 2 DQ=1;
186 2 delay(1);
187 2 DQ=0; //给脉冲信号
188 2 in_data>>=1;
189 2 DQ=1; //给脉冲信号
190 2 if(DQ)
191 2 in_data|=0x80;
192 2 delay(4);
193 2 }
194 1 return(in_data);
195 1 }
196
197 /**********************************************************************************************
198 函数名称:显示函数
199 函数功能:显示函数
200 说明:
201 **********************************************************************************************/
202 void display()
203 {
204 1 P1=0xfe;
205 1 P0=tab[t_shi];
206 1 Delay1(4);
207 1 P1=0xfd;
208 1 P0=tab[t_ge]|0x80;
209 1 Delay1(4);
210 1 P1=0xfb;
211 1 P0=tab[t_feng];
212 1 Delay1(4);
213 1 P1=0xf7;
214 1 P0=tab[t_miao];
215 1 Delay1(4);
216 1 P1=P2|0x0f;
217 1 P0=0x00;
218 1 }
219
220
221 /**********************************************************************************************
222 函数名称:主函数
223 函数功能:主函数
224 说明:
225 **********************************************************************************************/
226 void main()
227 {
228 1 int i,j;
229 1 // P1=0x00;
230 1 // P0=0x00;
231 1 EA=1;
232 1 ES=1;
233 1 init();
234 1 while(1)
235 1 {
236 2 ReadTemperature();
237 2 display();
238 2 save();
239 2 if(P3_2==0)
240 2 {
241 3 for(i=0;i<2;i++)
C51 COMPILER V8.02 HONGWAI1 08/13/2008 21:16:44 PAGE 5
242 3 for(j=200;j>0;j--);
243 3 if(P3_2==0)
244 3 {
245 4 send_str();
246 4 while(P3_2==0);
247 4 }
248 3
249 3 }
250 2 }
251 1 }
252
253
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 424 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 3
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -