?? temprature.lst
字號:
C51 COMPILER V7.06 TEMPRATURE 04/09/2008 00:06:15 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEMPRATURE
OBJECT MODULE PLACED IN temprature.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.exe temprature.c DB OE
stmt level source
1 #include "C8051F330.h"
2
3 #define TRUE 1
4 #define FALSE 0
5 #define ADC0START ADC0CN|=0x10;
6
7 #define Set_Bit(BIT) (BIT = 1) /*定義置1函數(shù)*/
8 #define Clear_Bit(BIT) (BIT = 0) /*定義清0函數(shù)*/
9
10
11
12 sbit ChouYang=P0^1; //臭氧控制位
13 sbit JiaRe_Disp=P0^4; //加熱燈顯示位
14 sbit FengShan_Disp=P0^5; //排風燈顯示位
15 sbit JiaRe=P0^7; //加熱控制位
16 sbit ChouYang_Disp=P1^1; //臭氧顯示位
17 sbit FengShan=P1^0; //風扇控制位
18 sbit Kong=P1^2;
19
20 sbit DQ=P0^6;
21
22 sbit Hd7279_Key=P0^0; //7279按鍵識別信號
23 sbit Hd7279_CS=P1^4; //7279片選
24 sbit Hd7279_Clk=P1^5; //7279時鐘
25 sbit Hd7279_Data=P1^7; //7279信號
26
27 unsigned char n,a=0;
28 char TemperatureSet,TemperatureNow; //溫度
29 char TimeSet,TimeNow=0x00; //時間
30 //static unsigned char TemperatureTemp,TimeTemp;
31 unsigned char KeyValue; //按鍵值
32 static unsigned int Time_Inc=0,Time_Inc_30S=0,Time_Inc_5S=0;
33 static unsigned char Display_Select; //Display_Select=0(顯示當前溫度);Display_Select=1(顯示設定溫度);
34 static unsigned char Time_Change; //Time_Change=0(30s定時);Time_Change=1(5s定時)
35 static unsigned char ChouYang_Flag,JiaRe_Flag,FengShan_Flag; //標志位
36 /*ChouYang_Flag(01:開啟臭氧排放;02:臭氧指示燈亮;04:臭氧指示燈閃爍)*/
37 /*JiaRe_Flag(01:加熱開啟;02:加熱指示燈亮;04:加熱指示燈閃爍)*/
38 /*FengShan_Flag(01:排風開啟;02:排風指示燈亮;04:排風指示燈閃爍)*/
39 bit isnewdata;
40 unsigned int kk=0;
41 float temp=0.0;
42 float count=0.0;
43 char Control_Auto;
44 char Control_Flag;
45 char FengShan_Time,JiaRe_Time;
46
47 char Int_Flag=0;
48 char CInt_Flag=0;
49 char Temperature_Flag=0;
50
51
52 void initial(void);
53 void timer_init(void);
54 void adc0_Rx(void);//對滑動變阻器采樣
55 void delayus(unsigned int x);
C51 COMPILER V7.06 TEMPRATURE 04/09/2008 00:06:15 PAGE 2
56
57 void Temperature_Display(unsigned char tempr);//顯示當前溫度
58 void Time_Display(unsigned char ); //顯示當前時間
59 void init_18B20(void);//初始化18B20
60 void write_18B20(unsigned char x);//向18B20寫數(shù)據(jù)
61 unsigned char read_18B20(void);//讀取18B20數(shù)據(jù)
62
63 void Write_Hd7279(unsigned char,unsigned char); /*定義HD7279寫函數(shù)*/
64 unsigned char Read_Hd7279(unsigned char); /*定義HD7279讀函數(shù)*/
65 void Send_Byte(unsigned char); /*定義HD7279發(fā)送字節(jié)函數(shù)*/
66 unsigned char Receive_Byte(void); /*定義HD7279接收字節(jié)函數(shù)*/
67 void Short_Delay(void); /*定義短延時函數(shù)*/
68 void Long_Delay(void); /*定義長延時函數(shù)*/
69 void System_Initial(void); //設定初始設定
70
71 void Control_Key_Check(void); //檢查控制按鍵
72 void Up_Down_Check(void ); //檢查是否在增加減少溫度/時間值
73 void ChouYang_Check(void);
74 void LED_Flash(void);
75 void delayms(int);
76
77 void main(void)
78 {
79 1 float sumTemp=0.0;
80 1 unsigned char index=0;
81 1 int sign=1,i;
82 1 int a=0;
83 1 delayus(50);
84 1 System_Initial();
85 1 initial();
86 1
87 1 timer_init();
88 1 delayus(100);
89 1 EA=1; //開中斷
90 1 for(i=0;i<0x200;i++)
91 1 Send_Byte(0xa4); /*HD7279復位*/
92 1 Write_Hd7279(0x98,0x0f); /*HD7279啟動消隱功能,能提高燈的亮度*/
93 1 Send_Byte(0x88);
94 1 Send_Byte(0xff); //LED停止閃爍
95 1 delayms(1000);
96 1 TimeNow=TimeSet;
97 1 Temperature_Display(TemperatureNow);
98 1
99 1 while(1)
100 1 {
101 2
102 2 Time_Display(TimeSet); //顯示當前時間
103 2 if(Display_Select==0) //顯示當前溫度
104 2 Temperature_Display(TemperatureNow);
105 2 if(Display_Select==1) //顯示設定溫度
106 2 Temperature_Display(TemperatureSet);
107 2
108 2 Up_Down_Check(); //檢查是否在增加減少溫度/時間值
109 2 ChouYang_Check();
110 2
111 2 if(Control_Flag==1)
112 2 {
113 3 Control_Flag=0;
114 3 Control_Auto=1;
115 3
116 3 }
117 2
C51 COMPILER V7.06 TEMPRATURE 04/09/2008 00:06:15 PAGE 3
118 2 if(Control_Auto==0)
119 2 {
120 3 if(Temperature_Flag==1)
121 3 {
122 4 if((TemperatureNow>TemperatureSet+5))
123 4 {
124 5 JiaRe=0; //停止加熱
125 5
126 5
127 5 delayms(100);
128 5 FengShan=1; //排風
129 5
130 5 }
131 4 LED_Flash();
132 4
133 4 if((TemperatureNow<TemperatureSet-5))
134 4 {
135 5 FengShan=0;
136 5 delayms(100);
137 5 JiaRe=1; //開始加熱
138 5
139 5
140 5 }
141 4 Temperature_Flag=0;
142 4 }
143 3 }
144 2 if(Control_Auto==1)
145 2 {
146 3
147 3 Control_Key_Check();
148 3 }
149 2
150 2
151 2
152 2
153 2
154 2 }
155 1 }
156
157 void delayus(unsigned int x)
158 {
159 1 while(x)
160 1 {
161 2 x--;
162 2 }
163 1 }
164
165 void delayms(int x)
166 {
167 1 int i;
168 1 for(i=0;i<1000;i++)
169 1 delayus(x);
170 1 }
171 void System_Initial(void) //設定初始設定
172 {
173 1 ChouYang=0; //臭氧不開
174 1 ChouYang_Disp=0; //臭氧指示關閉
175 1 JiaRe=0; //加熱關閉
176 1 JiaRe_Disp=0; //加熱指示關閉
177 1 FengShan=0; //風扇關閉
178 1 FengShan_Disp=0; //風扇指示關閉
179 1 ChouYang_Flag=0; //臭氧標志位清零
C51 COMPILER V7.06 TEMPRATURE 04/09/2008 00:06:15 PAGE 4
180 1 JiaRe_Flag=0; //加熱標志位清零
181 1 FengShan_Flag=0; //排風標志位清零
182 1 KeyValue=0xff;
183 1
184 1 TimeSet=45;
185 1 TemperatureSet=30; //30
186 1 TemperatureNow=0;
187 1 Display_Select=0;
188 1
189 1 Int_Flag=0;
190 1
191 1 Control_Auto=0;
192 1 FengShan_Time=0;
193 1 JiaRe_Time=0;
194 1 Control_Flag=0;
195 1
196 1
197 1 }
198
199 void initial(void)
200 {
201 1 PCA0MD=0x00;//禁用看門狗
202 1
203 1 P0MDIN=0xF3; //P0.2,P0.3配置為模擬輸入(晶振)
204 1 P0MDOUT=0xBE;
205 1 P0SKIP=0x0C; //P0.2,P0.3配置為模擬輸入
206 1
207 1 P1MDIN=0xFF; //所有P1口配置為數(shù)字I/O口
208 1 P1MDOUT=0xFF;
209 1 P1SKIP=0x00; //推挽輸出
210 1
211 1 XBR0=0x00;
212 1 XBR1=0x40;
213 1
214 1 //*/使用內(nèi)部高頻時鐘
215 1 OSCICL=0xFF;
216 1 OSCICN=0x80;//系統(tǒng)時鐘15/8M
217 1 CLKSEL=0x00;
218 1 //*/
219 1 //*/切換到外部振蕩器
220 1 OSCXCN=0x67;
221 1 for(n=0;n<255;n++);
222 1 while(0==(OSCXCN&0x80))
223 1 {
224 2 }
225 1 CLKSEL=0x01;//外部振蕩器
226 1 OSCICN=0x00; //禁止內(nèi)部振蕩器
227 1 //*/
228 1 //初始化ADC0
229 1
230 1 //
231 1 IT01CF=0x00; //使P0.0(HD7279_Key)為中斷(INT0),低電平有效
232 1
233 1 IT0=1; //邊緣觸發(fā)
234 1 // TCON&=0xFE;
235 1
236 1 EX0=1;
237 1
238 1
239 1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -