📄 lj.lst
字号:
140 1 value = tmpvalue;
141 1
142 1 t = value * 0.0625;
143 1 //将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入
144 1 //如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度
145 1 //如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度
146 1 value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5
147 1 return value;
148 1 }
149
150
151 display(int num_data)
152 {
153 1 int r;
154 1 idata num_temp[4];
155 1 num_temp[0]=num_data/1000;//求显示数字的千位
156 1 num_temp[1]=(num_data-num_temp[0]*1000)/100;//求显示数字的百位
157 1 num_temp[2]=((num_data-num_temp[0]*1000)-num_temp[1]*100)/10;//求显示数字的十位
158 1 num_temp[3]=num_data%10; //求显示数字的个位
159 1 for(r=0;r<4;r++)
160 1 {
161 2 P2=disp_scan[r];
162 2 P0=disp_data[num_temp[r]];
163 2 delay(1);
164 2 }
165 1 }
166
167
168
169 // 初始化串口
170 void init_serial()
171 {
172 1 TMOD = 0x21; // 定时器1工作于8位自动重载模式, 用于产生波特率
173 1 TH1 = 0xF3; // 波特率9600
174 1 TL1 = 0xF3;
175 1
176 1 SCON = 0x50; // 设定串行口工作方式
177 1 PCON &= 0xef; // 波特率不倍增
178 1
C51 COMPILER V8.02 LJ 06/10/2007 21:33:29 PAGE 4
179 1 TR1 = 1; // 启动定时器1
180 1
181 1 }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
182
183
184
185
186 // 发送数据 //
187 void send_data(unsigned char *buf)
188 {
189 1 unsigned char len; // 保存数据长度
190 1 unsigned char ecc; // 保存校验字节
191 1 int i;
192 1 len = strlen(buf); // 计算要发送数据的长度
193 1 ecc = len; // 开始进行校验字节计算
194 1 // 发送数据长度
195 1 TI = 0;
196 1 SBUF = len; // 发送长度
197 1 while(!TI);
198 1 TI = 0;
199 1 //发送数据
200 1 for(i=0; i<len; i++)
201 1 {
202 2 ecc = ecc^(*buf); // 计算校验字节
203 2 SBUF = *buf; // 发送数据
204 2 buf++;
205 2 while(!TI);
206 2 TI = 0;
207 2 }
208 1 // 发送校验字节
209 1 //SBUF = ecc; // 发送校验字节
210 1 //while(!TI);
211 1 //TI = 0;
212 1 }
213
214
215 void main()
216 {
217 1 int i,r;
218 1 idata num_temp[5];
219 1 idata char sd[5];
220 1 init_serial();
221 1
222 1 while(1)
223 1 {
C51 COMPILER V8.02 LJ 06/10/2007 21:33:29 PAGE 5
224 2 //启动温度转换
225 2 sendChangeCmd();
226 2 tempValue=getTmpValue();
227 2 num_temp[0]=tempValue/1000;//求显示数字的千位
228 2 num_temp[1]=(tempValue-num_temp[0]*1000)/100;//求显示数字的百位
229 2 num_temp[3]=((tempValue-num_temp[0]*1000)-num_temp[1]*100)/10;//求显示数字的十位
230 2 num_temp[4]=tempValue%10; //求显示数字的个位
231 2
232 2 for(r=0;r<5;r++)
233 2 {
234 3 if(r==2)
235 3 sd[r]='.';
236 3 else
237 3 sd[r]=sd_data[num_temp[r]];
238 3 }
239 2
240 2 for(i=0;i<10;i++)
241 2 { display(tempValue);}
242 2 send_data(sd);
243 2
244 2
245 2
246 2 }
247 1 }
-
-
-
-
-
-
-
-
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 872 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 15
IDATA SIZE = ---- 23
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -