?? 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 + -