?? xiyiji.lst
字號:
C51 COMPILER V7.07 XIYIJI 09/11/2005 16:35:01 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE XIYIJI
OBJECT MODULE PLACED IN xiyiji.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE xiyiji.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*P1.0~~~p1.5 鍵盤掃描口
2 P3.5 測溫器
3 P3.6 加熱器
4 P0 顯示數(shù)據(jù)口
5 P2.0~~~P2.2 顯示口控制線
6 P2.3 檢測水滿
7 P2.4 檢測水排光
8 P2.5 加水閘;
9 P2.6 排水閘;
10 P2.7 喇叭
11 3.0 洗衣服電機
12 P3.1 洗衣服電機
13 P3.2 P3.3 P3.4 狀態(tài)燈口
14 剩下沒用到的口有
15 P3.7 P1.6 P1.7
16 */
17 //*******************************************************
18 #include <at89x51.h>
19 unsigned char minite=24; //分鐘全局變量在定時器0中用到
20 unsigned char second=8; //秒鐘全局變量在定時器0中用到
21 unsigned char wdz=37; //全局變量可調(diào)節(jié)的臨界溫度值變量
22 bit flag=0;
23 bit sflag=0; //設(shè)置慢洗中的變量 在定時器0中用到
24 bit sflagg=0; //設(shè)置報警中的變量 在定時器1中用到
25 unsigned char san=0; //設(shè)置三分鐘排水 報警中的變量 在定時器1中用到
26 unsigned char ba=0; //設(shè)置八分鐘排水 報警中的變量 在定時器1中用到
27 unsigned char biao=0; //設(shè)置標號選擇 識別按鍵值
28 unsigned char su=0; //確定鍵的標識號
29 unsigned char jc1,jc2;//暫停時 寄存 p2 p3 口
30 //******************************************************
31 void jia();
32 void jian();
33 void getkey(void);
34 void jiashui(void);
35 void paishui(void);
36 void jiawen(void);
37 void threetime(void );
38 void twotime(void);
39 void manxi(void);
40 void sure(void);
41 void baojing(void);
42 //*************************************************
43 void daojishi(void) ;//定時器0
44 void dingshi(void) ;//定時器1
45 //************************************************
46 void disauto3();//以下是六個操作按鍵的顯示函數(shù)
47 void disauto2(void);
48 void diskxi(void);
49 void dismxi(void);
50 void distuoshui(void);
51 void disjiare(void);
52 //*************************************************
53 void delay(unsigned int i);//延時
54 void Delay1ms(unsigned int count);//延時
55 //LCD燈顯示的初始化******************************************
C51 COMPILER V7.07 XIYIJI 09/11/2005 16:35:01 PAGE 2
56 sbit LcdRs = P2^0;
57 sbit LcdRw = P2^1;
58 sbit LcdEn = P2^2;
59 #define DBPort P0
60 #define LCD_COMMAND 0 // Command
61 #define LCD_DATA 1 // Data
62 unsigned char LCD_Wait(void);
63 void LCD_Write(bit style, unsigned char input);
64 void LCD_Initial();
65 void GotoXY(unsigned char x, unsigned char y);
66 void Print(unsigned char *str);
67 void IntToStr( unsigned char *str) ;
68 void charToStr( unsigned char *str) ;
69 void display(void);//顯示當前溫度和設(shè)置要到的溫度
70 void disp(void);//
71 void wdszStr( unsigned char *str) ;
72 void wdszdis(void);
73 //**************************************
74 sbit DQ=P3^5;//讀溫度是用到的函數(shù)
75 ReadOneChar(void);//讀一個字節(jié)
76 WriteOneChar(unsigned char dat);
77 unsigned int ReadTemperature(void);//讀取溫度
78 //***************************************************
79 void main(void)
80 {
81 1 unsigned char n;
82 1 for(n=0;n<2;n++)
83 1 {
84 2 P2=0;P3=0;
85 2 LCD_Initial();
86 2 Delay1ms(10);
87 2 GotoXY(0,0);
88 2 Print("Hello Welcome to");
89 2 GotoXY(0,1);
90 2 Print("Washing System !");
91 2 }
92 1 while(1)
93 1 {
94 2 getkey();
95 2 if((biao==3)||(biao==4)||(biao==5))disp();
96 2 if(biao==6)display();
97 2 }
98 1 }
99 //************************************************************************
100 void Delay1ms(unsigned int count)
101 {
102 1 unsigned int i,j;
103 1 for(i=0;i<count;i++)
104 1 for(j=0;j<120;j++);
105 1 }
106 void delay(unsigned int i)//延時函數(shù)
107 {
108 1 while(i--);
109 1 }
110 //*************************************************************************
111 bit pkey(void)//判斷鍵的否被按下,通過返回值確定
112 {
113 1 P1=0x38; //p.0~p1.2接行,p1.3~~~p1.5接列。。給行輸入低電平,給列輸入高電平,整體掃描
114 1 if(P1!=0x38)
115 1 {
116 2 Delay1ms(50);
117 2 if(P1!=0x38)
C51 COMPILER V7.07 XIYIJI 09/11/2005 16:35:01 PAGE 3
118 2 return 1;//如果有按鍵按下返回1
119 2 else
120 2 return 0;
121 2 }
122 1 else return 0;//沒有按鍵按下返回0
123 1 }
124 void getkey(void)
125 {
126 1 unsigned char key=0x09,s,k,c;
127 1 while(1)
128 1 {
129 2 if(pkey()==1)
130 2 {
131 3 P1=0x3e;
132 3 k=0x3e;
133 3 for(c=0;c<3;c++)
134 3 {
135 4 s=P1&0x38;
136 4 switch(s)
137 4 {
138 5 case 0x30: key=3*c+0; break;
139 5 case 0x28: key=3*c+1; break;
140 5 case 0x18: key=3*c+2; break;
141 5 default: break;
142 5 }
143 4 k=(k<<1)|0x01;
144 4 P1=k;
145 4 }
146 3 while(pkey());
147 3 switch(key)
148 3 {
149 4 case 0x00 :if(su==0)disauto3(); break;//自動洗3次加脫水
150 4 case 0x01 :if(su==0)disauto2(); break;//自動洗2次加脫水
151 4 case 0x02 :if(su==0)diskxi();break;//快速洗一次
152 4 case 0x03 :if(su==0)dismxi() ;break;//慢速洗一次
153 4 case 0x04 :if(su==0)distuoshui();break;//脫水
154 4 case 0x05 :if(su==0)disjiare();break; //加溫
155 4 case 0x06 :jia(); break;//加
156 4 case 0x07 :jian();break;//減
157 4 case 0x08 :su++;if(su>=4)su=2;sure();break;//確定鍵和暫停
158 4 default :break;
159 4 }
160 3
161 3 }
162 2 else
163 2 break;
164 2 }
165 1 }
166 //****************************************************
167 void disauto3(void)
168 {
169 1 P3_2=0;P3_3=1;P3_4=1;TR1=0;
170 1 GotoXY(0,0);
171 1 Print("system will auto");
172 1 GotoXY(0,1);
173 1 Print("wash three times");
174 1 biao=1;
175 1 }
176 void disauto2(void)
177 {
178 1 P3_2=1;P3_3=0;P3_4=1;TR1=0;
179 1 GotoXY(0,0);
C51 COMPILER V7.07 XIYIJI 09/11/2005 16:35:01 PAGE 4
180 1 Print("system will auto");
181 1 GotoXY(0,1);
182 1 Print(" wash two times ");
183 1 biao=2;
184 1 }
185 void diskxi(void)
186 {
187 1 P3_2=0;P3_3=0;P3_4=1;TR1=0;
188 1 minite=8;
189 1 GotoXY(0,0);
190 1 Print(" kuai xi yi ci ");
191 1 GotoXY(0,1);
192 1 Print("time: ");
193 1 biao=3;
194 1 }
195 void dismxi(void)
196 {
197 1 P3_2=1;P3_3=1;P3_4=0;TR1=0;
198 1 minite=8;
199 1 GotoXY(0,0);
200 1 Print(" man xi yi ci ");
201 1 GotoXY(0,1);
202 1 Print("time: ");
203 1 biao=4;
204 1 }
205 void distuoshui(void)
206 {
207 1 P3_2=0;P3_3=1;P3_4=0;TR1=0;
208 1 minite=7;P2_6=1;
209 1 GotoXY(0,0);
210 1 Print("tuo shui shijian");
211 1 GotoXY(0,1);
212 1 Print("time: ");
213 1 biao=5;
214 1 }
215 void disjiare(void)
216 {
217 1 P3_2=1;P3_3=0;P3_4=0;TR1=0;
218 1 GotoXY(0,0);
219 1 Print("from: ");
220 1 GotoXY(0,1);
221 1 Print("to: ");
222 1 biao=6;
223 1 }
224 //************************************************************
225 void jia(void)
226 {
227 1 minite++; wdz++;
228 1 if(minite==60) minite=0;
229 1 }
230 void jian(void)
231 {
232 1 minite--; wdz--;
233 1 if(minite<=0) minite=0;
234 1 }
235 //*************************************************************************
236 void sure(void)
237 {
238 1 while(su==1)
239 1 {
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -