📄 zlg7289.lst
字号:
C51 COMPILER V7.01 ZLG7289 01/11/1999 14:12:37 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE ZLG7289
OBJECT MODULE PLACED IN Zlg7289.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Zlg7289.c OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /****************************************************************************
2 * File:ZLG7289.C
3 * 功能:ZLG7289A键盘显示芯片显示驱动程序。
4 * 说明:MCS-51单片机,晶振不要大于12MHz。
5 ****************************************************************************/
6
7 #include <Reg51.h>
8 #include "ZLG7289.H"
9
10 // 定义控制口线,用户根据自已的系统相应更改
11
12
13 bit temp;
14
15
16 /****************************************************************************
17 * 名称:Delay8uS
18 * 功能:8uS软件延时
19 * 说明:用户根据自已的系统相应更改
20 ****************************************************************************/
21 void Delay8uS(void)
22 { uchar i;
23 1 for(i=0; i<4; i++);
24 1 }
25
26
27 /****************************************************************************
28 * 名称:Delay50uS
29 * 功能:50uS软件延时
30 * 说明:用户根据自已的系统相应更改
31 ****************************************************************************/
32 void Delay50uS(void)
33 { uchar i;
34 1 for(i=0; i<25; i++);
35 1 }
36
37
38 /****************************************************************************
39 * 名称:ZLG7289_SendByte
40 * 功能:发送字节数据,高位在前,符合ZLG7289传输协议。
41 * 入口参数:dat 待发送的数据
42 * 注意:使用此函数前要选择ZLG7289,即ZLG7289_CS = 0;
43 * 本函数不操作ZLG7289_CS
44 ****************************************************************************/
45 void ZLG7289_SendByte(uchar dat)
46 { uchar i;
47 1 Delay50uS(); // 延时,T1
48 1 for(i=0; i<8; i++)
49 1 { if( (dat&0x80)==0 ) ZLG7289_DIO = 0;
50 2 else ZLG7289_DIO = 1;
51 2 dat = dat<<1; // 数据移位
52 2 ZLG7289_CLK = 1; // 发送CLK脉冲
53 2 Delay8uS(); // 延时,T2
54 2 ZLG7289_CLK = 0;
55 2 Delay8uS(); // 延时,T3
C51 COMPILER V7.01 ZLG7289 01/11/1999 14:12:37 PAGE 2
56 2 }
57 1
58 1 ZLG7289_DIO = 0;
59 1 }
60
61 uchar ZLG7289_RcvByte()
62 { uchar i,dat=0;
63 1 ZLG7289_DIO=1;
64 1 Delay50uS(); // 延时,T1
65 1 for(i=0; i<8; i++)
66 1 {
67 2 ZLG7289_CLK = 1;// 发送CLK脉冲
68 2 dat = dat<<1; // 数据移位
69 2 Delay8uS();
70 2 dat=dat+(uchar)ZLG7289_DIO;
71 2 ZLG7289_CLK = 0;
72 2 Delay8uS(); // 延时,T2
73 2 }
74 1
75 1 ZLG7289_DIO = 0;
76 1 return dat;
77 1 }
78 /****************************************************************************
79 * 名称:ZLG7289_SendCommand
80 * 功能:向ZLG7289发送命令。
81 * 入口参数:com 待发送的命令字
82 ****************************************************************************/
83 void ZLG7289_SendCommand(uchar com)
84 {
85 1 ZLG7289_CLK = 0;
86 1 ZLG7289_CS = 0;
87 1 ZLG7289_SendByte(com); // 将命令发送出去
88 1 ZLG7289_CS = 1;
89 1 }
90
91 uchar ZLG7289_GetKey()
92 {
93 1 uchar dat,i;
94 1 ZLG7289_CLK = 0;
95 1 ZLG7289_CS = 0;
96 1 Delay50uS();
97 1 dat=0x15; // 延时,T1
98 1 for(i=0; i<8; i++)
99 1 { if( (dat&0x80)==0 ) ZLG7289_DIO = 0;
100 2 else ZLG7289_DIO = 1;
101 2 dat = dat<<1; // 数据移位
102 2 ZLG7289_CLK = 1; // 发送CLK脉冲
103 2 Delay8uS(); // 延时,T2
104 2 ZLG7289_CLK = 0;
105 2 Delay8uS(); // 延时,T3
106 2 }
107 1 dat=0;
108 1 Delay50uS();
109 1 for(i=0; i<8; i++)
110 1 {
111 2 ZLG7289_CLK = 1;// 发送CLK脉冲'
112 2 Delay8uS();
113 2
114 2 temp=ZLG7289_DIO;
115 2 dat=dat<<1;
116 2 dat=dat+(uchar)temp;
117 2 ZLG7289_CLK = 0;
C51 COMPILER V7.01 ZLG7289 01/11/1999 14:12:37 PAGE 3
118 2 Delay8uS();
119 2 }
120 1 ZLG7289_DIO = 0;
121 1 ZLG7289_CS = 1;
122 1 return dat;
123 1 }
124
125 /****************************************************************************
126 * 名称:ZLG7289_SendData
127 * 功能:向ZLG7289发送数据。即带数据的命令。
128 * 入口参数:com 待发送的命令字
129 * dat 待发送的数据
130 ****************************************************************************/
131 void ZLG7289_SendData(uchar com, uchar dat)
132 { ZLG7289_CLK = 0;
133 1 ZLG7289_CS = 0;
134 1 ZLG7289_SendByte(com);
135 1 Delay50uS(); // 延时,T4
136 1 ZLG7289_SendByte(dat);
137 1 ZLG7289_CS = 1;
138 1 }
139
140
141 /****************************************************************************
142 * 名称:ZLG7289_SendBuf
143 * 功能:向ZLG7289发送显示数据,8字节,不译码。
144 * 入口参数:buf 显示数据缓冲区指针
145 ****************************************************************************/
146 void ZLG7289_SendBuf(uchar *buf)
147 { uchar i;
148 1 for(i=0; i<8; i++)
149 1 { ZLG7289_SendData(Z_DISPADR1+i, *buf++);
150 2 }
151 1 }
152
153
154 /****************************************************************************
155 * 名称:ZLG7289_FillDat
156 * 功能:显示填充。显示不译码。
157 * 入口参数:dat 待填充的显示数据
158 ****************************************************************************/
159 void ZLG7289_SendFillDat(uchar dat)
160 { uchar i;
161 1 for(i=0; i<8; i++)
162 1 { ZLG7289_SendData(Z_DISPADRX+i, dat);
163 2 }
164 1 }
165
166
167
168
169
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 352 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
C51 COMPILER V7.01 ZLG7289 01/11/1999 14:12:37 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -