📄 zlg7289demo2.lst
字号:
C51 COMPILER V7.07 ZLG7289DEMO2 11/24/2007 15:09:08 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE ZLG7289DEMO2
OBJECT MODULE PLACED IN ZLG7289Demo2.OBJ
COMPILER INVOKED BY: E:\keil\C51\Bin\c51.exe ZLG7289Demo2.c DB OE
stmt level source
1
2 #include "ZLG7289.h"
3
4
5 volatile unsigned char Key = 0xFF;
6
7 sbit DQ = P1^3; //定义DS18B20端口DQ
8 sbit BEEP=P1^7 ;
9
10 unsigned char presence ;
11 unsigned char data temp_data[2] = {0x00,0x00};
12 unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00};
13 unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
14 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
15 void beep();
16 sbit DIN = P0^7; //小数点
17 bit flash=0; //显示开关标记
18
19 void INT0_SVC() interrupt 0
20 {
21 1 Key = ZLG7289_Key();
22 1 }
23
24
25 /*
26 函数:Delay()
27 功能:延时0.01 655.36s
28 参数:
29 t>0时,延时(t*0.01)s
30 t=0时,延时655.36s
31 说明:
32 晶振采用11.0592MHz
33 */
34 void Delay(unsigned int t)
35 {
36 1 do
37 1 {
38 2 TH0 = 0xDC;
39 2 TL0 = 0x00;
40 2 TR0 = 1;
41 2 while ( !TF0 );
42 2 TF0 = 0;
43 2 TR0 = 0;
44 2 } while (--t);
45 1 }
46
47 /**********************************************************/
48 void Delayb20(unsigned int num)//延时函数
49 {
50 1 while( --num );
51 1 }
52
53 /**********************************************************/
54 Init_DS18B20(void)//初始化ds1820
55 {
C51 COMPILER V7.07 ZLG7289DEMO2 11/24/2007 15:09:08 PAGE 2
56 1
57 1 DQ = 1; //DQ复位
58 1 Delayb20(8); //稍做延时
59 1
60 1 DQ = 0; //单片机将DQ拉低
61 1 Delayb20(90); //精确延时 大于 480us
62 1
63 1 DQ = 1; //拉高总线
64 1 Delayb20(8);
65 1
66 1 presence = DQ; //如果=0则初始化成功 =1则初始化失败
67 1 Delayb20(100);
68 1 DQ = 1;
69 1
70 1 return(presence); //返回信号,0=presence,1= no presence
71 1 }
72
73 /**********************************************************/
74 ReadOneChar(void)//读一个字节
75 {
76 1 unsigned char i = 0;
77 1 unsigned char dat = 0;
78 1
79 1 for (i = 8; i > 0; i--)
80 1 {
81 2 DQ = 0; // 给脉冲信号
82 2 dat >>= 1;
83 2 DQ = 1; // 给脉冲信号
84 2
85 2 if(DQ)
86 2 dat |= 0x80;
87 2 Delayb20(4);
88 2 }
89 1
90 1 return (dat);
91 1 }
92
93 /**********************************************************/
94 WriteOneChar(unsigned char dat)//写一个字节
95 {
96 1 unsigned char i = 0;
97 1 for (i = 8; i > 0; i--)
98 1 {
99 2 DQ = 0;
100 2 DQ = dat&0x01;
101 2 Delayb20(5);
102 2
103 2 DQ = 1;
104 2 dat>>=1;
105 2 }
106 1 }
107
108 /*********************************************************/
109
110 Read_Temperature(void)//读取温度
111 {
112 1 Init_DS18B20();
113 1 if(presence==1)
114 1 { beep();flash=1;} //DS18B20不正常,蜂鸣器报警
115 1 else
116 1 {
117 2 flash=0;
C51 COMPILER V7.07 ZLG7289DEMO2 11/24/2007 15:09:08 PAGE 3
118 2 WriteOneChar(0xCC); // 跳过读序号列号的操作
119 2 WriteOneChar(0x44); // 启动温度转换
120 2
121 2 Init_DS18B20();
122 2 WriteOneChar(0xCC); //跳过读序号列号的操作
123 2 WriteOneChar(0xBE); //读取温度寄存器
124 2
125 2 temp_data[0] = ReadOneChar(); //温度低8位
126 2 temp_data[1] = ReadOneChar(); //温度高8位
127 2 }
128 1 }
129 /*********************************************************/
130 void beep()
131 {
132 1 unsigned char i;
133 1 for (i=0;i<100;i++)
134 1 {
135 2 Delayb20(60);
136 2 BEEP=!BEEP; //BEEP取反
137 2 }
138 1 BEEP=1; //关闭蜂鸣器
139 1 }
140 Disp_Temperature()//显示温度
141 {
142 1 unsigned char n=0;
143 1
144 1 display[4]=temp_data[0]&0x0f;
145 1 display[0]=ditab[display[4]]; //查表得小数位的值
146 1
147 1 display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
148 1 display[3]=display[4]/100;
149 1 display[1]=display[4]%100;
150 1 display[2]=display[1]/10;
151 1 display[1]=display[1]%10;
152 1
153 1 ZLG7289_Download(1,4,0,display[0]);
154 1 ZLG7289_Download(1,5,1,display[1]);
155 1 ZLG7289_Download(1,6,0,display[2]);
156 1 ZLG7289_Download(1,7,0,display[3]);
157 1 //ZLG7289_Hide(8);
158 1 }
159
160 void main()
161 {
162 1
163 1
164 1 TMOD = 0x01;
165 1 Delay(30); //延时300ms,等待ZLG7289复位完毕
166 1 ZLG7289_Init(4); //调用ZLG7289的初始化函数
167 1 Delay(100);
168 1 //测试
169 1 ZLG7289_Test();
170 1 Delay(200);
171 1 //复位
172 1 ZLG7289_Reset();
173 1 Delay(100);
174 1 while(1)
175 1 {
176 2
177 2 Read_Temperature();
178 2 if(flash==0)
179 2 {Disp_Temperature();}
C51 COMPILER V7.07 ZLG7289DEMO2 11/24/2007 15:09:08 PAGE 4
180 2 Delay(100);
181 2 }
182 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 433 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 1
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 + -