📄 lcdw.lst
字号:
C51 COMPILER V9.00 LCDW 06/09/2013 14:34:38 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE LCDW
OBJECT MODULE PLACED IN lcdw.OBJ
COMPILER INVOKED BY: D:\Program Files\STC_ISP\C51\BIN\C51.EXE lcdw.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<stc12c5a60s2.h>
2 #include<ds18b203.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 //
6 sbit rs=P1^0;
7 sbit rw=P1^1;
8 sbit ee=P1^2;
9 sbit psb=P1^6;
10 sbit res = P1^3;
11 sbit hwx=P3^3;
12 sbit sound=P1^5;
13 //
14 uint n1,n2,yy,dd,aa,mm,bb,tt,xq;
15 uint num,k;
16 uint kai,tin=0;
17 uint itt;
18 float txx;
19 uchar ly_disdate[4]={0,0,0,0};
20 uchar ly_dis[4]; //显示缓冲
21 uchar ly_lhj[4]; //保存NEC的四个字节数据
22 bit ly_flag=1;
23 //
24 code uchar table3[]={
25 /*-- 调入了一幅图像:E:\单片机\自定义图\22.bmp --*/
26 /*-- 宽度x高度=16x16 --*/
27 0x00,0xFF,0x00,0xFC,0x00,0xF0,0x00,0xE0,0x00,0xCC,0x00,0xDE,0x00,0xDE,0x00,0xCC,
28 0x00,0xE1,0x00,0xF1,0x00,0xF9,0x00,0xF0,0x00,0xF0,0x00,0xE5,0x00,0xFF,0x00,0xFF};
29 code uchar table4[]={
30 /*-- 调入了一幅图像:E:\单片机\自定义图\33.bmp --*/
31 /*-- 宽度x高度=16x16 --*/
32 0xFF,0x00,0x3F,0x00,0x0F,0x00,0x07,0x00,0x33,0x00,0x7B,0x00,0x7B,0x00,0x33,0x00,
33 0x87,0x00,0x8F,0x00,0x9F,0x00,0x0F,0x00,0x0F,0x00,0xA7,0x00,0xFF,0x00,0xFF,0x00};
34 code uchar table1[]={
35 /*-- 文字: 三 --*/
36 /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
37 0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,
38 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00};
39 //
40 code uchar tab[]="sunrise♀";
41 code uchar tab2[]="*STUDIO*";
42 code uchar time0[]="0123456789-. :";
43 code uchar tab3[]="星期广东海洋大学";
44 code uchar tab4[]="℃";
45 code uchar tab5[]="一二人四五六日";
46 //
47 void delay(uint i) //
48 {
49 1 while(--i);
50 1 }
51 //
52 void suspend() //
53 {
54 1 IE=0x8E;
55 1 IT1=1;
C51 COMPILER V9.00 LCDW 06/09/2013 14:34:38 PAGE 2
56 1 TMOD=0x11;
57 1 TH0=(65536-50000)/256;
58 1 TL0=(65536-50000)%256;
59 1 }
60 //
61 void clock() interrupt 1 using 2 //
62 {
63 1 TH0=(65536-50000)/256;
64 1 TL0=(65536-50000)%256;
65 1 tt++;
66 1 }
67 //
68 void nian()
69 {
70 1 dd=0;
71 1 yy++;
72 1 if(yy==13)
73 1 {
74 2 yy=0;
75 2 n1++;
76 2 if(n1==100)
77 2 {
78 3 n1=0;
79 3 n2++;
80 3 }
81 2 }
82 1 }
83 //
84 void fuzhi() //
85 {
86 1 if(tt==20)
87 1 {
88 2 tt=0;
89 2 bb++;
90 2 if(bb==60)
91 2 {
92 3 bb=0;
93 3 mm++;
94 3 if(mm==60)
95 3 {
96 4 mm=0;
97 4 aa++;
98 4 if(aa==24)
99 4 {
100 5 aa=0;
101 5 dd++;
102 5 if(yy<=7)
103 5 {
104 6 if(yy!=2)
105 6 {
106 7 if(yy%2==0&&dd==32)
107 7 {
108 8 nian();
109 8 }
110 7 if(yy%2!=2&&dd==31)
111 7 {
112 8 nian();
113 8 }
114 7 }
115 6 else
116 6 {
117 7 if(n1%4==0&&dd==30)
C51 COMPILER V9.00 LCDW 06/09/2013 14:34:38 PAGE 3
118 7 {
119 8 nian();
120 8 }
121 7 if(n1%4!=0&&dd==29)
122 7 {
123 8 nian();
124 8 }
125 7 }
126 6 }
127 5 else
128 5 {
129 6 if(yy%2==0&&dd==32)
130 6 {
131 7 nian();
132 7 }
133 6 if(yy%2!=0&&dd==31)
134 6 {
135 7 nian();
136 7
137 7 }
138 6 }
139 5
140 5 }
141 4 }
142 3
143 3 }
144 2 }
145 1 }
146 //
147 uint caiji(uchar da) //
148 {
149 1 da=da%10;
150 1 return(da);
151 1 }
152 //
153 uint caiji2(uchar da) //
154 {
155 1 da=da/10;
156 1 return(da);
157 1 }
158 //
159 void wendu()
160 {
161 1 int ltemp;
162 1 if(itt==0)
163 1 tmpchange(); //温度转换
164 1 if(itt==100)
165 1 {
166 2 txx=tmp()*0.0625; //得到真实十进制温度值,因为DS18B20
167 2 //可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度。
168 2 ltemp=txx*10+0.5; //放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入
-操作。
169 2
170 2 if(ltemp<0)
171 2 { //判断第一位显示整数还是负号
172 3 ly_dis[0]=10;
173 3 ltemp=0-ltemp;
174 3 }
175 2 else
176 2 ly_dis[0]=12;//显示百位值
177 2 ltemp=ltemp%1000;
178 2 ly_dis[1]=ltemp/100; //显示温度十位值
C51 COMPILER V9.00 LCDW 06/09/2013 14:34:38 PAGE 4
179 2 ltemp=ltemp%100;
180 2 ly_dis[2]=ltemp/10; //显示温度个位值
181 2 ly_dis[3]=ltemp%10; //显示小数点后一位
182 2 }
183 1 itt++;
184 1 if(itt==3000)
185 1 itt=0;
186 1 }
187 //
188 void hongwai() interrupt 2
189 {
190 1 uchar i,ia;
191 1 TL1=0;
192 1 TH1=0;
193 1 TR1=1;
194 1 while(!hwx);
195 1 TR1=0;
196 1 if(TH1<30||TH1>40)
197 1 return;
198 1 TH1=0;
199 1 TR1=1;
200 1 while(hwx)
201 1 {
202 2 delay(10);
203 2
204 2 if(TH1>22)
205 2 return;
206 2 }
207 1 TR1=0;
208 1 if(TH1<12)
209 1 return;
210 1 for(i=0;i<4;i++)
211 1 {
212 2 for(ia=0;ia<8;ia++)
213 2 {
214 3 sound=0 ;
215 3 while(!hwx); //
216 3 TH1=0;
217 3 TR1=1; //
218 3 while(hwx)
219 3 {
220 4 delay(10);
221 4 if(TH1>15)
222 4 return;
223 4 }
224 3 TR1=0;
225 3 ly_lhj[i]>>=1;
226 3 if(TH1>4)
227 3 ly_lhj[i]|=0x80;
228 3 }
229 2 }
230 1 sound=~sound;
231 1 ly_flag=1; //接收成功
232 1 TF1=0;
233 1 }
234 //
235 void choose()
236 {
237 1 if(ly_flag)
238 1 { //接收成功处理显示缓冲,以16进制显示
239 2 ly_flag=0;
240 2 ly_disdate[2]=ly_lhj[2]/16;
C51 COMPILER V9.00 LCDW 06/09/2013 14:34:38 PAGE 5
241 2 ly_disdate[3]=ly_lhj[2]%16;
242 2 switch(ly_disdate[3])
243 2 {
244 3 case 4:
245 3 aa++;
246 3 if(aa==24)
247 3 {
248 4 aa=0;
249 4 dd++;
250 4 }
251 3 break;
252 3 case 0:
253 3 if(ly_disdate[2]==4)
254 3 {
255 4 mm++;
256 4 if(mm==60)
257 4 {
258 5 mm=0;
259 5 aa++;
260 5 }
261 4 }
262 3 break;
263 3 case 2:
264 3 kai=1;
265 3 break;
266 3 case 7:
267 3 yy++;
268 3 if(yy==13)
269 3 {
270 4 yy=0;
271 4 }
272 3 break;
273 3 case 5:
274 3 dd++;
275 3 if(dd==32)
276 3 {
277 4 dd=0;
278 4 }
279 3 break;
280 3 case 6:
281 3 n2++;
282 3 if(n2==100)
283 3 {
284 4 n2=0;
285 4 }
286 3 break;
287 3 case 9:
288 3 n1++;
289 3 if(n1==100)
290 3 {
291 4 n1=0;
292 4 n2++;
293 4 }
294 3 break;
295 3 default:
296 3 break;
297 3 }
298 2 }
299 1 }
300 //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -