📄 1602.lst
字号:
C51 COMPILER V8.02 1602 04/21/2008 20:44:58 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************************
2 *描述:多功能太阳能热水器设计 *
3 *硬件:AT89S52单片机,晶振为12MHz,KS0108驱动的128*64液晶 *
4 * SPI总线的DS1302时钟,1-WIRE温度传感器DS18B20。 *
5 *作者:李鲲鹏 *
-
6 *文件:1602.c *
7 *日期:2005-11-10 *
8 *****************************************************************************
9 *描述: *
10 ****************************************************************************/
11
12 /****************************************************************************
13 头文件区
14 ****************************************************************************/
15 #include<reg51.h>
16 #include<intrins.h>
17
18 /****************************************************************************
19 内存区定义
20 ****************************************************************************/
21 sbit BF=P0^7; //12864
22 sbit DI=P2^0;
23 sbit RW=P2^1;
24 sbit ENABLE=P2^2;
25 sbit CS1=P2^3;
26 sbit CS2=P2^4;
27 sbit TIMECLK=P1^0; //DS1302
28 sbit TIMEDATA=P1^1;
29 sbit TIMERST=P1^2;
30 sbit K1=P1^4; //三个按键
31 sbit K2=P1^5;
32 sbit K3=P1^6;
33 sbit LN1=P1^3; //水位控制端口
34 sbit LN2=P1^7;
35 sbit DQ=P3^3; //DS18b20*4
36 sbit DQ1=P3^0;
37 sbit DQ2=P3^1;
38 sbit DQ3=P3^2;
39 sbit HT=P3^4; //温度控制端口
40 sbit CR=P3^5;
41 sbit WT=P3^6;
42 sbit BUZZ=P3^7;//蜂鸣器
43
44 bit SCNF=1; //秒闪烁标志位
45 bit tempflag; //温度标志位
46
47 #define INIT_SECOND 0x00 //年月日星期时间初始值
48 #define INIT_MINUTE 0x00
49 #define INIT_HOUR 0x00
50 #define INIT_DAY 0x01
51 #define INIT_MONTH 0x01
52 #define INIT_WEEK 0x01
53 #define INIT_YEAR 0x00
54
C51 COMPILER V8.02 1602 04/21/2008 20:44:58 PAGE 2
55 unsigned char data SECOND; //年月日星期时间
56 unsigned char data MINUTE;
57 unsigned char data HOUR;
58 unsigned char data DAY;
59 unsigned char data MONTH;
60 unsigned char data WEEK;
61 unsigned char data YEAR;
62 unsigned char count=10; //计数器记数值
63 unsigned char RF1; //一路闹钟
64 unsigned char RF2; //二路闹钟
65 unsigned char MF=0; //移位设置
66 unsigned char TMF=0;
67 unsigned char TPF=0;
68 unsigned char TRF=0;
69 unsigned char TN=0x60; //温度初始值
70 unsigned char n=0; //音调
71 unsigned char year_lunar;
72 unsigned char month_lunar;
73 unsigned char day_lunar;
74
75 /****************************************************************************
76 函数声明
77 ****************************************************************************/
78 void busyl(void); //12864
79 void busyr(void);
80 void write_cmdl(unsigned char Commandaddr);
81 void write_datal(unsigned char Dataaddr);
82 void busyr(void);
83 void write_cmdr(unsigned char Commandaddr);
84 void write_datar(unsigned char Dataaddr);
85 void init_12864(void);
86 void clear(void);
87 void write_ascii(unsigned char x,unsigned char y,unsigned char time,bit fanhei);
88 void write_character(unsigned char x,unsigned char y,unsigned char *ptr,bit fanhei);
89 void write_week(unsigned char x,unsigned char y,unsigned char weektime,bit fanhei);
90 void write_ds1302(unsigned char Writeaddr,unsigned char Writedata); //DS1302
91 unsigned char read_ds1302(unsigned char Readaddr);
92 void init_ds1302(void);
93 void readtime(void);
94 bit reset_ds18b20(void); //DS18B20
95 unsigned char ds18b20(void);
96 void write_ds18b20(unsigned char value);
97 unsigned char read_temp(void);
98 void keyscanf(void); //按键
99 void tempdisplay(void);
100 void ringdisplay(void);
101 void keyscanf1(void);
102 void timereset(void);
103 void ringreset(void);
104 void tempreset(void);
105 unsigned char turntobcd(unsigned char x,unsigned char y,unsigned char value,
106 signed char max,signed char min);
107 void sound(void);
108 void display1(void);
109 void display2(void);
110 void write_yearlunar(unsigned char x,unsigned char y,unsigned char lunar,bit tiandi);//公历
111 bit get_lunar_day(unsigned char month_p,unsigned int table_addr);
112 void solartolunar(void);
113 void displaylunar(void);
114 void delayus(unsigned char i); //延时
115 void delayms(unsigned char j);
116 void delays(unsigned char k);
C51 COMPILER V8.02 1602 04/21/2008 20:44:58 PAGE 3
117 void initTimer0(void);
118 void Timer0(void);
119 void initTimer1(void);
120 void Timer1(void);
121
122 /****************************************************************************
123 表格
124 ****************************************************************************/
125 unsigned char bcddis[6];
126 unsigned char code divdisplay[] =
127 {
128 0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,
129 0x05,0x05,0x06,0x06,0x07,0x08,0x08,0x09
130 };
131
132 /****************************************************************************
133 ASCII字模的数据表
134 码表从0x20~0x7e
135 字库: D:\学习软件\单片机小软件\字模提取\Asc8X16E.dat 纵向取模下高位
136 ****************************************************************************/
137 unsigned char code nAsciiDot[] = // ASCII
138 {
139 0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00, // -0-
140 0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,
141
142 0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00, // -1-
143 0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,
144
145 0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00, // -2-
146 0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,
147
148 0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00, // -3-
149 0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,
150
151 0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00, // -4-
152 0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,
153
154 0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00, // -5-
155 0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,
156
157 0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00, // -6-
158 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,
159
160 0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00, // -7-
161 0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,
162
163 0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00, // -8-
164 0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,
165
166 0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00, // -9-
167 0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00,
168
169 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -.-
170 0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
171
172 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // -:-
173 0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,
174
175 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - -
176 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
177
178 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, // ---
C51 COMPILER V8.02 1602 04/21/2008 20:44:58 PAGE 4
179 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
180 };
181
182 /****************************************************************************
183 星期汉字字模表
184 星期汉字库: 宋体16.dot 纵向取模下高位,数据排列:从左到右从上到下
185 ****************************************************************************/
186 unsigned char code characterweek[] = // 数据表
187 {
188 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,// 一
189 0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,
190 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
191 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
192
193 0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,// 二
194 0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x00,
195 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
196 0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00,
197
198 0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,// 三
199 0x84,0x84,0x84,0xC4,0x86,0x04,0x00,0x00,
200 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
201 0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
202
203 0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,// 四
204 0x04,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
205 0x00,0x7F,0x20,0x28,0x24,0x23,0x20,0x20,
206 0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00,
207
208 0x00,0x04,0x84,0x84,0x84,0x84,0xFC,0x84,// 五
209 0x84,0x84,0x84,0xC4,0x86,0x84,0x00,0x00,
210 0x40,0x40,0x40,0x40,0x78,0x47,0x40,0x40,
211 0x40,0x40,0x40,0x7F,0x40,0x60,0x40,0x00,
212
213 0x20,0x20,0x20,0x20,0x20,0x22,0x2C,0x38,// 六
214 0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
215 0x00,0x40,0x20,0x18,0x06,0x03,0x00,0x00,
216 0x00,0x01,0x02,0x0C,0x38,0x70,0x00,0x00,
217
218 0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,// 日
219 0x82,0x82,0x82,0xFF,0x02,0x00,0x00,0x00,
220 0x00,0x00,0x00,0x7F,0x20,0x20,0x20,0x20,
221 0x20,0x20,0x20,0x7F,0x00,0x00,0x00,0x00,
222
223 0x00,0x00,0x00,0xFF,0x01,0x02,0x04,0x08,//闹钟图标
224 0xF0,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,
225 0x00,0x00,0x00,0xFF,0x80,0x40,0x20,0x10,
226 0x0F,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
227
228 0x00,0x00,0x00,0x18,0x18,0xF8,0xFE,0x0E,//加热图标
229 0x0E,0xFE,0xF8,0x18,0x18,0x00,0x00,0x00,
230 0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0xC0,
231 0xC0,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,
232
233 0x00,0x00,0x00,0xC8,0x64,0xFE,0x64,0x48,//进出水图标
234 0x44,0x68,0xFE,0x68,0xC4,0x00,0x00,0x00,
235 0x00,0x00,0x00,0x7F,0xF0,0xF3,0xF0,0xF0,
236 0xF0,0xF0,0xF3,0xF0,0x7F,0x00,0x00,0x00
237 };
238
239 // 汉字表:
240 // 一二三四五六日及几个图标
C51 COMPILER V8.02 1602 04/21/2008 20:44:58 PAGE 5
241
242 /****************************************************************************
243 汉字字模的数据结构定义
244 ****************************************************************************/
245 typedef struct typFNT_GB16 // 汉字字模数据结构
246 {
247 signed char Index[2]; // 汉字内码索引
248 char Msk[32]; // 点阵码数据
249 };
250
251 /****************************************************************************
252 汉字字模表
253 汉字库: 宋体16.dot 纵向取模下高位,数据排列:从左到右从上到下
254 ****************************************************************************/
255 struct typFNT_GB16 code GB_16[] = // 数据表
256 {
257 "年", 0x00,0x20,0x10,0xCC,0x47,0x44,0x44,0xFC,
258 0x44,0x44,0x44,0x64,0x46,0x04,0x00,0x00,
259 0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,
260 0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,
261
262 "月", 0x00,0x00,0x00,0x00,0xFE,0x22,0x22,0x22,
263 0x22,0x22,0x22,0xFF,0x02,0x00,0x00,0x00,
264 0x00,0x80,0x40,0x30,0x0F,0x02,0x02,0x02,
265 0x02,0x42,0x82,0x7F,0x00,0x00,0x00,0x00,
266
267 "日", 0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,
268 0x82,0x82,0x82,0xFF,0x02,0x00,0x00,0x00,
269 0x00,0x00,0x00,0x7F,0x20,0x20,0x20,0x20,
270 0x20,0x20,0x20,0x7F,0x00,0x00,0x00,0x00,
271
272 "星", 0x00,0x00,0xBE,0x2A,0x2A,0x2A,0x2A,0xEA,
273 0x2A,0x2A,0x2A,0x2A,0xBF,0x02,0x00,0x00,
274 0x48,0x44,0x4B,0x49,0x49,0x49,0x49,0x7F,
275 0x49,0x49,0x49,0x4D,0x49,0x61,0x40,0x00,
276
277 "期", 0x00,0x08,0xFF,0xA8,0xA8,0xA8,0xFF,0x08,
278 0x00,0xFE,0x22,0x22,0x22,0xFF,0x02,0x00,
279 0x84,0x44,0x37,0x04,0x04,0x14,0xA7,0x44,
280 0x24,0x1F,0x02,0x42,0x82,0x7F,0x00,0x00,
281
282 "室", 0x10,0x0C,0x24,0x24,0xA4,0x64,0x25,0x26,
283 0x24,0x24,0xA4,0x34,0x24,0x14,0x0C,0x00,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -