📄 arry_key.lst
字号:
C51 COMPILER V7.50 ARRY_KEY 05/12/2008 22:17:16 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ARRY_KEY
OBJECT MODULE PLACED IN arry_key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE arry_key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 sbit RS = P2^5 ;
8 sbit RW = P2^6 ;
9 sbit E = P2^7 ;
10 sbit PSB = P2^4 ;
11 sbit RST = P2^3 ;
12
13 sbit T_CLK = P1^1; /*实时时钟时钟线引脚 */
14 sbit T_IO = P1^2; /*实时时钟数据线引脚 */
15 sbit T_RST = P1^3; /*实时时钟复位线引脚 */
16
17 sbit ACC0 = ACC^0;
18 sbit ACC7 = ACC^7;
19
20 sbit DQ=P1^0;
21
22
23 float tem;
24 int temp_lo,temp_hi;
25
26
27 void delayms(unsigned char ms) ;
28 void lcdinitial() ;
29 void lcdwritecom(unsigned char comm) ;
30 void lcdwritedata(unsigned char dat) ;
31 void photodis(unsigned char *s) ;
32 void chardis(char *ddata);
33 void Gunp();
34
35 void RTInputByte(uchar); /* 输入 1Byte */
36 uchar RTOutputByte(void); /* 输出 1Byte */
37 void W1302(uchar, uchar);
38 uchar R1302(uchar);
39 void Set1302(uchar *); /* 设置时间 */
40 void Bcd2asc(uchar,uchar *);
41 void Get1302(uchar curtime[]); /* 读取1302当前时间 */
42
43
44 unsigned char settime[]={0x00,0x19,0x22,0x12,0x05,0x01,0x08}; //秒,分,时,日,月,星期,年
45 unsigned char Week[]="一二参四五六日" ;
46 unsigned char dis1[]={"桂林电子科技大学"};
47 unsigned char dis2[]={"电子工程系"};
48 unsigned char dis3[]={"045024班"};
49 unsigned char dis4[]={"黎斯铭"};
50 unsigned char lcdy,lcdx,count1,count2,count3,flag=0;
51 unsigned char ucCurtime[7]={0} ;
52 unsigned char code tutab[]={
53 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
54 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
55 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V7.50 ARRY_KEY 05/12/2008 22:17:16 PAGE 2
56 0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
57 0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
58 0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
59 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
60 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
61 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
62 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
63 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
64 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
65 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
66 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
67 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
68 0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
69 0x10,0x06,0x00,0x00,0x30,0x00,0x00,0x37,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
70 0x30,0x06,0x00,0x01,0x20,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
71 0x30,0x06,0x00,0x02,0x60,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
72 0x38,0x06,0x00,0x16,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
73 0x3C,0x06,0x00,0x24,0x00,0x3F,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
74 0x3C,0x0F,0x00,0x64,0x01,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
75 0x3F,0x1F,0x00,0x60,0x0F,0xFF,0xFC,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
76 0x17,0xBF,0xE0,0x60,0x3F,0xFF,0xFE,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
77 0x00,0x7F,0x80,0x80,0xFF,0x00,0x3F,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x01,0x80,0x00,
78 0x00,0x7E,0x01,0x81,0xF8,0x00,0x0F,0x01,0xE0,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,
79 0x00,0x0E,0x03,0x43,0xEF,0xFC,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x03,0x7F,0x00,
80 0x00,0x0E,0x03,0x07,0xCF,0xFE,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x06,0x19,0x80,
81 0x00,0x0E,0x06,0x0F,0xBF,0xFE,0x0F,0x80,0xC0,0x00,0x3F,0x80,0x00,0x06,0x00,0xC0,
82 0x60,0x0E,0x06,0x1F,0x3F,0xBE,0x0F,0x00,0xC0,0x00,0xFF,0xC0,0x00,0x04,0x00,0xC0,
83 0x60,0x0E,0x0E,0x3C,0x7F,0x9E,0x0F,0x10,0xC0,0x81,0x80,0x60,0x01,0x84,0x00,0xC0,
84 0x60,0x0E,0x0C,0x38,0xFF,0xFE,0x1E,0x10,0xC1,0x83,0x00,0x21,0xC6,0x8C,0x00,0x60,
85 0x38,0x1E,0x18,0x70,0xFF,0xFE,0x3C,0x30,0xC3,0x0E,0x00,0x63,0x2C,0x8C,0xE0,0x30,
86 0x7F,0x9E,0x18,0x71,0xFF,0xFC,0x78,0x70,0xC3,0x18,0x00,0x62,0x29,0x8D,0xF8,0x18,
87 0x3E,0xBF,0x18,0xE1,0xFF,0xFC,0xF0,0x7C,0xC2,0x10,0x01,0xC2,0x25,0xF9,0x1E,0x08,
88 0x30,0x76,0x18,0xC1,0xFF,0xF1,0xE0,0xEC,0xC0,0x30,0x03,0x02,0x24,0xF9,0x03,0x8C,
89 0x20,0x66,0x11,0xC0,0xFF,0xE7,0x80,0x82,0x60,0x10,0x02,0x06,0x64,0x19,0x00,0x84,
90 0x20,0xC6,0x11,0x80,0xFF,0x9F,0x00,0x00,0xF0,0x19,0xC2,0x06,0x64,0x1F,0x10,0xCC,
91 0x01,0xC4,0x09,0x80,0x7F,0x7C,0x00,0x00,0xF8,0x0F,0x63,0x06,0x2C,0x1E,0x38,0xC8,
92 0x01,0x84,0x01,0x80,0x00,0xF8,0x0C,0x00,0xD8,0x00,0x23,0x06,0x38,0x12,0x01,0x98,
93 0x01,0x04,0x01,0x80,0x07,0xE0,0x18,0x00,0xCC,0x00,0x31,0x03,0x19,0xF6,0x01,0xF0,
94 0x00,0x04,0x01,0x98,0x7F,0x00,0x30,0x00,0x86,0x00,0x11,0x01,0x18,0x37,0x81,0x80,
95 0x00,0x04,0x01,0xC7,0xFC,0x00,0xE0,0x00,0x87,0x00,0x19,0x81,0x98,0x1D,0x9F,0x00,
96 0x00,0x04,0x01,0xC0,0x00,0x01,0x80,0x01,0x83,0x80,0x18,0xF0,0x98,0x18,0x03,0x00,
97 0x03,0x04,0x00,0xE0,0x00,0x07,0x00,0x01,0x01,0xC0,0xF8,0xD8,0x98,0xA8,0x03,0x00,
98 0x07,0x04,0x00,0xF0,0x00,0x1E,0x00,0x03,0x00,0xE0,0xC0,0x08,0x99,0xEF,0x3E,0x00,
99 0x0E,0x04,0x00,0x7C,0x00,0x7C,0x00,0x06,0x00,0x60,0xC0,0x08,0x99,0x12,0x36,0x00,
100 0x1C,0x04,0x00,0x3F,0xCF,0xF0,0x00,0x0C,0x00,0x30,0x40,0x0C,0x99,0x10,0x02,0x00,
101 0x3C,0x04,0x00,0x0F,0xFF,0xC0,0x00,0x38,0x00,0x18,0x7F,0xF8,0xFF,0x18,0x06,0x00,
102 0x3C,0x04,0x00,0x03,0xFF,0x00,0x00,0x60,0x00,0x00,0x3F,0xF0,0x66,0x1F,0xFC,0x00,
103 0x3C,0x04,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
104 0x3C,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
105 0x3C,0x0C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
106 0x3C,0x0C,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
107 0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
108 0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
109 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
110 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
111 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
112 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
113 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
114 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
115 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
116 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
117
C51 COMPILER V7.50 ARRY_KEY 05/12/2008 22:17:16 PAGE 3
118
119
120
121 };
122
123
124
125 /*温度传感器控制程序*/
126
127 void Delay15(uchar n) //延时子程序
128 { do{ _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
129 2 _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
130 2 _nop_(); _nop_(); _nop_();
131 2 n--;
132 2
133 2 }while(n);
134 1 }
135
136 void Delay10ms(uint delay_num) //延时子程序
137 {
138 1 uchar i;
139 1 while(delay_num--)
140 1 {
141 2 for(i=0;i<125;i++) ;
142 2
143 2 }
144 1 }
145
146 unsigned char Read18B20(void) //读温度传感器子程序
147 { unsigned char ch;
148 1 unsigned char q ;
149 1
150 1 for(q=0;q<8;q++)
151 1 {ch=ch>>1;
152 2 DQ=0;
153 2 _nop_();
154 2 DQ=1;
155 2 _nop_();_nop_();_nop_();_nop_();
156 2 if(DQ==1)
157 2 {ch=ch|0x80;}
158 2
159 2 else {ch=ch&0x7f;}
160 2 Delay15(3);
161 2 DQ=1;
162 2
163 2 }
164 1 return (ch);
165 1 }
166
167
168 void Write18B20(uchar ch) //写温度传感器子程序
169 { uchar i;
170 1 for(i=0;i<8;i++)
171 1 { DQ=0;
172 2 Delay15(1);
173 2 DQ=ch&0x01;
174 2 Delay15(3);
175 2 DQ=1;
176 2 ch=ch>>1;
177 2 _nop_();
178 2 }
179 1 }
C51 COMPILER V7.50 ARRY_KEY 05/12/2008 22:17:16 PAGE 4
180
181 void Init18B20(void) //初始化温度传感器
182 { DQ=0;
183 1 Delay15(33);//至少延时480us
184 1 DQ=1;
185 1 Delay15(10);//至少延时100us
186 1 }
187
188
189 void DData(void) //测温度、处理数据
190 {
191 1 uchar temp1,temp2,flag=0;
192 1 EA=0; //在测温度时要关中断,避免影响温度传感器的控制时序
193 1 Init18B20();
194 1
195 1 Write18B20(0xCC);//跳过ROM
196 1 _nop_();
197 1
198 1
199 1 Write18B20(0x44);//发送温度转换指令
200 1 Delay10ms(25);
201 1 Delay10ms(25);
202 1 Delay10ms(25);
203 1 Delay10ms(25);//等待1s转换
204 1
205 1 Init18B20();
206 1 Write18B20(0xCC);//跳过ROM
207 1 Write18B20(0xBE);//读温度转换指令
208 1 temp1=Read18B20(); //读低位温度值
209 1 temp2=Read18B20(); //读高位温度值
210 1
211 1 temp2 = (temp2 << 4)|(temp1 >> 4); //处理数据
212 1 temp1&=0x0f;
213 1
214 1 if(temp2>0x7f)
215 1 {
216 2 temp1=~temp1; //数据取反
217 2 temp2=~temp2; //数据取反
218 2 temp1&=0x0f;
219 2 if(temp1==0x0f)
220 2 temp2=temp2+1;
221 2 else
222 2 temp1=temp1+1;
223 2 flag=1;
224 2 }
225 1 tem=temp1*0.0625+temp2;
226 1 if(flag)
227 1 tem*=-1;
228 1 }
229
230
231 void RTInputByte(uchar d)
232 {
233 1 uchar i;
234 1 ACC = d;
235 1 for(i=8; i>0; i--)
236 1 {
237 2 T_IO = ACC0; /*相当于汇编中的 RRC */
238 2 T_CLK = 1;
239 2 T_CLK = 0;
240 2 ACC = ACC >> 1;
241 2 }
C51 COMPILER V7.50 ARRY_KEY 05/12/2008 22:17:16 PAGE 5
242 1 }
243
244 uchar RTOutputByte(void)
245 {
246 1 uchar i;
247 1 for(i=8; i>0; i--)
248 1 {
249 2 ACC = ACC >>1; /*相当于汇编中的 RRC */
250 2 ACC7 = T_IO;
251 2 T_CLK = 1;
252 2 T_CLK = 0;
253 2 }
254 1 return(ACC);
255 1 }
256
257 void W1302(uchar ucAddr, uchar ucDa)
258 {
259 1 T_RST = 0;
260 1 T_CLK = 0;
261 1 T_RST = 1;
262 1 RTInputByte(ucAddr); /* 地址,命令 */
263 1 RTInputByte(ucDa); /* 写1Byte数据*/
264 1 T_CLK = 1;
265 1 T_RST = 0;
266 1 }
267
268 uchar R1302(uchar ucAddr)
269 {
270 1 uchar ucData;
271 1 T_RST = 0;
272 1 T_CLK = 0;
273 1 T_RST = 1;
274 1 RTInputByte(ucAddr); /* 地址,命令 */
275 1 ucData = RTOutputByte(); /* 读1Byte数据 */
276 1 T_CLK = 1;
277 1 T_RST = 0;
278 1 return(ucData);
279 1 }
280
281 void Set1302(uchar *pClock)
282 {
283 1 uchar i;
284 1 uchar ucAddr = 0x80;
285 1 W1302(0x8e,0x00); /* 控制命令,WP=0,写操作*/
286 1 for(i =7; i>0; i--)
287 1 {
288 2 W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */
289 2 pClock++;
290 2 ucAddr +=2;
291 2 }
292 1 W1302(0x8e,0x80); /* 控制命令,WP=1,写保护*/
293 1
294 1 }
295
296 void Get1302(void)
297 {
298 1 uchar i;
299 1 uchar ucAddr = 0x81;
300 1 for (i=0; i<7; i++)
301 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -