智能电表主控程序源代码.docx
- 文档编号:24466510
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:96
- 大小:38.13KB
智能电表主控程序源代码.docx
《智能电表主控程序源代码.docx》由会员分享,可在线阅读,更多相关《智能电表主控程序源代码.docx(96页珍藏版)》请在冰豆网上搜索。
智能电表主控程序源代码
/********************************************************************************************************
2程序名称:
智能电表主控程序
3程序设计:
freevanx、LDZ
4时间:
2006-9-29
5功能:
1、计算电量、电费
62、接受键盘输入,将所要求的信息显示在LCD上
73、通过键盘设置内部计费参照,适应不同种类的器材,不同的
8地区,不同的电价,不同的计费时段。
9
10备注:
◎版权所有,此程序仅可参考,XX,不得复制,分发。
11
12编译方法:
将main.c
13characterlib.h
14C51FPS.LIB
15STARTUP.A51(不是必需文件)
16添加到同一Group,然后
17
181、在工程文件列表中的main.c文件上右击鼠标
192、选择Optionsforfile“main.c”,打开一个对话框,
203、在Properties选项卡的右边激活GenerateAssemblerSRCfile复选框
214、在同一位置激活AssembleSRCfile.复选框
22
23********************************************************************************************************/
24
25/**************************************************
26REG51.h包含各种寄存器的定义
27math.h使用了其中的ceil()和pow()函数
28string.h使用了其中的memset()函数
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****************************************************/
65structinitset
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*******************************************************/
119structinitsetidataSet={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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 电表 主控 程序 源代码