📄 1.lst
字号:
C51 COMPILER V7.06 1 05/25/2008 04:26:32 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <string.h>
3 #include "zkFunc.h"
4 #define false 0
5 #define true 1
6 #define bool bit
7 extern void ShT_LEDBoard_ColShiftOut(uchar ucExtShiftCount);
8 extern void ShT_LEDBoard_RowShiftOut(uint uiWriteValue);
9 extern code HZ_MODEL ZK_Data[];
10 extern code unsigned char ASCII816[][16];//标准的asc码
11 extern uchar ucDispDataBuff[128];
12 uchar ucLoopCount;
13 uchar ucRTCData[16];
14 uchar ucColDataBuff_High[17];
15 uchar ucColDataBuff_Low[17];
16 uint uiRowControlValue;
17 uchar ucRowLineCount;
18 //控制移动数量计数器
19 uchar ucShiftCount;
20 bool bMoveEnable; //是否流动显示允许标志位
21 sbit c_Col_SOE = P1^2; //显示开关 0为显示,1为关闭
22 uchar xdata ucLEDDisplayMemory[17*32]; //显示存储器
23 #define c_LineWidth 18 //行宽
24 #define c_MaxLineByteCount 18 //每行占用显示存储器字节数
25 #define c_MaxColNumber 128
26 #define c_MaxLineCount 16 //行的高度
27 #define c_HalfScreenMemoryOffset 16*c_LineWidth //半屏占用存储器单元
28 uchar ucDispTemperatureCount;
29 void RefreshLEDScreen(uchar ucLoopCount)//刷新屏幕
30 {
31 1 uchar ucRowLineCount;
32 1 uchar ucRefreshCount;
33 1 for(ucRefreshCount=0; ucRefreshCount<ucLoopCount; ucRefreshCount++)
34 1 {
35 2 uiRowControlValue = 0x0001;
36 2 for(ucRowLineCount=0; ucRowLineCount<16; ucRowLineCount++)
37 2 {
38 3 memcpy(ucColDataBuff_Low,ucLEDDisplayMemory+ucRowLineCount*c_LineWidth,17);
39 3 memcpy(ucColDataBuff_High,ucLEDDisplayMemory+c_HalfScreenMemoryOffset+ucRowLineCount*c_LineWidth,17);
40 3 if(bMoveEnable)
41 3 {
42 4 ShT_LEDBoard_ColShiftOut(ucShiftCount);
43 4 }
44 3 else
45 3 {
46 4 ShT_LEDBoard_ColShiftOut(0);
47 4 }
48 3 ShT_LEDBoard_RowShiftOut(uiRowControlValue);
49 3 c_Col_SOE = 0; //打开显示
50 3 uiRowControlValue <<= 1;
51 3 }
52 2 }
53 1 //补偿最后一行的亮度不够
54 1 memcpy(ucColDataBuff_Low,ucLEDDisplayMemory+15*c_LineWidth,17);
55 1 memcpy(ucColDataBuff_High,ucLEDDisplayMemory+c_HalfScreenMemoryOffset+15*c_LineWidth,17);
C51 COMPILER V7.06 1 05/25/2008 04:26:32 PAGE 2
56 1 if(bMoveEnable)
57 1 {
58 2 ShT_LEDBoard_ColShiftOut(ucShiftCount);
59 2 }
60 1 else
61 1 {
62 2 ShT_LEDBoard_ColShiftOut(0);
63 2 }
64 1
65 1 c_Col_SOE = 1; //关闭显示
66 1 }
67
68 bool GetHzModelInMem(uint uiHZCode,HZ_MODEL ** pHzModel)
69 {
70 1 //顺序查找法
71 1 uint uiIndex;
72 1 bool bResultFlag;
73 1 uiIndex = 0;
74 1 while(1)
75 1 {
76 2 if(ZK_Data[uiIndex].uiHZcode == 0xFFFF)
77 2 {
78 3 *pHzModel = (HZ_MODEL *)&(ZK_Data[uiIndex]);
79 3 bResultFlag = false;
80 3 break;
81 3 }
82 2 if(ZK_Data[uiIndex].uiHZcode == uiHZCode)
83 2 {
84 3 //-找到
85 3 *pHzModel = (HZ_MODEL *)&(ZK_Data[uiIndex]);
86 3 bResultFlag = true;
87 3 break;
88 3 }
89 2 else
90 2 {
91 3 uiIndex++;
92 3 }
93 2 }
94 1 return bResultFlag;
95 1 }
96 void GetHZDot(uint uiHZCode,uchar *ucHZDotData)
97 {
98 1 HZ_MODEL *pHzModel;
99 1 bool bReturnValue;
100 1 bReturnValue = GetHzModelInMem(uiHZCode,&pHzModel);
101 1 memcpy(ucHZDotData,&pHzModel->model,32);
102 1 }
103
104 //取字并显示
105 void LED_DispHZ(uchar ucDispRow,uchar HzNo,uchar *pucDispString)
106 {
107 1 uchar HzNoC=16;
108 1 uchar ucZMData;
109 1 uchar ucColOffset; //列偏移量
110 1 uchar uci;
111 1 uchar ucStartPosition;
112 1 uint uiHZCode;
113 1 uchar xdata ucHZDataBuff[128];
114 1 ucColOffset = 0;
115 1 bMoveEnable = true;
116 1 HzNoC *=HzNo;
117 1 while(*pucDispString != '\0')
C51 COMPILER V7.06 1 05/25/2008 04:26:32 PAGE 3
118 1 {
119 2 //取字模
120 2 uiHZCode = *pucDispString++;
121 2 uiHZCode <<=8;
122 2 uiHZCode += *pucDispString++;
123 2 GetHZDot(uiHZCode,ucHZDataBuff);
124 2
125 2 for(uci=0; uci<16; uci++)
126 2 {
127 3 //左半边字
128 3 ucZMData = ucHZDataBuff[uci*2];
129 3 if(ucDispRow == 1)
130 3 {
131 4 ucLEDDisplayMemory[uci*c_MaxLineByteCount+ucColOffset] =ucZMData;
132 4 }
133 3 // else
134 3 // {
135 3 // ucLEDDisplayMemory[uci*c_MaxLineByteCount+c_HalfScreenMemoryOffset+ucColOffset] =ucZMData;
136 3 // }
137 3 //右半边字
138 3 ucZMData = ucHZDataBuff[uci*2+1];
139 3
140 3 if(ucDispRow == 1)
141 3 {
142 4 ucLEDDisplayMemory[uci*c_MaxLineByteCount+ucColOffset+1] =ucZMData;
143 4 }
144 3 // else
145 3 // {
146 3 // ucLEDDisplayMemory[uci*c_MaxLineByteCount+c_HalfScreenMemoryOffset+ucColOffset+1] =ucZMData;
147 3 // }
148 3 }
149 2 ucColOffset++;
150 2 ucColOffset++;
151 2 *pucDispString = pucDispString[ucStartPosition + ucColOffset];
152 2 }
153 1 for(ucShiftCount=0; ucShiftCount<HzNoC; ucShiftCount++)
154 1 {
155 2 RefreshLEDScreen(10);
156 2 }
157 1 // ucStartPosition++;
158 1 bMoveEnable = false;
159 1 }
160 //
161 void LED_ScrollDispString(uchar ucDispRow,uchar ucRefreshCount,uchar *pucDispString)//1
162 {
163 1 uchar ucDispChar;
164 1 uchar ucZMData;
165 1 uchar ucColOffset; //列偏移量
166 1 uchar uci;
167 1 uchar ucStartPosition;
168 1 bMoveEnable = true;
169 1 ucDispChar = *pucDispString;
170 1 ucColOffset = 0;
171 1 ucStartPosition =0;
172 1 ucDispChar = pucDispString[ucStartPosition + ucColOffset];
173 1 while(ucDispChar != '\0')
174 1 {
175 2 for(ucColOffset = 0; ucColOffset<16; ucColOffset++)
176 2 {
177 3 for(uci=0; uci<17; uci++)
178 3 {
179 4 ucZMData = ASCII816[ucDispChar - 0x20][uci];
C51 COMPILER V7.06 1 05/25/2008 04:26:32 PAGE 4
180 4
181 4 if(ucDispRow == 1)
182 4 {
183 5 ucLEDDisplayMemory[uci*c_MaxLineByteCount+ucColOffset] =ucZMData;
184 5 }
185 4 else
186 4 {
187 5 ucLEDDisplayMemory[uci*c_MaxLineByteCount+c_HalfScreenMemoryOffset+ucColOffset] =ucZMData;
188 5 }
189 4 }
190 3 ucDispChar = pucDispString[ucStartPosition + ucColOffset];
191 3 }
192 2 for(ucShiftCount=0; ucShiftCount<0x08; ucShiftCount++)
193 2 {
194 3 RefreshLEDScreen(ucRefreshCount);
195 3 }
196 2 ucStartPosition++;
197 2 }
198 1 bMoveEnable = false;
199 1 }
200 void main (void)
201 {
202 1 while(1)
203 1 {
204 2 // LED_ScrollDispString(1, 15, "Hello");
205 2 //下面两行为清屏用
206 2 memset(ucLEDDisplayMemory,0,c_LineWidth*c_MaxLineCount);
207 2 LED_DispHZ(1,4,"南师泰院");
208 2 // RefreshLEDScreen(100);
209 2 memset(ucLEDDisplayMemory,0,c_LineWidth*c_MaxLineCount);
210 2 LED_DispHZ(1,8,"谢谢使用南师泰院");
211 2 RefreshLEDScreen(100);
212 2 }
213 1 }
214 //字库
215 code HZ_MODEL ZK_Data[]=
216 {
217 { 0xD0BB, //谢
218 0x02,0x08,0x44,0x88,0x2F,0xC8,0x28,0x88,0x0F,0x88,0x08,0xFE,0xEF,0x88,0x28,0x88,
219 0x28,0xC8,0x3F,0xA8,0x21,0xA8,0x2A,0x88,0x34,0x88,0x28,0x88,0x12,0xA8,0x01,0x10},
220
221 { 0xCAB9, //使
222 0x10,0x40,0x10,0x44,0x1F,0xFE,0x20,0x40,0x27,0xFC,0x64,0x44,0xA4,0x44,0x24,0x44,
223 0x27,0xFC,0x24,0x44,0x22,0x40,0x21,0x80,0x20,0xC0,0x21,0x30,0x26,0x0E,0x28,0x04},
224
225 { 0xD3C3, //用
226 0x00,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,
227 0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x41,0x08,0x41,0x28,0x80,0x10},
228
229 { 0xC4CF, //南
230 0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x02,0x00,0x3F,0xFC,0x24,0x24,0x22,0x44,
231 0x2F,0xF4,0x21,0x04,0x3F,0xFC,0x21,0x04,0x21,0x04,0x21,0x14,0x21,0x08,0x00,0x00},
232
233 { 0xCAA6, //师
234 0x08,0x00,0x0B,0xFE,0x48,0x20,0x48,0x20,0x4B,0xFE,0x4A,0x22,0x4A,0x22,0x4A,0x22,
235 0x4A,0x22,0x52,0x22,0x52,0x2A,0x12,0x24,0x20,0x20,0x40,0x20,0x80,0x20,0x00,0x20},
236
237 { 0xCCA9, //泰
238 0x02,0x00,0x7F,0xFC,0x02,0x00,0x3F,0xF8,0x02,0x00,0xFF,0xFE,0x04,0x40,0x09,0x20,
239 0x11,0x18,0x29,0x2E,0xC7,0x44,0x05,0xC0,0x19,0x20,0x61,0x18,0x05,0x00,0x02,0x00},
240
241 { 0xD4BA, //院
C51 COMPILER V7.06 1 05/25/2008 04:26:32 PAGE 5
242 0x00,0x80,0xF8,0x40,0x8F,0xFE,0x94,0x04,0xA0,0x00,0xA3,0xF8,0x90,0x00,0x88,0x00,
243 0x8F,0xFE,0xA9,0x20,0x91,0x20,0x81,0x20,0x82,0x22,0x82,0x22,0x84,0x22,0x88,0x1E},
244
245 { 0xFFFF, //字库结尾标志符
246 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
247 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
248 };
249
250
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 882 ----
CONSTANT SIZE = 298 ----
XDATA SIZE = 544 128
PDATA SIZE = ---- ----
DATA SIZE = 56 31
IDATA SIZE = ---- ----
BIT SIZE = 1 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -