📄 storagecontrol.lst
字号:
C51 COMPILER V8.05a STORAGECONTROL 05/12/2009 10:20:45 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE STORAGECONTROL
OBJECT MODULE PLACED IN storageControl.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE storageControl.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**
2 * 文件说明:仓库温湿度控制系统————主程序
3 * 作 者:
4 * 时 间:2009-05-03
5 */
6
7 #include <reg52.h>
8 #include "LCD1602.h"
9 #include "DS18B20.h"
10 #include "hs1101.h"
11 #include "storageControl.h"
12 /*添加还需要的头文件*/
13
14
15 /*********************定义程序变量*********************/
16 unsigned char temperature; /*检测温度*/
17 //unsigned char t_array[5];
18
19 unsigned char himidity; /*检测湿度*/
20 //unsigned char h_array[4];
21
22 unsigned int frequency; /*检测频率*/
23 unsigned char count;
24
25 unsigned char keyId; /*按键号*/
26
27 unsigned char sysRun, ParaSet, limitSet; /*系统运行、设置标志位*/
28 unsigned char Paratemp;
29 unsigned char Parat[3];
30
31 unsigned char tmax, tmin, hmax, hmin;
32 unsigned char err_flag;
33 //extern unsigned int HStable[][2]; /*HS1101经典频率表, 由外部程序进行定义*/
34
35 /*主程序开始*/
36 void main(void)
37 {
38 1 unsigned char t_array[5];
39 1 unsigned char h_array[4];
40 1 /**/
41 1 initial();
42 1
43 1 /*进入系统轮回处理*/
44 1 while(1)
45 1 {
46 2 keyId = key_scan(); /*按键扫描*/
47 2
48 2 systemSet(keyId);
49 2
50 2 if (sysRun == 1)
51 2 {
52 3 monitor();
53 3
54 3 if (count > 100) /*1S刷新一次*/
55 3 {
C51 COMPILER V8.05a STORAGECONTROL 05/12/2009 10:20:45 PAGE 2
56 4 EA = 0;
57 4 temperature = ReadTemp(); /*读取温度*/
58 4 EA = 1;
59 4 temp_to_str(&t_array, temperature); /*将温度转换成可显示的数组*/
60 4
61 4 frequency = getfreq(); /*计算频率*/
62 4
63 4
64 4 himidity = gethumidity(frequency); /*读取湿度*/
65 4 himi_to_str(&h_array, himidity);
66 4
67 4 GotoXY(0, 0);
68 4 Print("Temp: ");
69 4 Print(t_array);
70 4 delay_ms(10);
71 4
72 4 GotoXY(0, 1);
73 4 Print("Himi: ");
74 4 Print(h_array);
75 4 delay_ms(10);
76 4 /*
77 4 GotoXY(11, 0);
78 4 Print("key:");
79 4 LCD_Write(1, keyId + 0x30);
80 4 count = 0;
81 4 */
82 4 }
83 3 }
84 2 //buzzer = ~buzzer;
85 2 }
86 1 }
87
88 void initial(void)
89 {
90 1 /*定时器初始化*/
91 1 timerInit();
92 1
93 1 /*液晶初始化*/
94 1 LCD_Initial();
95 1 GotoXY(0,0);
96 1 Print("Storage Monitor");
97 1 GotoXY(3,1);
98 1 Print("Press MODE");
99 1
100 1 /*参数初始化*/
101 1 tmax = tMAX;
102 1 tmin = tMIN;
103 1 hmax = hMAX;
104 1 hmin = hMIN;
105 1
106 1 RUN = 1;
107 1 ERR_MIN = 1;
108 1 ERR_MAX = 1;
109 1 buzzer = 1;
110 1
111 1 /*其他初始化工作*/
112 1 //sysRun = 1;
113 1
114 1 }
115
116 void timerInit(void)
117 {
C51 COMPILER V8.05a STORAGECONTROL 05/12/2009 10:20:45 PAGE 3
118 1 TMOD = 0x51; /*timer0 方式1计时, timer1方式1计数*/
119 1 TH0 = (65536 - 10000) / 256;
120 1 TL0 = (65536 - 10000) % 256;
121 1 TH1 = 0;
122 1 TL1 = 0;
123 1 RCAP2H = (65536 - 10000) / 256; //T2自动重载
124 1 RCAP2L = (65536 - 10000) % 256;
125 1 TH2 = RCAP2H;
126 1 TL2 = RCAP2L;
127 1 ET0 = 1;
128 1 ET1 = 1;
129 1 ET2 = 1;
130 1 EA = 1;
131 1 //TR0 = 1; /*启动T*/
132 1 //TR1 = 1;
133 1 //TR2 = 1;
134 1 }
135
136 unsigned int getfreq(void)
137 {
138 1 unsigned int f;
139 1
140 1 TH1 = TL1 = 0; /*计数器1清零*/
141 1 TH0 = (65536 - 10000) / 256;
142 1 TL0 = (65536 - 10000) % 256;
143 1
144 1 TF0 = 0; /*清定时器零溢出中断*/
145 1
146 1
147 1 TR0 = TR1 = 1; /*启动*/
148 1
149 1 while(TF0 != 1); /*等待定时时间到*/
150 1
151 1 TR0 = TR1 = 0; /*定时到, 关中断*/
152 1
153 1 f = TH1*256 + TL1; /*计算频率*/
154 1 f *= 100;
155 1
156 1 return f;
157 1 }
158
159
160 unsigned char key_scan(void)
161 {
162 1 uchar a, b, c, key = 254;
163 1
164 1 keyPort = 0xf0;
165 1
166 1 if (keyPort != 0xf0)
167 1 {
168 2 delay_ms(10);
169 2 keyPort = 0xf0;
170 2 if(keyPort != 0xf0)
171 2 {
172 3 a = keyPort;
173 3 keyPort = 0x0f;
174 3 b = keyPort;
175 3
176 3 c = a | b;
177 3 if(c == 0xee) key = 1;
178 3 if(c == 0xed) key = 2;
179 3 if(c == 0xeb) key = 3;
C51 COMPILER V8.05a STORAGECONTROL 05/12/2009 10:20:45 PAGE 4
180 3 if(c == 0xe7) key = 15;
181 3 if(c == 0xde) key = 4;
182 3 if(c == 0xdd) key = 5;
183 3 if(c == 0xdb) key = 6;
184 3 if(c == 0xd7) key = 12;
185 3 if(c == 0xbe) key = 7;
186 3 if(c == 0xbd) key = 8;
187 3 if(c == 0xbb) key = 9;
188 3 if(c == 0xb7) key = 14;
189 3 if(c == 0x7e) key = 10;
190 3 if(c == 0x7d) key = 0;
191 3 if(c == 0x7b) key = 11;
192 3 if(c == 0x77) key = 13;
193 3
194 3 keyPort = 0xf0;
195 3 while(keyPort != 0xf0);
196 3 }
197 2 }
198 1 return key;
199 1 }
200
201 void systemSet(unsigned char k)
202 {
203 1 if (k == MODE) //进入主模式
204 1 {
205 2 //显示提示
206 2 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
207 2 delay_ms(10);
208 2 GotoXY(0,0);
209 2 Print("1. temperature");
210 2 //delay_ms(10);
211 2 GotoXY(0,1);
212 2 Print("2. humidity");
213 2 //delay_ms(10);
214 2 sysRun = 0;
215 2 ParaSet = 1;
216 2 }
217 1 if (k == ENT)
218 1 {
219 2 //完成设置
220 2 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
221 2 sysRun = 1;
222 2 TR2 = 1;
223 2 }
224 1 if (sysRun == 0 && ParaSet == 1)
225 1 {
226 2 while(1)
227 2 {
228 3 keyId = key_scan();
229 3 if (keyId == 1) //进入温度设置
230 3 {
231 4 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
232 4 delay_ms(10);
233 4 GotoXY(0,0);
234 4 Print("tMAX:");
235 4 //delay_ms(10);
236 4 GotoXY(0,1);
237 4 Print("tMIN:");
238 4 //delay_ms(10);
239 4
240 4 GotoXY(8,0);
241 4 LCD_SetDisplay(LCD_SHOW|LCD_CURSOR|LCD_FLASH);
C51 COMPILER V8.05a STORAGECONTROL 05/12/2009 10:20:45 PAGE 5
242 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -