📄 zlg7290demo.lst
字号:
C51 COMPILER V7.50 ZLG7290DEMO 10/29/2007 08:38:59 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ZLG7290DEMO
OBJECT MODULE PLACED IN ZLG7290Demo.OBJ
COMPILER INVOKED BY: C:\Program Files\KEIL C51\C51\BIN\C51.EXE ZLG7290Demo.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 ZLG7290演示程序
3 */
4
5 #include "I2C.h"
6 #include "ZLG7290.h"
7
8 //定义键盘中断标志,FlagINT=1表示有键按下
9 volatile bit FlagINT = 0;
10
11 /*
12 函数:INT0_SVC()
13 功能:ZLG7290键盘中断服务程序
14 说明:中断触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平
15 */
16 void INT0_SVC() interrupt 0
17 {
18 1 FlagINT = 1;
19 1 }
20
21 /*
22 函数:Delay()
23 功能:延时10ms~655.36s
24 参数:
25 t>0时,延时(t*0.01)s
26 t=0时,延时655.36s
27 说明:
28 晶振采用11.0592MHz
29 */
30 void Delay(unsigned int t)
31 {
32 1 do
33 1 {
34 2 TH0 = 0xDC;
35 2 TL0 = 0x00;
36 2 TR0 = 1;
37 2 while ( !TF0 );
38 2 TF0 = 0;
39 2 TR0 = 0;
40 2 } while (--t);
41 1 }
42
43 /*
44 函数:SystemInit()
45 功能:系统初始化
46 */
47 void SystemInit()
48 {
49 1 I2C_Init();
50 1 TMOD = 0x01;
51 1 Delay(30); //等待ZLG7290复位完毕
52 1 }
53
54 /*
55 函数:ClearAll()
C51 COMPILER V7.50 ZLG7290DEMO 10/29/2007 08:38:59 PAGE 2
56 功能:清除所有显示
57 */
58 void ClearAll()
59 {
60 1 unsigned char x;
61 1 for ( x=0; x<8; x++ )
62 1 {
63 2 ZLG7290_Download(x,0,0,31);
64 2 }
65 1 }
66
67 /*
68 函数:Test_DispBuf()
69 功能:测试直接写显存
70 */
71 void Test_DispBuf()
72 {
73 1 code char DispDat[16] =
74 1 {//字母AbCdEFgHiJkLoPqr的字形数据
75 1 0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,
76 1 0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A
77 1 };
78 1 unsigned char n;
79 1 unsigned char x;
80 1 unsigned char reg;
81 1 unsigned char dat;
82 1 for ( n=0; n<16; n++ )
83 1 {
84 2 for ( x=0; x<8; x++ )
85 2 {
86 3 reg = ZLG7290_DpRam + x;
87 3 dat = DispDat[n];
88 3 ZLG7290_WriteReg(reg,dat);
89 3 }
90 2 Delay(50);
91 2 }
92 1 }
93
94 /*
95 函数:Test_Download()
96 功能:测试下载数据功能
97 */
98 void Test_Download()
99 {
100 1 unsigned char x;
101 1 bit dp;
102 1 bit flash;
103 1 char dat;
104 1 //点亮所有数码管
105 1 dp = 1;
106 1 flash = 0;
107 1 dat = 8;
108 1 for ( x=0; x<8; x++ )
109 1 {
110 2 ZLG7290_Download(x,dp,flash,dat);
111 2 }
112 1 Delay(100);
113 1 //依次显示所有字型
114 1 dp = 0;
115 1 flash = 0;
116 1 for ( dat=0; dat<32; dat++ )
117 1 {
C51 COMPILER V7.50 ZLG7290DEMO 10/29/2007 08:38:59 PAGE 3
118 2 for ( x=0; x<8; x++ )
119 2 {
120 3 ZLG7290_Download(x,dp,flash,dat);
121 3 }
122 2 Delay(50);
123 2 }
124 1 }
125
126 /*
127 函数:Test_ScanNum()
128 功能:测试不同扫描位数
129 说明:扫描位数越少,数码管就越亮
130 */
131 void Test_ScanNum()
132 {
133 1 unsigned char x;
134 1 for ( x=0; x<8; x++ )
135 1 {
136 2 ZLG7290_Download(x,1,0,8);
137 2 }
138 1 Delay(100);
139 1 for ( x=0; x<8; x++ )
140 1 {
141 2 ZLG7290_WriteReg(ZLG7290_ScanNum,x);
142 2 Delay(100);
143 2 }
144 1 }
145
146 /*
147 函数:Test_Flash()
148 功能:测试闪烁功能
149 */
150 void Test_Flash()
151 {
152 1 char dat = 0x01;
153 1 unsigned char x;
154 1 //显示01234567
155 1 for ( x=0; x<8; x++ )
156 1 {
157 2 ZLG7290_Download(x,0,0,x);
158 2 }
159 1 //设置闪烁控制寄存器
160 1 ZLG7290_WriteReg(ZLG7290_FlashOnOff,0x11);
161 1 //闪烁演示
162 1 for ( x=0; x<8; x++ )
163 1 {
164 2 ZLG7290_Flash(dat);
165 2 dat <<= 1;
166 2 Delay(300);
167 2 }
168 1 //数码管的8个位一起闪烁
169 1 ZLG7290_Flash(0xFF);
170 1 Delay(350);
171 1 //停止闪烁
172 1 ZLG7290_Flash(0x00);
173 1 Delay(50);
174 1 }
175
176 /*
177 函数:Test_SegOnOff()
178 功能:测试段寻址功能
179 */
C51 COMPILER V7.50 ZLG7290DEMO 10/29/2007 08:38:59 PAGE 4
180 void Test_SegOnOff()
181 {
182 1 unsigned char seg;
183 1 ClearAll();
184 1 Delay(100);
185 1 for ( seg=0; seg<64; seg++ )
186 1 {
187 2 ZLG7290_SegOnOff(seg,1);
188 2 Delay(30);
189 2 }
190 1 Delay(100);
191 1 for ( seg=0; seg<64; seg++ )
192 1 {
193 2 ZLG7290_SegOnOff(seg,0);
194 2 Delay(30);
195 2 }
196 1 Delay(100);
197 1 }
198
199 /*
200 函数:DispValue()
201 功能:显示100以内的数值
202 参数:
203 x:显示位置,取值0~6
204 dat:要显示的数据,取值0~99
205 */
206 void DispValue(char x, unsigned char dat)
207 {
208 1 unsigned char d;
209 1 d = dat / 10;
210 1 ZLG7290_Download(x,0,0,d);
211 1 d = dat - d * 10;
212 1 ZLG7290_Download(x+1,0,0,d);
213 1 }
214
215 /*
216 函数:DispHexValue()
217 功能:以16进制方式显示数值
218 参数:
219 x:显示位置,取值0~6
220 dat:要显示的数据,取值0~255
221 */
222 void DispHexValue(char x, unsigned char dat)
223 {
224 1 unsigned char d;
225 1 d = dat / 16;
226 1 ZLG7290_Download(x,0,0,d);
227 1 d = dat - d * 16;
228 1 ZLG7290_Download(x+1,0,0,d);
229 1 }
230
231 /*
232 函数:Test_Key()
233 功能:测试按键功能
234 */
235 void Test_Key()
236 {
237 1 unsigned char KeyValue;
238 1 unsigned char RepeatCnt;
239 1 unsigned char FnKeyValue;
240 1 ClearAll();
241 1 EA = 0;
C51 COMPILER V7.50 ZLG7290DEMO 10/29/2007 08:38:59 PAGE 5
242 1 IT0 = 1; //负边沿触发中断
243 1 EX0 = 1; //允许外部中断
244 1 EA = 1;
245 1 for (;;)
246 1 {
247 2 if ( FlagINT ) //如果有键按下
248 2 {
249 3 //清除中断标志
250 3 FlagINT = 0;
251 3 //读取键值、连击计数器值、功能键值
252 3 ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
253 3 ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
254 3 ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
255 3 //显示键值、连击计数器值、功能键值
256 3 DispValue(0,KeyValue);
257 3 DispHexValue(3,RepeatCnt);
258 3 DispHexValue(6,FnKeyValue);
259 3 }
260 2 PCON |= 0x01; //使CPU进入空闲状态,任一中断可唤醒
261 2 }
262 1 }
263
264 void main()
265 {
266 1 SystemInit(); //系统初始化
267 1 Test_DispBuf(); //测试直接写显存
268 1 Test_Download(); //测试下载数据
269 1 Test_ScanNum(); //测试不同扫描位数
270 1 Test_Flash(); //测试闪烁功能
271 1 Test_SegOnOff(); //测试段寻址功能
272 1 Test_Key(); //测试键盘功能
273 1 while (1);
274 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 618 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
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 + -