/******************************************************************************
*****************
*********
2程序名称:智能电表主控程序
3程序设计:freevanx、LDZ
4时间:2006-9-29
5功能:1、计算电量、电费
62、接受键盘输入,将所要求的信息显示在LCD上
73、通过键盘设置内部计费参照,适应不同种类的器材,不同的
8地区,不同的电价,不同的计费时段。
9
10备注:◎版权所有,此程序仅可参考,未经授权,不得复制,分发。
11
12编译方法:将main.c
13characterlib.h
15STARTUP.A51(不是必需文件)
16添加到同一Group,然后
17
181、在工程文件列表中的main.c文件上右击鼠标
192、选择Optionsforfile“main.c”,打开一个对话框,
203、在Properties选项卡的右边激活GenerateAsmblerSRCfile复选框
214、在同一位置激活AsmbleSRCfile.复选框
22
23
*******************************************************************************
*****************
********/
24
25/**************************************************
26REG51.h包含各种寄存器的定义
27math.h使用了其中的ceil()和pow()函数
28string.h使用了其中的memt()函数
29characterlib.h自定义头文件,包含所有的字库
30定义了uchar,因为头文件中要用到
31****************************************************/
32#include
33#include
34#include
35//#include"characterlib.h"
36
37/**************************************************
388255的各种命令字,通过控制8255的PC口控制LCD芯片的各种显示
39方式
40****************************************************/
41#defineTYPE_COMMAND0x0e
42#defineTYPE_DATA0x0f
43#defineRESET0x09
44
45/**************************************************
46LCD芯片的命令字
47****************************************************/
48#defineCS1_LOW0x0c
49#defineCS1_HIGH0x0d
50#defineCS2_LOW0x06
51#defineCS2_HIGH0x07
52
53#defineSOFT_RESET0xe2
54
55#defineDISPLAY_ON0xaf
56#definePAGE_BASIC0xb8
57#defineCOLUMN00x00
58
59
60typedefunsignedcharuchar;
61
62/**************************************************
63各种初值定义,作为计算的基本单位
64****************************************************/
65structinitt
66{
67floathigh_fee;
68floatlow_fee;
69unsignedcharhighrange_start;
70unsignedcharhighrange_end;
71unsignedcharlowrange_start;
72unsignedcharlowrange_end;
73introtate_speed;
74};
75/**************************************************
76电量计定义,记录电量使用情况
77****************************************************/
78structcoulometer
79{
80inthigh;
81intlow;
82inttotal;
83};
84/**************************************************
85电费计定义,记录用电电费
86****************************************************/
87structfee
88{
89floathigh;
90floatlow;
91floattotal;
92};
93
94/**************************************************
95各个外部存储器或者端口地址的绝对定位定义
96****************************************************/
97volatileunsignedcharxdataRAM6264_at_0x1FF0;
98
99volatileunsignedcharxdataCommandPortOf8279_at_0x5FFF;
100volatileunsignedcharxdataDataOf8279_at_0x5EFF;
101
102volatileunsignedcharxdataCommandPortOf8255_at_0xBFFF;
103volatileunsignedcharxdataAPortOf8255_at_0xBFFC;
104volatileunsignedcharxdataCPortOf8255_at_0xBFFE;
105
106/**************************************************
107设置LCD芯片各页的命令字
108****************************************************/
109ucharidatapage[4]={0xb8,0xb9,0xba,0xbb};
110
111/*****************************************************
112键盘程序中使用到全局变量
113*******************************************************/
114ucharidataWhichFunctionKey=0x00;
115
116/*****************************************************
117整个程序中共享的全局变量,智能电表的基本数据
118*******************************************************/
119structinittidataSet={0.8,0.6,6,21,22,5,1000};
120structcoulometeridataCoulo={0,0,0};
121structfeeidataFee={0.0,0.0,0.0};
122
123/*****************************************************
124各个提示信息的下半行,显示实际的数据,由于要改动,所以
125不能放在code段
126*******************************************************/
127ucharxdataHighCoulometerTextBottom[8][32]=0;
128ucharxdataLowCoulometerTextBottom[8][32]=0;
129ucharxdataAllCoulometerTextBottom[8][32]=0;
130ucharxdataHighFeeTextBottom[8][32]=0;
131ucharxdataLowFeeTextBottom[8][32]=0;
132ucharxdataAllFeeTextBottom[8][32]=0;
133ucharxdataHighFeeSetTextBottom[8][32]=0;
134ucharxdataLowFeeSetTextBottom[8][32]=0;
135ucharxdataRotateSpeedSetTextBottom[8][32]=0;
136ucharxdataHighStartSetTextBottom[8][32]=0;
137ucharxdataHighEndSetTextBottom[8][32]=0;
138
139/*****************************************************
140字库,如果放在头文件中,低版本的Keil编译时会报错,所以拿过来了
141*******************************************************/
142ucharcodeHighCoulometerTextTop[8][32]=/*高峰用电量*/
143{
144{//高
1450x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
1460x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
1470x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
1480x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
149},
150{//峰
1510x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
1520x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
1530x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
1540x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
155},
156{//用
1570x00,0x00,0x0FE,0x22,0x22,0x22,0x22,0x0FE,
1580x22,0x22,0x22,0x22,0x0FF,0x02,0x00,0x00,
1590x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
1600x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00
161},
162{//电
1630x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
1640x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
1650x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
1660x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
167},
168{//量
1690x20,0x20,0x20,0x0BE,0x0AA,0x0AA,0x0AA,0x0AA,
1700x0AA,0x0AA,0x0AA,0x0BF,0x22,0x30,0x20,0x00,
1710x00,0x80,0x80,0x0AF,0x0AA,0x0AA,0x0AA,0x0FF,
1720x0AA,0x0AA,0x0AA,0x0AF,0x80,0x80,0x00,0x00
173}
174
175};
176
177ucharcodeLowCoulometerTextTop[8][32]=/*;低谷用电量*/
178{
179{//低
1800x40,0x20,0x0F8,0x07,0x00,0x0FC,0x84,0x84,
1810x84,0x0FC,0x82,0x82,0x83,0x0C2,0x80,0x00,
1820x00,0x00,0x0FF,0x00,0x00,0x7F,0x20,0x10,
1830x08,0x20,0x47,0x18,0x60,0x80,0x70,0x00
184
185},
186{//谷
1870x00,0x10,0x08,0x04,0x83,0x40,0x20,0x18,
1880x20,0x41,0x82,0x86,0x0C,0x00,0x00,0x00,
1890x02,0x02,0x01,0x0FD,0x44,0x44,0x44,0x44,
1900x44,0x44,0x44,0x0FC,0x01,0x03,0x01,0x00
191},
192{//用
1930x00,0x00,0x0FE,0x22,0x22,0x22,0x22,0x0FE,
1940x22,0x22,0x22,0x22,0x0FF,0x02,0x00,0x00,
1950x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
1960x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00
197},
198{//电
1990x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
2000x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
2010x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
2020x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
203},
204{//量
2050x20,0x20,0x20,0x0BE,0x0AA,0x0AA,0x0AA,0x0AA,
2060x0AA,0x0AA,0x0AA,0x0BF,0x22,0x30,0x20,0x00,
2070x00,0x80,0x80,0x0AF,0x0AA,0x0AA,0x0AA,0x0FF,
2080x0AA,0x0AA,0x0AA,0x0AF,0x80,0x80,0x00,0x00
209}
210};
211
212ucharcodeAllCoulometerTextTop[8][32]=/*;总用电量*/
213{
214{//总
2150x00,0x00,0x00,0x0F1,0x12,0x14,0x10,0x10,
2160x10,0x14,0x12,0x0F9,0x10,0x00,0x00,0x00,
2170x20,0x18,0x00,0x30B,0x41,0x41,0x45,0x49,
2180x59,0x41,0x41,0x73,0x00,0x08,0x30,0x00
219},
220{//用
2210x00,0x00,0x0FE,0x22,0x22,0x22,0x22,0x0FE,
2220x22,0x22,0x22,0x22,0x0FF,0x02,0x00,0x00,
2230x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
2240x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00
225},
226{//电
2270x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
2280x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
2290x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
2300x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
231
232},
233{//量
2340x20,0x20,0x20,0x0BE,0x0AA,0x0AA,0x0AA,0x0AA,
2350x0AA,0x0AA,0x0AA,0x0BF,0x22,0x30,0x20,0x00,
2360x00,0x80,0x80,0x0AF,0x0AA,0x0AA,0x0AA,0x0FF,
2370x0AA,0x0AA,0x0AA,0x0AF,0x80,0x80,0x00,0x00
238}
239};
240
241ucharcodeHighFeeTextTop[8][32]=/*;高峰时段电费*/
242{
243{//高
2440x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
2450x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
2460x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
2470x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
248},
249{//峰
2500x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
2510x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
2520x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
2530x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
254
255},
256{//时
2570x00,0x0FC,0x84,0x84,0x84,0x0FE,0x14,0x10,
2580x90,0x10,0x10,0x10,0x0FF,0x10,0x10,0x00,
2590x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,
2600x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00
261},
262{//段
2630x00,0x00,0x0FC,0x24,0x24,0x0B2,0x22,0x40,
2640x3E,0x02,0x02,0x02,0x3F,0x42,0x40,0x00,
2650x10,0x10,0x0FF,0x09,0x09,0x09,0x89,0x80,
2660x47,0x29,0x11,0x2D,0x43,0x0C0,0x40,0x00
267
268},
269{//电
2700x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
2710x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
2720x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
2730x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
274},
275{//费
2760x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
2770x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
2780x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
2790x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
280}
281};
282
283ucharcodeLowFeeTextTop[8][32]=/*低谷时段电费*/
284{
285{//低
2860x40,0x20,0x0F8,0x07,0x00,0x0FC,0x84,0x84,
2870x84,0x0FC,0x82,0x82,0x83,0x0C2,0x80,0x00,
2880x00,0x00,0x0FF,0x00,0x00,0x7F,0x20,0x10,
2890x08,0x20,0x47,0x18,0x60,0x80,0x70,0x00
290},
291{//谷
2920x00,0x10,0x08,0x04,0x83,0x40,0x20,0x18,
2930x20,0x41,0x82,0x86,0x0C,0x00,0x00,0x00,
2940x02,0x02,0x01,0x0FD,0x44,0x44,0x44,0x44,
2950x44,0x44,0x44,0x0FC,0x01,0x03,0x01,0x00
296},
297{//时
2980x00,0x0FC,0x84,0x84,0x84,0x0FE,0x14,0x10,
2990x90,0x10,0x10,0x10,0x0FF,0x10,0x10,0x00,
3000x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,
3010x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00
302},
303{//段
3040x00,0x00,0x0FC,0x24,0x24,0x0B2,0x22,0x40,
3050x3E,0x02,0x02,0x02,0x3F,0x42,0x40,0x00,
3060x10,0x10,0x0FF,0x09,0x09,0x09,0x89,0x80,
3070x47,0x29,0x11,0x2D,0x43,0x0C0,0x40,0x00
308},
309{//电
3100x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
3110x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
3120x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
3130x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
314},
315{//费
3160x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
3170x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
3180x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
3190x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
320}
321};
322
323ucharcodeAllFeeTextTop[8][32]=/*;总电费*/
324{
325{//总
3260x00,0x00,0x00,0x0F1,0x12,0x14,0x10,0x10,
3270x10,0x14,0x12,0x0F9,0x10,0x00,0x00,0x00,
3280x20,0x18,0x00,0x30B,0x41,0x41,0x45,0x49,
3290x59,0x41,0x41,0x73,0x00,0x08,0x30,0x00
330},
331{//电
3320x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
3330x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
3340x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
3350x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
336},
337{//费
3380x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
3390x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
3400x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
3410x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
342
343}
344};
345
346ucharcodeHighFeeSetTextTop[8][32]=/*设置高峰电费*/
347{
348{//设
3490x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
3500x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
3510x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
3520x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
353
354},
355{//置
3560x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
3570x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
3580x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
3590x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
360
361},
362{//高
3630x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
3640x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
3650x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
3660x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
367},
368{//峰
3690x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
3700x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
3710x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
3720x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
373
374},
375{//电
3760x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
3770x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
3780x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
3790x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
380
381},
382{//费
3830x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
3840x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
3850x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
3860x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
387
388}
389};
390
391ucharcodeLowFeeSetTextTop[8][32]=/*设置低谷电费*/
392{
393{//设
3940x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
3950x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
3960x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
3970x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
398},
399{//置
4000x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
4010x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
4020x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
4030x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
404},
405{//低
4060x40,0x20,0x0F8,0x07,0x00,0x0FC,0x84,0x84,
4070x84,0x0FC,0x82,0x82,0x83,0x0C2,0x80,0x00,
4080x00,0x00,0x0FF,0x00,0x00,0x7F,0x20,0x10,
4090x08,0x20,0x47,0x18,0x60,0x80,0x70,0x00
410},
411{//谷
4120x00,0x10,0x08,0x04,0x83,0x40,0x20,0x18,
4130x20,0x41,0x82,0x86,0x0C,0x00,0x00,0x00,
4140x02,0x02,0x01,0x0FD,0x44,0x44,0x44,0x44,
4150x44,0x44,0x44,0x0FC,0x01,0x03,0x01,0x00
416},
417{//电
4180x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
4190x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
4200x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
4210x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
422},
423{//费
4240x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
4250x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
4260x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
4270x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
428}
429};
430
431ucharcodeRotateSpeedSetTextTop[8][32]=/*设置电表转速*/
432{
433{//设
4340x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
4350x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
4360x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
4370x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
438},
439{//置
4400x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
4410x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
4420x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
4430x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
444},
445{//电
4460x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
4470x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
4480x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
4490x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
450},
451{//表
4520x80,0x84,0x94,0x94,0x94,0x94,0x94,0x0FF,
4530x94,0x94,0x94,0x94,0x96,0x0C4,0x80,0x00,
4540x10,0x10,0x08,0x08,0x04,0x0FE,0x41,0x22,
4550x04,0x08,0x14,0x12,0x20,0x60,0x20,0x00
456},
457{//转
4580x08,0x0C8,0x0B8,0x8F,0x0E8,0x88,0x40,0x48,
4590x0C8,0x7F,0x48,0x48,0x4C,0x68,0x40,0x00,
4600x08,0x18,0x08,0x04,0x0FF,0x04,0x00,0x02,
4610x13,0x22,0x62,0x9A,0x06,0x02,0x00,0x00
462},
463{//速
4640x40,0x42,0x44,0x0CC,0x00,0x0F4,0x94,0x94,
4650x94,0x0FF,0x94,0x94,0x94,0x0F6,0x04,0x00,
4660x00,0x40,0x20,0x1F,0x20,0x51,0x48,0x44,
4670x42,0x7F,0x42,0x44,0x4C,0x61,0x20,0x00
468}
469};
470
471ucharcodeHighStartSetTextTop[8][32]=/*设置高峰起始时间*/
472{
473{//设
4740x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
4750x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
4760x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
4770x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
478},
479{//置
4800x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
4810x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
4820x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
4830x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
484},
485{//高
4860x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
4870x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
4880x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
4890x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
490},
491{//峰
4920x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
4930x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
4940x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
4950x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
496},
497{//起
4980x40,0x48,0x48,0x48,0x0FF,0x48,0x48,0x00,
4990x0C4,0x44,0x44,0x44,0x0FE,0x04,0x00,0x00,
5000x40,0x20,0x1F,0x20,0x7F,0x42,0x42,0x40,
5010x47,0x48,0x48,0x48,0x48,0x6E,0x20,0x00
502},
503{//始
5040x10,0x10,0x0F0,0x1F,0x10,0x0F0,0x40,0x60,
5050x58,0x47,0x40,0x40,0x50,0x60,0x0C0,0x00,
5060x40,0x22,0x15,0x08,0x16,0x61,0x00,0x0FE,
5070x42,0x42,0x42,0x42,0x42,0x0FF,0x02,0x00
508},
509{//时
5100x00,0x0FC,0x84,0x84,0x84,0x0FE,0x14,0x10,
5110x90,0x10,0x10,0x10,0x0FF,0x10,0x10,0x00,
5120x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,
5130x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00
514},
515{//间
5160x00,0x0F8,0x01,0x02,0x0F6,0x10,0x12,0x12,
5170x12,0x12,0x0FA,0x12,0x02,0x0FF,0x02,0x00,
5180x00,0x0FF,0x00,0x00,0x3F,0x11,0x11,0x11,
5190x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00
520}
521};
522
523ucharcodeHighEndSetTextTop[8][32]=/*设置高峰结束时间*/
524{
525{//设
5260x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
5270x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
5280x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
5290x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
530},
531{//置
5320x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
5330x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
5340x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
5350x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
536},
537{//高
5380x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
5390x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
5400x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
5410x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
542},
543{//峰
5440x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
5450x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
5460x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
5470x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
548},
549{//结
5500x00,0x30,0x28,0x0A4,0x63,0x10,0x08,0x48,
5510x48,0x48,0x7F,0x48,0x48,0x4C,0x08,0x00,
5520x00,0x22,0x63,0x22,0x12,0x12,0x00,0x0FE,
5530x42,0x42,0x42,0x42,0x42,0x0FF,0x02,0x00
554},
555{//速
5560x04,0x04,0x0E4,0x24,0x24,0x24,0x24,0x0FF,
5570x24,0x24,0x24,0x24,0x0F4,0x26,0x04,0x00,
5580x40,0x40,0x27,0x22,0x12,0x0A,0x06,0x0FF,
5590x06,0x0A,0x12,0x12,0x27,0x60,0x20,0x00
560},
561{//时
5620x00,0x0FC,0x84,0x84,0x84,0x0FE,0x14,0x10,
5630x90,0x10,0x10,0x10,0x0FF,0x10,0x10,0x00,
5640x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,
5650x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00
566},
567{//间
5680x00,0x0F8,0x01,0x02,0x0F6,0x10,0x12,0x12,
5690x12,0x12,0x0FA,0x12,0x02,0x0FF,0x02,0x00,
5700x00,0x0FF,0x00,0x00,0x3F,0x11,0x11,0x11,
5710x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00
572}
573};
574
575ucharcodeErrorText[8][32]=/*;操作发生错误*/
576{
577{//操
5780x10,0x10,0x10,0x0FF,0x90,0x0F0,0x0A0,0x0AE,
5790x0EA,0x0A,0x0EA,0x0AF,0x0A2,0x0F0,0x20,0x00,
5800x02,0x42,0x81,0x7F,0x04,0x44,0x24,0x14,
5810x0C,0x0FF,0x0C,0x14,0x24,0x66,0x24,0x00
582},
583{//作
5840x80,0x40,0x20,0x0F8,0x87,0x40,0x30,0x0F,
5850x0F8,0x88,0x88,0x0C8,0x88,0x0C,0x08,0x00,
5860x00,0x00,0x00,0x0FF,0x00,0x00,0x00,0x00,
5870x0FF,0x08,0x08,0x08,0x0C,0x08,0x00,0x00
588},
589{//发
5900x00,0x10,0x18,0x16,0x10,0x90,0x0F0,0x9F,
5910x90,0x90,0x92,0x94,0x10,0x18,0x10,0x00,
5920x40,0x20,0x90,0x88,0x46,0x41,0x23,0x14,
5930x08,0x14,0x22,0x21,0x40,0x0C0,0x40,0x00
594},
595{//生
5960x00,0x0C0,0x30,0x1E,0x10,0x10,0x10,0x0FF,
5970x10,0x10,0x10,0x10,0x18,0x10,0x00,0x00,
5980x41,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,
5990x42,0x42,0x42,0x43,0x42,0x60,0x40,0x00
600},
601{//错
6020x80,0x40,0x70,0x0CF,0x48,0x48,0x48,0x48,
6030x7F,0x48,0x48,0x7F,0x0C8,0x68,0x40,0x00,
6040x00,0x02,0x02,0x7F,0x22,0x12,0x00,0x0FF,
6050x49,0x49,0x49,0x49,0x0FF,0x01,0x00,0x00
606},
607{//误
6080x40,0x42,0x0C4,0x0C,0x00,0x40,0x5E,0x52,
6090x52,0x0D2,0x52,0x52,0x5F,0x42,0x00,0x00,
6100x00,0x00,0x7F,0x20,0x12,0x82,0x42,0x22,
6110x1A,0x07,0x1A,0x22,0x42,0x0C3,0x42,0x00
612}
613};
614
615ucharcodeNumCharacters[11][32]=/*;数字字符库.)*/
616{
617{//0
6180x00,0x00,0x00,0x00,0x0F0,0x0F8,0x0C,0x04,
6190x04,0x04,0x0C,0x0F8,0x0F0,0x00,0x00,0x00,
6200x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20,
6210x20,0x20,0x30,0x1F,0x0F,0x00,0x00,0x00
622},
623{//1
6240x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0F8,
6250x0FC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
6260x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,
6270x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00
628},
629{//2
6300x00,0x00,0x00,0x00,0x30,0x38,0x0C,0x04,
6310x04,0x0C,0x0F8,0x0F0,0x00,0x00,0x00,0x00,
6320x00,0x00,0x00,0x00,0x20,0x30,0x38,0x2C,
6330x26,0x23,0x21,0x38,0x00,0x00,0x00,0x00
634},
635{//3
6360x00,0x00,0x00,0x00,0x10,0x18,0x0C,0x84,
6370x84,0x0CC,0x78,0x30,0x00,0x00,0x00,0x00,
6380x00,0x00,0x00,0x00,0x08,0x18,0x30,0x20,
6390x20,0x31,0x1F,0x0E,0x00,0x00,0x00,0x00
640},
641{//4
6420x00,0x00,0x00,0x00,0x80,0x0C0,0x70,0x18,
6430x0FC,0x0FE,0x00,0x00,0x00,0x00,0x00,0x00,
6440x00,0x00,0x00,0x06,0x07,0x05,0x04,0x24,
6450x3F,0x3F,0x24,0x04,0x00,0x00,0x00,0x00
646},
647{//5
6480x00,0x00,0x00,0x00,0x0FC,0x0FC,0x0C4,0x44,
6490x44,0x0C4,0x84,0x04,0x00,0x00,0x00,0x00,
6500x00,0x00,0x00,0x00,0x08,0x18,0x30,0x20,
6510x20,0x30,0x1F,0x0F,0x00,0x00,0x00,0x00
652},
653{//6
6540x00,0x00,0x00,0x00,0x0F0,0x0F8,0x8C,0x44,
6550x44,0x0CC,0x98,0x10,0x00,0x00,0x00,0x00,
6560x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20,
6570x20,0x30,0x1F,0x0F,0x00,0x00,0x00,0x00
658},
659{//7
6600x00,0x00,0x00,0x00,0x1C,0x0C,0x0C,0x0C,
6610x0CC,0x0EC,0x3C,0x1C,0x00,0x00,0x00,0x00,
6620x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3F,
6630x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00
664},
665{//8
6660x00,0x00,0x00,0x00,0x30,0x78,0x0CC,0x84,
6670x84,0x0CC,0x78,0x30,0x00,0x00,0x00,0x00,
6680x00,0x00,0x00,0x00,0x0E,0x1F,0x31,0x20,
6690x20,0x31,0x1F,0x0E,0x00,0x00,0x00,0x00
670},
671{//9
6720x00,0x00,0x00,0x00,0x0F0,0x0F8,0x0C,0x04,
6730x04,0x0C,0x0F8,0x0F0,0x00,0x00,0x00,0x00,
6740x00,0x00,0x00,0x00,0x08,0x19,0x33,0x22,
6750x22,0x33,0x1F,0x0F,0x00,0x00,0x00,0x00
676},
677{//.
6780x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
6790x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
6800x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,
6810x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
682}
683};
684
685/*;按键功能*///设置按键功能数组的大小要相应的调整ShowDefault函数中“按键功能”
提示的下标
686
687ucharcodeDefaultText[12][8][32]=
688{
689{/*0高峰用电量*///0
690{
6910x00,0x00,0x00,0x00,0x0F0,0x0F8,0x0C,0x04,
6920x04,0x04,0x0C,0x0F8,0x0F0,0x00,0x00,0x00,
6930x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20,
6940x20,0x20,0x30,0x1F,0x0F,0x00,0x00,0x00
695},
696{
6970x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
6980x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
6990x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
7000x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
701},
702{
7030x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
7040x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
7050x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
7060x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
707},
708{
7090x00,0x00,0x0FE,0x22,0x22,0x22,0x22,0x0FE,
7100x22,0x22,0x22,0x22,0x0FF,0x02,0x00,0x00,
7110x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
7120x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00
713},
714{
7150x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
7160x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
7170x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
7180x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
719},
720{
7210x20,0x20,0x20,0x0BE,0x0AA,0x0AA,0x0AA,0x0AA,
7220x0AA,0x0AA,0x0AA,0x0BF,0x22,0x30,0x20,0x00,
7230x00,0x80,0x80,0x0AF,0x0AA,0x0AA,0x0AA,0x0FF,
7240x0AA,0x0AA,0x0AA,0x0AF,0x80,0x80,0x00,0x00
725}
726},
727{/*1低谷用电量*///1
728
729{
7300x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0F8,
7310x0FC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
7320x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,
7330x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00
734},
735{
7360x40,0x20,0x0F8,0x07,0x00,0x0FC,0x84,0x84,
7370x84,0x0FC,0x82,0x82,0x83,0x0C2,0x80,0x00,
7380x00,0x00,0x0FF,0x00,0x00,0x7F,0x20,0x10,
7390x08,0x20,0x47,0x18,0x60,0x80,0x70,0x00
740
741},
742{
7430x00,0x10,0x08,0x04,0x83,0x40,0x20,0x18,
7440x20,0x41,0x82,0x86,0x0C,0x00,0x00,0x00,
7450x02,0x02,0x01,0x0FD,0x44,0x44,0x44,0x44,
7460x44,0x44,0x44,0x0FC,0x01,0x03,0x01,0x00
747},
748{
7490x00,0x00,0x0FE,0x22,0x22,0x22,0x22,0x0FE,
7500x22,0x22,0x22,0x22,0x0FF,0x02,0x00,0x00,
7510x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
7520x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00
753},
754{
7550x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
7560x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
7570x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
7580x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
759},
760{
7610x20,0x20,0x20,0x0BE,0x0AA,0x0AA,0x0AA,0x0AA,
7620x0AA,0x0AA,0x0AA,0x0BF,0x22,0x30,0x20,0x00,
7630x00,0x80,0x80,0x0AF,0x0AA,0x0AA,0x0AA,0x0FF,
7640x0AA,0x0AA,0x0AA,0x0AF,0x80,0x80,0x00,0x00
765}
766},
767{/*2总用电量*///2
768{
7690x00,0x00,0x00,0x00,0x30,0x38,0x0C,0x04,
7700x04,0x0C,0x0F8,0x0F0,0x00,0x00,0x00,0x00,
7710x00,0x00,0x00,0x00,0x20,0x30,0x38,0x2C,
7720x26,0x23,0x21,0x38,0x00,0x00,0x00,0x00
773},
774{
7750x00,0x00,0x00,0x0F1,0x12,0x14,0x10,0x10,
7760x10,0x14,0x12,0x0F9,0x10,0x00,0x00,0x00,
7770x20,0x18,0x00,0x30B,0x41,0x41,0x45,0x49,
7780x59,0x41,0x41,0x73,0x00,0x08,0x30,0x00
779},
780{
7810x00,0x00,0x0FE,0x22,0x22,0x22,0x22,0x0FE,
7820x22,0x22,0x22,0x22,0x0FF,0x02,0x00,0x00,
7830x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
7840x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00
785},
786{
7870x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
7880x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
7890x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
7900x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
791
792},
793{
7940x20,0x20,0x20,0x0BE,0x0AA,0x0AA,0x0AA,0x0AA,
7950x0AA,0x0AA,0x0AA,0x0BF,0x22,0x30,0x20,0x00,
7960x00,0x80,0x80,0x0AF,0x0AA,0x0AA,0x0AA,0x0FF,
7970x0AA,0x0AA,0x0AA,0x0AF,0x80,0x80,0x00,0x00
798}
799},
800{/*3高峰时段电费*///3
801{
8020x00,0x00,0x00,0x00,0x10,0x18,0x0C,0x84,
8030x84,0x0CC,0x78,0x30,0x00,0x00,0x00,0x00,
8040x00,0x00,0x00,0x00,0x08,0x18,0x30,0x20,
8050x20,0x31,0x1F,0x0E,0x00,0x00,0x00,0x00
806},
807{
8080x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
8090x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
8100x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
8110x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
812},
813{
8140x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
8150x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
8160x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
8170x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
818
819},
820{
8210x00,0x0FC,0x84,0x84,0x84,0x0FE,0x14,0x10,
8220x90,0x10,0x10,0x10,0x0FF,0x10,0x10,0x00,
8230x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,
8240x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00
825},
826{
8270x00,0x00,0x0FC,0x24,0x24,0x0B2,0x22,0x40,
8280x3E,0x02,0x02,0x02,0x3F,0x42,0x40,0x00,
8290x10,0x10,0x0FF,0x09,0x09,0x09,0x89,0x80,
8300x47,0x29,0x11,0x2D,0x43,0x0C0,0x40,0x00
831
832},
833{
8340x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
8350x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
8360x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
8370x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
838},
839{
8400x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
8410x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
8420x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
8430x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
844}
845},
846{/*4低谷时段电费*/
847{
8480x00,0x00,0x00,0x00,0x80,0x0C0,0x70,0x18,
8490x0FC,0x0FE,0x00,0x00,0x00,0x00,0x00,0x00,
8500x00,0x00,0x00,0x06,0x07,0x05,0x04,0x24,
8510x3F,0x3F,0x24,0x04,0x00,0x00,0x00,0x00
852},
853{
8540x40,0x20,0x0F8,0x07,0x00,0x0FC,0x84,0x84,
8550x84,0x0FC,0x82,0x82,0x83,0x0C2,0x80,0x00,
8560x00,0x00,0x0FF,0x00,0x00,0x7F,0x20,0x10,
8570x08,0x20,0x47,0x18,0x60,0x80,0x70,0x00
858},
859{
8600x00,0x10,0x08,0x04,0x83,0x40,0x20,0x18,
8610x20,0x41,0x82,0x86,0x0C,0x00,0x00,0x00,
8620x02,0x02,0x01,0x0FD,0x44,0x44,0x44,0x44,
8630x44,0x44,0x44,0x0FC,0x01,0x03,0x01,0x00
864},
865{
8660x00,0x0FC,0x84,0x84,0x84,0x0FE,0x14,0x10,
8670x90,0x10,0x10,0x10,0x0FF,0x10,0x10,0x00,
8680x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,
8690x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00
870},
871{
8720x00,0x00,0x0FC,0x24,0x24,0x0B2,0x22,0x40,
8730x3E,0x02,0x02,0x02,0x3F,0x42,0x40,0x00,
8740x10,0x10,0x0FF,0x09,0x09,0x09,0x89,0x80,
8750x47,0x29,0x11,0x2D,0x43,0x0C0,0x40,0x00
876},
877{
8780x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
8790x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
8800x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
8810x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
882},
883{
8840x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
8850x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
8860x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
8870x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
888}
889},
890{/*5总电费*///5
891{
8920x00,0x00,0x00,0x00,0x0FC,0x0FC,0x0C4,0x44,
8930x44,0x0C4,0x84,0x04,0x00,0x00,0x00,0x00,
8940x00,0x00,0x00,0x00,0x08,0x18,0x30,0x20,
8950x20,0x30,0x1F,0x0F,0x00,0x00,0x00,0x00
896},
897{
8980x00,0x00,0x00,0x0F1,0x12,0x14,0x10,0x10,
8990x10,0x14,0x12,0x0F9,0x10,0x00,0x00,0x00,
9000x20,0x18,0x00,0x30B,0x41,0x41,0x45,0x49,
9010x59,0x41,0x41,0x73,0x00,0x08,0x30,0x00
902},
903{
9040x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
9050x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
9060x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
9070x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
908},
909{
9100x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
9110x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
9120x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
9130x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
914
915}
916},
917{/*6设置高峰电费*///6
918{
9190x00,0x00,0x00,0x00,0x0F0,0x0F8,0x8C,0x44,
9200x44,0x0CC,0x98,0x10,0x00,0x00,0x00,0x00,
9210x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20,
9220x20,0x30,0x1F,00x0F,0x00,0x00,0x00,0x00
923},
924{
9250x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
9260x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
9270x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
9280x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
929
930},
931{
9320x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
9330x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
9340x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
9350x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
936
937},
938{
9390x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
9400x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
9410x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
9420x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
943},
944{
9450x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
9460x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
9470x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
9480x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
949
950},
951{
9520x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
9530x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
9540x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
9550x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
956
957},
958{
9590x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
9600x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
9610x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
9620x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
963
964}
965},
966{/*7设置低谷电费*///7
967{
9680x00,0x00,0x00,0x00,0x1C,0x0C,0x0C,0x0C,
9690x0CC,0x0EC,0x3C,0x1C,0x00,0x00,0x00,0x00,
9700x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3F,
9710x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00
972},
973{
9740x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
9750x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
9760x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
9770x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
978},
979{
9800x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
9810x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
9820x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
9830x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
984},
985{
9860x40,0x20,0x0F8,0x07,0x00,0x0FC,0x84,0x84,
9870x84,0x0FC,0x82,0x82,0x83,0x0C2,0x80,0x00,
9880x00,0x00,0x0FF,0x00,0x00,0x7F,0x20,0x10,
9890x08,0x20,0x47,0x18,0x60,0x80,0x70,0x00
990},
991{
9920x00,0x10,0x08,0x04,0x83,0x40,0x20,0x18,
9930x20,0x41,0x82,0x86,0x0C,0x00,0x00,0x00,
9940x02,0x02,0x01,0x0FD,0x44,0x44,0x44,0x44,
9950x44,0x44,0x44,0x0FC,0x01,0x03,0x01,0x00
996},
997{
9980x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
9990x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
10000x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
10010x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
1002},
1003{
10040x00,0x3A,0x2A,0x2A,0x0AA,0x7F,0x2A,0x2A,
10050x2A,0x0FF,0x2A,0x2A,0x0AF,0x22,0x0E0,0x00,
10060x02,0x02,0x81,0x9F,0x41,0x41,0x21,0x1D,
10070x21,0x21,0x41,0x5F,0x80,0x01,0x00,0x00
1008}
1009},
1010{/*8设置电表转速*///8
1011{
10120x00,0x00,0x00,0x00,0x30,0x78,0x0CC,0x84,
10130x84,0x0CC,0x78,0x30,0x00,0x00,0x00,0x00,
10140x00,0x00,0x00,0x00,0x0E,0x1F,0x31,0x20,
10150x20,0x31,0x1F,0x0E,0x00,0x00,0x00,0x00
1016},
1017{
10180x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
10190x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
10200x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
10210x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
1022},
1023{
10240x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
10250x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
10260x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
10270x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
1028},
1029{
10300x00,0x0F8,0x48,0x48,0x48,0x48,0x0FF,0x48,
10310x48,0x48,0x48,0x0FC,0x08,0x00,0x00,0x00,
10320x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
10330x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00
1034},
1035{
10360x80,0x84,0x94,0x94,0x94,0x94,0x94,0x0FF,
10370x94,0x94,0x94,0x94,0x96,0x0C4,0x80,0x00,
10380x10,0x10,0x08,0x08,0x04,0x0FE,0x41,0x22,
10390x04,0x08,0x14,0x12,0x20,0x60,0x20,0x00
1040},
1041{
10420x08,0x0C8,0x0B8,0x8F,0x0E8,0x88,0x40,0x48,
10430x0C8,0x7F,0x48,0x48,0x4C,0x68,0x40,0x00,
10440x08,0x18,0x08,0x04,0x0FF,0x04,0x00,0x02,
10450x13,0x22,0x62,0x9A,0x06,0x02,0x00,0x00
1046},
1047{
10480x40,0x42,0x44,0x0CC,0x00,0x0F4,0x94,0x94,
10490x94,0x0FF,0x94,0x94,0x94,0x0F6,0x04,0x00,
10500x00,0x40,0x20,0x1F,0x20,0x51,0x48,0x44,
10510x42,0x7F,0x42,0x44,0x4C,0x61,0x20,0x00
1052}
1053},
1054{/*9设置高峰起始*///9
1055
1056{
10570x00,0x00,0x00,0x00,0x0F0,0x0F8,0x0C,0x04,
10580x04,0x0C,0x0F8,0x0F0,0x00,0x00,0x00,0x00,
10590x00,0x00,0x00,0x00,0x08,0x19,0x33,0x22,
10600x22,0x33,0x1F,0x0F,0x00,0x00,0x00,0x00
1061},
1062{
10630x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
10640x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
10650x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
10660x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
1067},
1068{
10690x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
10700x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
10710x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
10720x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
1073},
1074{
10750x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
10760x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
10770x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
10780x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
1079},
1080{
10810x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
10820x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
10830x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
10840x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
1085},
1086{
10870x40,0x48,0x48,0x48,0x0FF,0x48,0x48,0x00,
10880x0C4,0x44,0x44,0x44,0x0FE,0x04,0x00,0x00,
10890x40,0x20,0x1F,0x20,0x7F,0x42,0x42,0x40,
10900x47,0x48,0x48,0x48,0x48,0x6E,0x20,0x00
1091},
1092{
10930x10,0x10,0x0F0,0x1F,0x10,0x0F0,0x40,0x60,
10940x58,0x47,0x40,0x40,0x50,0x60,0x0C0,0x00,
10950x40,0x22,0x15,0x08,0x16,0x61,0x00,0x0FE,
10960x42,0x42,0x42,0x42,0x42,0x0FF,0x02,0x00
1097}
1098
1099},
1100{/*A设置高峰结束*///10
1101{
11020x00,0x00,0x00,0x00,0x00,0x80,0x60,0x18,
11030x0C,0x78,0x0E0,0x80,0x00,0x00,0x00,0x00,
11040x00,0x00,0x00,0x20,0x3C,0x27,0x02,0x02,
11050x02,0x02,0x27,0x3F,0x3C,0x20,0x00,0x00
1106},
1107{
11080x40,0x40,0x42,0x0CC,0x00,0x40,0x0A0,0x9F,
11090x81,0x81,0x81,0x9F,0x0A0,0x20,0x20,0x00,
11100x00,0x00,0x00,0x7F,0x0A0,0x90,0x40,0x43,
11110x2C,0x10,0x28,0x26,0x41,0x0C0,0x40,0x00
1112},
1113{
11140x00,0x10,0x17,0x0D5,0x55,0x57,0x55,0x7D,
11150x55,0x57,0x55,0x0D5,0x17,0x10,0x00,0x00,
11160x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,
11170x55,0x55,0x55,0x7F,0x40,0x60,0x40,0x00
1118},
1119{
11200x04,0x04,0x04,0x0F4,0x94,0x94,0x95,0x96,
11210x94,0x94,0x94,0x0F4,0x04,0x06,0x04,0x00,
11220x00,0x0FE,0x02,0x02,0x7A,0x4A,0x4A,0x4A,
11230x4A,0x4A,0x7A,0x02,0x82,0x0FF,0x02,0x00
1124},
1125{
11260x00,0x0F0,0x00,0x0FF,0x00,0x0F0,0x90,0x88,
11270x4F,0x54,0x0A4,0x54,0x4C,0x0C4,0x40,0x00,
11280x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x14,
11290x15,0x15,0x0FF,0x15,0x15,0x14,0x00,0x00
1130},
1131{
11320x00,0x30,0x28,0x0A4,0x63,0x10,0x08,0x48,
11330x48,0x48,0x7F,0x48,0x48,0x4C,0x08,0x00,
11340x00,0x22,0x63,0x22,0x12,0x12,0x00,0x0FE,
11350x42,0x42,0x42,0x42,0x42,0x0FF,0x02,0x00
1136},
1137{
11380x04,0x04,0x0E4,0x24,0x24,0x24,0x24,0x0FF,
11390x24,0x24,0x24,0x24,0x0F4,0x26,0x04,0x00,
11400x40,0x40,0x27,0x22,0x12,0x0A,0x06,0x0FF,
11410x06,0x0A,0x12,0x12,0x27,0x60,0x20,0x00
1142}
1143
1144},/*C系统复位*///11
1145/*{
1146{
11470x00,0x00,0x00,0x0E0,0x0F0,0x18,0x0C,0x04,
11480x04,0x04,0x0C,0x18,0x18,0x00,0x00,0x00,
11490x00,0x00,0x00,0x07,0x0F,0x18,0x30,0x20,
11500x20,0x20,0x30,0x10,0x08,0x00,0x00,0x00
1151},
1152{
11530x00,0x02,0x22,0x22,0x32,0x2E,0x0A2,0x62,
11540x22,0x22,0x91,0x09,0x01,0x00,0x00,0x00,
11550x00,0x00,0x42,0x22,0x1A,0x43,0x82,0x7E,
11560x02,0x02,0x0A,0x13,0x66,0x00,0x00,0x00
1157},
1158{
11590x20,0x30,0x0AC,0x63,0x30,0x88,0x0C8,0x0A8,
11600x99,0x8E,0x88,0x0A8,0x0CC,0x88,0x00,0x00,
11610x22,0x67,0x22,0x12,0x92,0x40,0x30,0x0F,
11620x00,0x00,0x3F,0x40,0x40,0x41,0x70,0x00
1163},
1164{
11650x20,0x10,0x0C,0x03,0x0FA,0x0AA,0x0AA,0x0AA,
11660x0AA,0x0AA,0x0AA,0x0FA,0x03,0x02,0x00,0x00,
11670x00,0x20,0x90,0x88,0x86,0x47,0x2A,0x12,
11680x12,0x2A,0x46,0x42,0x80,0x80,0x80,0x00
1169},
1170{
11710x80,0x40,0x20,0x0F8,0x07,0x10,0x0D0,0x10,
11720x11,0x16,0x10,0x10,0x0D8,0x10,0x00,0x00,
11730x00,0x00,0x00,0x0FF,0x20,0x20,0x20,0x23,
11740x2C,0x20,0x38,0x27,0x20,0x30,0x20,0x00
1175}
1176},*/
1177{/*按键功能*///12
1178{
11790x10,0x10,0x90,0x0FF,0x90,0x0A0,0x98,0x88,
11800x88,0x0E9,0x8A,0x88,0x88,0x0A8,0x98,0x00,
11810x01,0x41,0x80,0x7F,0x00,0x00,0x80,0x84,
11820x40B,0x30,0x10,0x28,0x47,0x0C0,0x00,0x00
1183},
1184{
11850x10,0x28,0x0E7,0x24,0x24,0x0C2,0x0B2,0x8E,
11860x10,0x54,0x54,0x0FF,0x54,0x7C,0x10,0x00,
11870x01,0x01,0x7F,0x21,0x51,0x24,0x18,0x27,
11880x48,0x89,0x89,0x0FF,0x89,0xCD,0x48,0x00
1189},
1190{
11910x08,0x08,0x08,0x0F8,0x0C,0x28,0x20,0x20,
11920x0FF,0x20,0x20,0x20,0x20,0x0F0,0x20,0x00,
11930x08,0x18,0x08,0x0F,0x84,0x44,0x20,0x1C,
11940x03,0x20,0x40,0x80,0x40,0x3F,0x00,0x00
1195},
1196{
11970x10,0x0D8,0x54,0x53,0x50,0x0DC,0x30,0x00,
11980x7F,0x90,0x88,0x84,0x86,0x0E0,0x00,0x00,
11990x00,0x0FF,0x09,0x49,0x89,0x7F,0x00,0x00,
12000x7E,0x90,0x88,0x84,0x86,0x80,0x0E0,0x00
1201}
1202}
1203
1204};
1205
1206/*****************************************************
1207全部函数声明:
1208*******************************************************/
1209voidInit_Cpu(void);
1210voidInit_8255andLCD(void);
1211
1212
1213/*****************************************************
1214LCD函数组,所有的函数中只应该调用DisplayALine函数,其他的函数
1215都是基本封装函数,为DisplayALine服务
1216*******************************************************/
1217voidSendCommandToLCD(ucharcommand);
1218voidDisplay_Left(ucharmdata);
1219voidDisplay_Right(ucharmdata);
1220voidDisplay_All(ucharmdata);
1221voidDisplaySelected(ucharpagenum,ucharcolumn,ucharmdata[16]);
1222voidDisplayAtRow(ucharrow,ucharcolumn,ucharmdata[32]);
1223voidDisplayALine(ucharline,ucharmdata[8][32]);
1224
1225
1226/*****************************************************
1227键盘函数中处理显示智能电表当前状态的函数
1228*******************************************************/
1229voidShowHighCoulometer(void);
1230voidShowLowCoulometer(void);
1231voidShowAllCoulometer(void);
1232voidShowHighFee(void);
1233voidShowLowFee(void);
1234voidShowAllFee(void);
1235
1236
1237voidClear(void);
1238voidWakeupDog(void);
1239
1240
1241/*****************************************************
1242键盘函数中处理设置智能电表各种初值的函数,其中
1243voidSetLowStart(ucharkey);
1244voidSetLowEnd(ucharkey);
1245由于功能和
1246voidSetHighStart(ucharkey);
1247voidSetHighEnd(ucharkey);
1248有重复,在系统中已经被废弃,不应该使用,在已经实现的函数
1249中仅仅简单的将功能键标志复位,不做其他任何事情
1250*******************************************************/
1251voidSetHighFee(ucharkey);
1252voidSetLowFee(ucharkey);
1253voidSetRotateSpeed(ucharkey);
1254voidSetHighStart(ucharkey);
1255voidSetHighEnd(ucharkey);
1256voidSetLowStart(ucharkey);
1257voidSetLowEnd(ucharkey);
1258
1259
1260/*****************************************************
1261辅助函数组,为系统中其他函数提供功能,不应该在程序中显示调用
1262*******************************************************/
1263ucharNumsToArray(intnumber,ucharArray[8]);
1264voidArrayToCharacters(ucharmessage[8],uchardisplay[8][32],ucharlength);
1265intArrayToDigitalI(ucharArray[8],ucharlength);
1266floatArrayToDigitalF(ucharArray[8],ucharlength);
1267
1268/*****************************************************
1269两个实用函数
1270*******************************************************/
1271voidShowError(void);
1272voidShowDefault(void);
1273
1274/*****************************************************
1275函数:main
1276*******************************************************/
1277
1278voidmain(void)
1279{
1280CommandPortOf8279=0x00;
1281CommandPortOf8279=0x34;
1282Init_Cpu();
1283Init_8255andLCD();
1284ShowDefault();
1285//ShowError();
1286
1287}
1288
1289/*******************************************************
1290函数:Delay
1291功能:延时
1292注:这个函数延时不是很精确,适用于对精度要求不高的延时
1293******************************************************/
1294voidDelay(inttime)reentrant
1295{
1296inti,j;
1297for(i=0;i
1298{
1299//for(j=0;j<20;j++)
1300//{
1301//#pragmaasm
1302//nop
1303//#pragmaendasm
1304//temp=i+1;
1305//}
1306j=i+1;
1307}
1308}
1309/*******************************************************
1310函数:Init_Cpu
1311功能:初始化cpu
1312******************************************************/
1313voidInit_Cpu(void)
1314{
1315intidataMode;
1316//SP=0x60;
1317TMOD=0x51;
1318IE=0x8E;
1319//EX0=0;
1320IT0=1;
1321IT1=0;
1322
1323/*******把电表转数作为T1计数初值****/
1324
1325Mode=_speed;
1326TL1=(uchar)(0x00ff&Mode);
1327TH1=(uchar)(Mode>>8);
1328TR1=1;
1329}
1330/******************************LCD显示基本功能封装函数
****************************************/
1331/*******************************************************
1332函数:Init_8255andLCD
1333功能:初始化8255和LCD
1334******************************************************/
1335voidInit_8255andLCD(void)
1336{
1337inti=0,j=0;
1338CommandPortOf8255=0x80;
1339CommandPortOf8255=TYPE_COMMAND;
1340CommandPortOf8255=RESET;
1341
1342SendCommandToLCD(SOFT_RESET);
1343SendCommandToLCD(DISPLAY_ON);
1344
1345for(i=0;i<4;i++)
1346{
1347SendCommandToLCD(page[i]);
1348SendCommandToLCD(COLUMN0);
1349
1350for(j=0;j<61;j++)
1351{
1352Display_All(0x00);
1353}
1354}
1355}
1356/*******************************************************
1357函数:SendCommandToLCD
1358功能:设置8255状态,向LCD发送命令
1359参数:
1360command:要发送到LCD的命令字
1361******************************************************/
1362voidSendCommandToLCD(ucharcommand)
1363{
1364CommandPortOf8255=TYPE_COMMAND;
1365APortOf8255=command;
1366
1367CommandPortOf8255=CS1_HIGH;
1368
1369//#pragmaasm
1370//nop
1371//#pragmaendasm
1372
1373CommandPortOf8255=CS1_LOW;
1374//#pragmaasm
1375//nop
1376//#pragmaendasm
1377
1378CommandPortOf8255=CS1_HIGH;
1379CommandPortOf8255=CS2_HIGH;
1380
1381//#pragmaasm
1382//nop
1383//#pragmaendasm
1384
1385CommandPortOf8255=CS1_LOW;
1386CommandPortOf8255=CS2_LOW;
1387}
1388/*******************************************************
1389函数:Display_Left
1390功能:在LCD的左半部分(第一块控制芯片)写入一个字节字符数据
1391参数:
1392mdata:要写入第一块芯片的一字节数据
1393******************************************************/
1394voidDisplay_Left(ucharmdata)
1395{
1396CommandPortOf8255=TYPE_DATA;
1397APortOf8255=mdata;
1398CommandPortOf8255=CS1_HIGH;
1399
1400//#pragmaasm
1401//nop
1402//#pragmaendasm
1403
1404CommandPortOf8255=CS1_LOW;
1405}
1406/*******************************************************
1407函数:Display_Right
1408功能:在LCD的右半部分(第二块控制芯片)写入一个字节字符数据
1409参数:
1410mdata:要写入第二块芯片的一字节数据
1411******************************************************/
1412voidDisplay_Right(ucharmdata)
1413{
1414CommandPortOf8255=TYPE_DATA;
1415APortOf8255=mdata;
1416CommandPortOf8255=CS2_HIGH;
1417//#pragmaasm
1418//nop
1419//#pragmaendasm
1420
1421CommandPortOf8255=CS2_LOW;
1422}
1423/*******************************************************
1424函数:Display_All
1425功能:在LCD的左右都写入一个相同的数据,只在初始化清屏幕的时候
1426使用,或者根本不要使用
1427参数:
1428mdata:要写入两块芯片的数据
1429注:一般不要调用这个函数
1430******************************************************/
1431voidDisplay_All(ucharmdata)
1432{
1433CommandPortOf8255=TYPE_DATA;
1434APortOf8255=mdata;
1435CommandPortOf8255=CS1_HIGH;
1436//#pragmaasm
1437//nop
1438//#pragmaendasm
1439
1440CommandPortOf8255=CS1_LOW;
1441//#pragmaasm
1442//nop
1443//#pragmaendasm
1444
1445CommandPortOf8255=CS1_HIGH;
1446CommandPortOf8255=CS2_HIGH;
1447
1448//#pragmaasm
1449//nop
1450//#pragmaendasm
1451
1452CommandPortOf8255=CS1_LOW;
1453CommandPortOf8255=CS2_LOW;
1454}
1455/*******************************************************
1456函数:DisplaySelected
1457功能:从指定的页,指定的列开始写入半个LCD屏幕显示的字符
1458参数:
1459pagenum:LCD的页号0~3页
1460column:LCD的列0x00~0x70
1461mdata:要在LCD确定位置写入的半个字符
1462注:FM12232共32行,4页,每页共8个像素行
1463******************************************************/
1464voidDisplaySelected(ucharpagenum,ucharcolumn,ucharmdata[16])
1465{
1466inti=0;
1467
1468SendCommandToLCD(page[pagenum]);
1469
1470if(column>=0x40)
1471{
1472column=column-0x40;
1473SendCommandToLCD(column);
1474
1475for(i=0;i<0x10;i++)
1476{
1477Display_Right(mdata[i]);
1478}
1479}
1480el
1481{
1482SendCommandToLCD(column);
1483
1484for(i=0;i<0x10;i++)
1485{
1486Display_Left(mdata[i]);
1487}
1488}
1489}
1490/*******************************************************
1491函数:DisplayAtRow
1492功能:在LCD指定行,从指定列开始,显示一个汉字字符
1493参数:
1494row:在LCD上要显示的行数,共0~1两行
1495column:要显示的列数
1496mdata:要在指定位置写入的一个字符
1497返回值:
1498注:
1499******************************************************/
1500voidDisplayAtRow(ucharrow,ucharcolumn,ucharmdata[32])
1501{
1502ucharothercolumn=column;
1503if(row==0)
1504{
1505DisplaySelected(0,column,mdata);
1506DisplaySelected(1,othercolumn,&mdata[16]);
1507
1508
1509}
1510elif(row==1)
1511{
1512DisplaySelected(2,column,mdata);
1513DisplaySelected(3,column,&mdata[16]);
1514}
1515}
1516/*******************************************************
1517函数:DisplayALine
1518功能:在LCD指定行显示一行字符串,最多8个字符
1519参数:
1520line:在LCD上要显示的行数,共0~1两行
1521mdata:在指定行要显示的字符串
1522返回值:
1523注:LCD函数中唯一应该被调用的函数
1524******************************************************/
1525voidDisplayALine(ucharline,ucharmdata[8][32])
1526{
1527inti,column;
1528for(i=0;i<8;i++)
1529{
1530column=i*0x10;
1531DisplayAtRow(line,column,&mdata[i][0]);
1532}
1533}
1534/******************************键盘基本功能封装函数
****************************************/
1535/*******************************************************
1536函数:ShowHighCoulometer
1537功能:显示高峰时间段所用电量
1538参数:
1539返回值:
1540注:
1541******************************************************/
1542voidShowHighCoulometer(void)
1543{
1544inti=0,j=0,Counter=0;
1545ucharmessage[8]=0;
1546
1547intCoulometerHigh=;
1548
1549DisplayALine(0,HighCoulometerTextTop);
1550
1551Counter=NumsToArray(CoulometerHigh,message);
1552memt(HighCoulometerTextBottom,0,8*32);
1553
1554for(i=0;i<=Counter;i++)
1555{
1556for(j=0;j<32;j++)
1557{
1558HighCoulometerTextBottom[i][j]=NumCharacters[message[i]][j];
1559}
1560}
1561
1562DisplayALine(1,HighCoulometerTextBottom);
1563Delay(20000);
1564}
1565/*******************************************************
1566函数:ShowLowCoulometer
1567功能:显示低谷时间段所用电量
1568参数:
1569返回值:
1570注:
1571******************************************************/
1572voidShowLowCoulometer(void)
1573{
1574inti=0,j=0,Counter=0;
1575ucharmessage[8]=0;
1576
1577intCoulometerLow=;
1578
1579DisplayALine(0,LowCoulometerTextTop);
1580
1581Counter=NumsToArray(CoulometerLow,message);
1582
1583memt(LowCoulometerTextBottom,0,8*32);
1584for(i=0;i<=Counter;i++)
1585{
1586for(j=0;j<32;j++)
1587{
1588LowCoulometerTextBottom[i][j]=NumCharacters[message[i]][j];
1589}
1590}
1591
1592DisplayALine(1,LowCoulometerTextBottom);
1593Delay(20000);
1594}
1595/*******************************************************
1596函数:ShowAllCoulometer
1597功能:显示用电的总电量
1598参数:
1599返回值:
1600注:
1601******************************************************/
1602voidShowAllCoulometer(void)
1603{
1604inti=0,j=0,Counter=0;
1605ucharmessage[8]=0;
1606
1607intCoulometerAll=;
1608
1609DisplayALine(0,AllCoulometerTextTop);
1610
1611Counter=NumsToArray(CoulometerAll,message);
1612
1613memt(AllCoulometerTextBottom,0,8*32);
1614for(i=0;i<=Counter;i++)
1615{
1616for(j=0;j<32;j++)
1617{
1618AllCoulometerTextBottom[i][j]=NumCharacters[message[i]][j];
1619}
1620}
1621
1622DisplayALine(1,AllCoulometerTextBottom);
1623Delay(20000);
1624}
1625/*******************************************************
1626函数:ShowHighFee
1627功能:显示高峰时间段用电电费
1628参数:
1629返回值:
1630注:显示时电费进行了取整,电费全部按照整数结帐,不足1元的按照
16311元计算
1632******************************************************/
1633
1634voidShowHighFee(void)
1635{
1636inti,j,FeeHigh,Counter;
1637ucharmessage[8]=0;
1638
1639DisplayALine(0,HighFeeTextTop);
1640
1641FeeHigh=(int)ceil();
1642
1643Counter=NumsToArray(FeeHigh,message);
1644memt(HighFeeTextBottom,0,8*32);
1645for(i=0;i<=Counter;i++)
1646{
1647for(j=0;j<32;j++)
1648{
1649HighFeeTextBottom[i][j]=NumCharacters[message[i]][j];
1650}
1651}
1652
1653DisplayALine(1,HighFeeTextBottom);
1654Delay(20000);
1655}
1656/*************************************************
1657函数:ShowLowFee
1658功能:显示低谷时间段所用电量的电费
1659参数:
1660返回值:
1661注:显示时电费进行了取整,电费全部按照整数结帐,不足1元的按照
16621元计算
1663******************************************************/
1664voidShowLowFee(void)
1665{
1666inti,j,FeeLow,Counter;
1667ucharmessage[8]=0;
1668
1669DisplayALine(0,LowFeeTextTop);
1670
1671FeeLow=(int)ceil();
1672
1673Counter=NumsToArray(FeeLow,message);
1674memt(LowFeeTextBottom,0,8*32);
1675for(i=0;i<=Counter;i++)
1676{
1677for(j=0;j<32;j++)
1678{
1679LowFeeTextBottom[i][j]=NumCharacters[message[i]][j];
1680}
1681}
1682
1683DisplayALine(1,LowFeeTextBottom);
1684Delay(20000);
1685}
1686/*******************************************************
1687函数:ShowAllFee
1688功能:显示本月累计所用电费
1689参数:
1690返回值:
1691注:显示时电费进行了取整,电费全部按照整数结帐,不足1元的按照
16921元计算
1693******************************************************/
1694voidShowAllFee(void)
1695{
1696inti,j,FeeAll,Counter;
1697ucharmessage[8]=0;
1698
1699DisplayALine(0,AllFeeTextTop);
1700
1701FeeAll=(int)ceil();
1702
1703Counter=NumsToArray(FeeAll,message);
1704memt(AllFeeTextBottom,0,8*32);
1705for(i=0;i<=Counter;i++)
1706{
1707for(j=0;j<32;j++)
1708{
1709AllFeeTextBottom[i][j]=NumCharacters[message[i]][j];
1710}
1711}
1712
1713DisplayALine(1,AllFeeTextBottom);
1714Delay(20000);
1715}
1716/*******************************************************
1717函数:Clear
1718功能:电表重新开始计数,将电量表和电费表清零
1719参数:
1720返回值:
1721注:
1722******************************************************/
1723voidClear(void)
1724{
=0;
=0;
=0;
1728
=0.0;
=0.0;
=0.0;
1732}
1733
1734/*******************************************************
1735函数:SetHighFee
1736功能:设置高峰时间段电价
1737参数:
1738key:键盘输入的值
1739返回值:
1740注:键盘上的E键作为输入结束键,键盘上的D键作为小数点输入键
1741******************************************************/
1742voidSetHighFee(ucharkey)
1743{
1744staticucharidataBuffer[8]=0;
1745staticucharidataCounter=0;
1746uchar*Pointer;
1747//inti;
1748
1749if(key==0x0e)
1750{
1751DisplayALine(0,HighFeeSetTextTop);
_fee=ArrayToDigitalF(Buffer,Counter-1);
1753ArrayToCharacters(Buffer,HighFeeSetTextBottom,Counter-1);
1754DisplayALine(1,HighFeeSetTextBottom);
1755
1756Delay(20000);
1757WhichFunctionKey=0x00;
1758Counter=0;
1759memt(Buffer,0,8);
1760}
1761el
1762{
1763if(Counter<8&&((key>=0x00&&key<=0x09)||key==0x0d))
1764{
1765DisplayALine(0,HighFeeSetTextTop);
1766Pointer=Buffer;
1767Pointer[Counter]=key;
1768Counter++;
1769ArrayToCharacters(Buffer,HighFeeSetTextBottom,Counter-1);
1770
1771DisplayALine(1,HighFeeSetTextBottom);
1772Delay(20000);
1773}
1774el
1775{
1776WhichFunctionKey=0x00;
1777Counter=0;
1778memt(Buffer,0,8);
1779
1780ShowError();
1781}
1782}
1783
1784}
1785/*******************************************************
1786函数:SetLowFee
1787功能:设置低谷时间段电价
1788参数:
1789key:键盘输入的值
1790返回值:
1791注:键盘上的E键作为输入结束键,键盘上的D键作为小数点输入键
1792******************************************************/
1793voidSetLowFee(ucharkey)
1794{
1795staticucharidataBuffer[8]=0;
1796staticucharidataCounter=0;
1797uchar*Pointer;
1798
1799if(key==0x0e)
1800{
1801DisplayALine(0,LowFeeSetTextTop);
_fee=ArrayToDigitalF(Buffer,Counter-1);
1803ArrayToCharacters(Buffer,LowFeeTextBottom,Counter-1);
1804DisplayALine(1,LowFeeSetTextBottom);
1805
1806Delay(20000);
1807WhichFunctionKey=0x00;
1808Counter=0;
1809memt(Buffer,0,8);
1810}
1811el
1812{
1813if(Counter<8&&((key>=0x00&&key<=0x09)||key==0x0d))
1814{
1815DisplayALine(0,LowFeeSetTextTop);
1816Pointer=Buffer;
1817Pointer[Counter]=key;
1818Counter++;
_fee=ArrayToDigitalF(Buffer,Counter-1);
1820
1821ArrayToCharacters(Buffer,LowFeeTextBottom,Counter-1);
1822DisplayALine(1,LowFeeSetTextBottom);
1823Delay(20000);
1824}
1825el
1826{
1827WhichFunctionKey=0x00;
1828Counter=0;
1829memt(Buffer,0,8);
1830
1831ShowError();
1832}
1833}
1834
1835}
1836/*******************************************************
1837函数:SetRotateSpeed
1838功能:设置电表转数/Kwh
1839参数:
1840key:键盘输入的数
1841返回值:
1842注:键盘上的E键作为输入结束键
1843******************************************************/
1844voidSetRotateSpeed(ucharkey)
1845{
1846staticucharidataBuffer[8]=0;
1847staticucharidataCounter=0;
1848uchar*Pointer;
1849
1850if(key==0x0e)
1851{
1852DisplayALine(0,RotateSpeedSetTextTop);
_speed=ArrayToDigitalI(Buffer,Counter-1);
1854ArrayToCharacters(Buffer,RotateSpeedSetTextBottom,Counter-1);
1855DisplayALine(1,RotateSpeedSetTextBottom);
1856
1857Delay(20000);
1858
1859WhichFunctionKey=0x00;
1860Counter=0;
1861memt(Buffer,0,8);
1862}
1863el
1864{
1865if(Counter<8&&(key>=0x00&&key<=0x09))
1866{
1867DisplayALine(0,RotateSpeedSetTextTop);
1868Pointer=Buffer;
1869Pointer[Counter]=key;
1870Counter++;
1871
1872ArrayToCharacters(Buffer,RotateSpeedSetTextBottom,Counter-1);
1873DisplayALine(1,RotateSpeedSetTextBottom);
1874
1875Delay(20000);
1876}
1877el
1878{
1879WhichFunctionKey=0x00;
1880Counter=0;
1881memt(Buffer,0,8);
1882
1883ShowError();
1884}
1885}
1886
1887}
1888/*******************************************************
1889函数:SetHighStart
1890功能:设置高峰时段的开始时间,默认为6
1891参数:
1892key:键盘输入的数
1893返回值:
1894注:键盘上的E键作为输入结束键
1895******************************************************/
1896voidSetHighStart(ucharkey)
1897{
1898staticucharidataBuffer[8]=0;
1899staticucharidataCounter=0;
1900uchar*Pointer;
1901intTemp;
1902
1903if(key==0x0e)
1904{
1905Temp=ArrayToDigitalI(Buffer,Counter-1);
1906if(Temp>=0&&Temp<=23)
1907{
1908DisplayALine(0,HighStartSetTextTop);
nge_start=Temp;
1910
1911ArrayToCharacters(Buffer,HighStartSetTextBottom,Counter-1);
1912DisplayALine(1,HighStartSetTextBottom);
1913
1914Delay(20000);
1915}
1916el
1917{
1918ShowError();
1919}
1920
1921WhichFunctionKey=0x00;
1922Counter=0;
1923memt(Buffer,0,8);
1924}
1925el
1926{
1927if(Counter<8&&(key>=0x00&&key<=0x09))
1928{
1929DisplayALine(0,HighStartSetTextTop);
1930Pointer=Buffer;
1931Pointer[Counter]=key;
1932Counter++;
1933
1934ArrayToCharacters(Buffer,HighStartSetTextBottom,Counter-1);
1935DisplayALine(1,HighStartSetTextBottom);
1936
1937Delay(20000);
1938}
1939el
1940{
1941WhichFunctionKey=0x00;
1942Counter=0;
1943memt(Buffer,0,8);
1944
1945ShowError();
1946}
1947}
1948
1949}
1950/*******************************************************
1951函数:SetHighEnd
1952功能:设置高峰时段的结束时间,此值在程序开始时默认为21
1953参数:
1954key:键盘输入的数
1955返回值:
1956注:键盘上的E键作为输入结束键
1957******************************************************/
1958voidSetHighEnd(ucharkey)
1959{
1960staticucharidataBuffer[8]=0;
1961staticucharidataCounter=0;
1962uchar*Pointer;
1963intTemp;
1964
1965if(key==0x0e)
1966{
1967Temp=ArrayToDigitalI(Buffer,Counter-1);
1968if(Temp>=0&&Temp<=23)
1969{
1970DisplayALine(0,HighEndSetTextTop);
nge_end=Temp;
1972
1973ArrayToCharacters(Buffer,HighEndSetTextBottom,Counter-1);
1974DisplayALine(1,HighEndSetTextBottom);
1975Delay(20000);
1976}
1977el
1978{
1979ShowError();
1980}
1981WhichFunctionKey=0x00;
1982Counter=0;
1983memt(Buffer,0,8);
1984}
1985el
1986{
1987if(Counter<8&&(key>=0x00&&key<=0x09))
1988{
1989DisplayALine(0,HighEndSetTextTop);
1990Pointer=Buffer;
1991Pointer[Counter]=key;
1992
1993Counter++;
1994
1995ArrayToCharacters(Buffer,HighEndSetTextBottom,Counter-1);
1996DisplayALine(1,HighEndSetTextBottom);
1997Delay(20000);
1998}
1999el
2000{
2001WhichFunctionKey=0x00;
2002Counter=0;
2003memt(Buffer,0,8);
2004ShowError();
2005}
2006}
2007
2008}
2009/*******************************************************
2010函数:SetLowStart
2011功能:设置低谷时段的开始时间
2012参数:
2013key:键盘输入的数
2014返回值:
2015注:由于有SetHighStart和SetHighEnd函数足以完成设置时间段任务
2016这个函数被废弃不用
2017******************************************************/
2018voidSetLowStart(ucharkey)
2019{
2020key=0;
2021WhichFunctionKey=0x00;
2022}
2023/*******************************************************
2024函数:SetLowEnd
2025功能:设置低谷时段的结束时间
2026参数:
2027key:键盘输入的数
2028返回值:
2029注:由于有SetHighStart和SetHighEnd函数足以完成设置时间段任务
2030这个函数被废弃不用
2031******************************************************/
2032voidSetLowEnd(ucharkey)
2033{
2034key=0;
2035WhichFunctionKey=0x00;
2036}
2037
2038/***********************************辅助类函数
**********************************************/
2039/*******************************************************
2040函数:NumsToArray
2041功能:将整数各个位的数字分离,并按照书写顺序放入一个数字数组
2042以方便LCD显示
2043参数:
2044number:要分离的整数
2045Array:存放分离后数字的数组
2046返回值:返回分离后数组的最大有效下标,即原来整数的位数
2047注:这是一个辅助的算法函数,在Show-类函数中用到这个函数
2048******************************************************/
2049ucharNumsToArray(intnumber,ucharArray[8])
2050{
2051inti,Counter,Temp;
2052
2053for(i=0;i<8;i++)
2054{
2055Array[i]=number%10;
2056if(number/10>=1)
2057{
2058number=number/10;
2059}
2060el
2061{
2062break;
2063}
2064}
2065
2066Counter=i;
2067if(Counter%2==0)
2068{
2069for(i=0;i
2070{
2071Temp=Array[i];
2072Array[i]=Array[Counter-i];
2073Array[Counter-i]=Temp;
2074}
2075}
2076el
2077{
2078for(i=0;i<(Counter+1)/2;i++)
2079{
2080Temp=Array[i];
2081Array[i]=Array[Counter-i];
2082Array[Counter-i]=Temp;
2083}
2084}
2085
2086returnCounter;
2087}
2088/*******************************************************
2089函数:ArrayToCharacters
2090功能:将数组中的单个数字通过查表得到字型码,并将字型码放入显示
2091缓存单元
2092参数:
2093message:存放数字的数组
2094display:存放查到字型码的二维数组
2095length:message数组中存放数据的长度,以最大下标值表示
2096返回值:
2097注:这是一个辅助的算法函数,在Set..系列函数中会用到这个函数
2098******************************************************/
2099voidArrayToCharacters(ucharmessage[8],uchardisplay[8][32],ucharlength)
2100{
2101inti,j;
2102memt(&display[0][0],0,8*32);
2103for(i=0;i<=length;i++)
2104{
2105for(j=0;j<32;j++)
2106{
2107display[i][j]=NumCharacters[message[i]][j];
2108}
2109}
2110}
2111/*******************************************************
2112函数:ArrayToDigitalI
2113功能:将一个存放单个数字的数组内容转换为整数
2114参数:
2115Array:存放键盘输入的呈现为单个数字的整数
2116length:数组Array中有效的元素个数,要求为数组的最大有效下标值
2117返回值:转换后的整数
2118注:这是一个辅助的算法函数,在Set-Start、End、Speed函数中用到这个函数
2119******************************************************/
2120intArrayToDigitalI(ucharArray[8],ucharlength)
2121{
2122intnumber=0;
2123inti=0;
2124
2125for(i=0;i<=length;i++)
2126{
2127number=number*10+Array[i];
2128}
2129
2130returnnumber;
2131}
2132/*******************************************************
2133函数:ArrayToDigitalF
2134功能:将一个存放单个数字的数组内容转换为小数
2135参数:
2136Array:存放键盘按顺序输入的呈现为单个数字的小数
2137length:数组Array中的数字个数,要求为数组Array的最大下标值
2138而不是真正的元素个数(最大下标值+1)
2139返回值:转换后的小数
2140注:这是一个辅助的算法函数,在Set-Fee类函数用到这个函数
2141******************************************************/
2142floatArrayToDigitalF(ucharArray[8],ucharlength)
2143{
2144ucharDotPosition;
2145uchari;
2146floatTail;
2147floatnumber;
2148intIntegerF,IntegerB;
2149
2150for(i=0;Array[i]!=0x0d;i++);
2151
2152DotPosition=i;
2153
2154IntegerF=ArrayToDigitalI(Array,DotPosition-1);
2155IntegerB=ArrayToDigitalI(&Array[DotPosition+1],length-(DotPosition+1));
2156Tail=IntegerB;
2157Tail=Tail/(pow(10,length-DotPosition));
2158
2159number=IntegerF+Tail;
2160
2161returnnumber;
2162}
2163/*******************************************************
2164函数:ShowError
2165功能:在LCD上显示出错信息
2166参数:
2167返回值:
2168注:在各个函数中都可能用到这个函数
2169******************************************************/
2170voidShowError(void)
2171{
2172DisplayALine(0,ErrorText);
2173Delay(20000);
2174}
2175/*******************************************************
2176函数:ShowDefault
2177功能:默认下屏幕显示
2178参数:
2179返回值:
2180注:这个函数为一个死循环函数,默认情况下一直显示这些信息
2181在主函数中用到产生一个死循环
2182******************************************************/
2183voidShowDefault(void)
2184{
2185inti=0;
2186while(1)
2187{
2188i=i%11;
2189DisplayALine(0,&DefaultText[11][0][0]);
2190DisplayALine(1,&DefaultText[i][0][0]);
2191
2192i++;
2193Delay(20000);
2194}
2195}
2196/*******************************************************
2197函数:WakeupDog
2198功能:唤醒小狗,小狗开始计时
2199参数:
2200返回值:
2201注:
2202******************************************************/
2203voidWakeupDog(void)
2204{
2205TL0=0x00;
2206TH0=0x00;
2207TR0=1;
2208}
2209
2210/******************************中断处理函数
******************************************/
2211/*******************************************************
2212函数:DogSniffer
2213功能:小狗看门,使用定时器T0,可以使键盘输入超时后自动复位
2214参数:
2215返回值:
2216注:如果有人按了功能键,并且在65×100ms内没有设置好,则功能键
2217标志会被清除,系统恢复到功能键没有按下的状态
2218******************************************************/
2219voidDogSniffer(void)interrupt1using0
2220{
2221staticintidataWait=0;
2222
2223if(WhichFunctionKey<0x06&&WhichFunctionKey>0x0d)
2224{
2225Wait=0;
2226}
2227el
2228{
2229if(Wait<100)
2230{
2231Wait++;
2232TL0=0x00;
2233TH0=0x00;
2234TR0=1;
2235}
2236el/*******如果超时将WhichFunctionKey标志取消********/
2237{
2238WhichFunctionKey=0x00;
2239}
2240}
2241}
2242/*******************************************************
2243函数:KeyBoard
2244功能:键盘的中断处理函数,判断按键,并调用相应处理函数
2245参数:
2246返回值:
2247注:键盘接到CPU的INT1中断
2248******************************************************/
2249voidKeyBoard(void)interrupt2using0
2250{
2251ucharkey;
2252CommandPortOf8279=0x40;
2253key=DataOf8279;
2254
2255if(WhichFunctionKey>=0x06&&WhichFunctionKey<=0x0d)
2256{
2257switch(WhichFunctionKey)
2258{
2259ca0x06:
2260SetHighFee(key);
2261break;
2262
2263ca0x07:
2264SetLowFee(key);
2265break;
2266
2267ca0x08:
2268SetRotateSpeed(key);
2269break;
2270
2271ca0x09:
2272SetHighStart(key);
2273break;
2274
2275ca0x0a:
2276SetHighEnd(key);
2277break;
2278
2279ca0x0b:
2280SetLowStart(key);
2281break;
2282
2283ca0x0d:
2284SetLowEnd(key);
2285}
2286}
2287el
2288{
2289switch(key)
2290{
2291ca0x00:
2292ShowHighCoulometer();
2293break;
2294
2295ca0x01:
2296ShowLowCoulometer();
2297break;
2298
2299ca0x02:
2300ShowAllCoulometer();
2301break;
2302
2303ca0x03:
2304ShowHighFee();
2305break;
2306
2307ca0x04:
2308ShowLowFee();
2309break;
2310
2311ca0x05:
2312ShowAllFee();
2313break;
2314
2315ca0x06:
2316WhichFunctionKey=0x06;
2317WakeupDog();
2318break;
2319
2320ca0x07:
2321WhichFunctionKey=0x07;
2322WakeupDog();
2323break;
2324
2325ca0x08:
2326WhichFunctionKey=0x08;
2327WakeupDog();
2328break;
2329
2330ca0x09:
2331WhichFunctionKey=0x09;
2332WakeupDog();
2333break;
2334
2335ca0x0a:
2336WhichFunctionKey=0x0a;
2337WakeupDog();
2338break;
2339
2340ca0x0b:
2341WhichFunctionKey=0x0b;
2342WakeupDog();
2343break;
2344
2345ca0x0c:
2346Clear();
2347break;
2348
2349ca0x0d:
2350WhichFunctionKey=0x0d;
2351WakeupDog();
2352break;
2353
2354default:
2355ShowError();
2356break;
2357}
2358}
2359}
2360/******************************电量计费函数
****************************************/
2361/*******************************************************
2362函数:OneCoulometer
2363功能:计算电量,在满一度电的时候更新电量表和计费表
2364参数:
2365返回值:
2366注:输入脉冲接到T1计数器上
2367******************************************************/
2368voidOneCoulometer(void)interrupt3using0
2369{
2370intMode;
2371/*******从外部RAM读入当前时间********/
2372ucharTime=RAM6264;
2373
2374
2375/*******判断高峰还是低谷********/
2376if((Time>=nge_start)&&(Time<=nge_end))
2377{
++;
++;
+=_fee;
+=_fee;
2382}
2383el
2384{
++;
++;
2387
+=_fee;
+=_fee;
2390}
2391
2392/*******把电表转数作为T1计数初值********/
2393Mode=_speed;
2394TL1=(uchar)(0x00ff&Mode);
2395TH1=(uchar)(Mode>>8);
2396TR1=1;
2397}
本文发布于:2022-12-03 10:51:30,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/43951.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |