tlc549lcd.lst
来自「一些51单片机基础模块的程序」· LST 代码 · 共 380 行 · 第 1/2 页
LST
380 行
177
178 /********************************************************************
C51 COMPILER V7.50 TLC549LCD 04/10/2009 22:39:34 PAGE 4
179 * 名称 : Main()
180 * 功能 : 主函数
181 * 输入 : 无
182 * 输出 : 无
183 ***********************************************************************/
184 void Test_TLC549(void)
185 {
186 1 uint i = 0,temp;
187 1 uint j;
188 1 P2 = 0x00;
189 1 for(i=0; i<100; i++) delay();
190 1 delay();
191 1 L1602_init();
192 1 L1602_string(1,1,"AD(TLC549) TEST ");
193 1 L1602_string(2,1," 0.00V ");
194 1 P2 = 0x00;
195 1 P1 = 0xff;
196 1 for(i=0; i<500; i++)
197 1 {
198 2 temp = AD_Change();
199 2 j = temp * 2; //这里取的是一个大概的值。真实电压应为 temp * 5 / 256, 得出的数为 "x.xx"。
200 2 L1602_char(2,6,j/100%10+48);
201 2 L1602_char(2,8,j/10%10+48);
202 2 L1602_char(2,9,j%10+48);
203 2 delay();
204 2 }
205 1 enable(0x01);
206 1 }
207
208 #define jump_ROM 0xCC
209 #define start 0x44
210 #define read_EEROM 0xBE
211
212 sbit DQ = P3^4;
213 unsigned char TMPH,TMPL;
214
215
216 /********************************************************************
217 * 名称 : delay()
218 * 功能 : 延时函数
219 * 输入 : 无
220 * 输出 : 无
221 ***********************************************************************/
222 void delay_11(uint N)
223 {
224 1 int i;
225 1 for(i=0; i<N; i++)
226 1 ;
227 1 }
228
229 /********************************************************************
230 * 名称 : Reset()
231 * 功能 : 复位DS18B20
232 * 输入 : 无
233 * 输出 : 无
234 ***********************************************************************/
235 uchar Reset(void)
236 {
237 1 uchar deceive_ready;
238 1 DQ = 0;
239 1 delay_11(29);
240 1 DQ = 1;
C51 COMPILER V7.50 TLC549LCD 04/10/2009 22:39:34 PAGE 5
241 1 delay_11(3);
242 1 deceive_ready = DQ;
243 1 delay_11(25);
244 1 return(deceive_ready);
245 1 }
246
247 /********************************************************************
248 * 名称 : read_bit()
249 * 功能 : 从DS18B20读一个位值
250 * 输入 : 无
251 * 输出 : 从DS18B20读出的一个位值
252 ***********************************************************************/
253 uchar read_bit(void)
254 {
255 1 uchar i;
256 1 DQ = 0;
257 1 DQ = 1;
258 1 for(i=0; i<3; i++);
259 1 return(DQ);
260 1 }
261
262 /********************************************************************
263 * 名称 : write_bit()
264 * 功能 : 向DS18B20写一位
265 * 输入 : bitval(要对DS18B20写入的位值)
266 * 输出 : 无
267 ***********************************************************************/
268 void write_bit(uchar bitval)
269 {
270 1 DQ=0;if(bitval==1)
271 1 DQ=1;
272 1 delay_11(5);
273 1 DQ=1;
274 1 }
275
276 /********************************************************************
277 * 名称 : read_byte()
278 * 功能 : 从DS18B20读一个字节
279 * 输入 : 无
280 * 输出 : 从DS18B20读到的值
281 ***********************************************************************/
282 uchar read_byte(void)
283 {
284 1 uchar i,m,receive_data;
285 1 m = 1;
286 1 receive_data = 0;
287 1 for(i=0; i<8; i++)
288 1 {
289 2 if(read_bit())
290 2 {
291 3 receive_data = receive_data + (m << i);
292 3 }
293 2 delay_11(6);
294 2 }
295 1 return(receive_data);
296 1 }
297
298 /********************************************************************
299 * 名称 : write_byte()
300 * 功能 : 向DS18B20写一个字节
301 * 输入 : val(要对DS18B20写入的命令值)
302 * 输出 : 无
C51 COMPILER V7.50 TLC549LCD 04/10/2009 22:39:34 PAGE 6
303 ***********************************************************************/
304 void write_byte(uchar val)
305 {
306 1 uchar i,temp;
307 1 for(i=0; i<8; i++)
308 1 {
309 2 temp = val >> i;
310 2 temp = temp & 0x01;
311 2 write_bit(temp);
312 2 delay_11(5);
313 2 }
314 1 }
315
316 void Test_DS18B20()
317 {
318 1 float tt, i;
319 1 uint temp;
320 1 P2 = 0x00;
321 1 for(i=0; i<100; i++) delay();
322 1 L1602_init();
323 1 L1602_string(1,1," DS18B20 TEST ");
324 1 L1602_string(2,1,"Temperature:00`C");
325 1 for(i=0; i<300; i++)
326 1 {
327 2 Reset();
328 2 write_byte(jump_ROM);
329 2 write_byte(start);
330 2 Reset();
331 2 write_byte(jump_ROM);
332 2 write_byte(read_EEROM);
333 2 TMPL = read_byte();
334 2 TMPH = read_byte();
335 2 temp = TMPH;
336 2 temp <<= 8;
337 2 temp = temp | TMPL;
338 2 tt = TMPL * 0.0625;
339 2 temp = TMPL / 16 + TMPH * 16;
340 2 L1602_char(2,13,temp/10%10 + 48);
341 2 L1602_char(2,14,temp%10 + 48);
342 2 }
343 1 enable(0x01);
344 1 }
345
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 890 ----
CONSTANT SIZE = 68 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?