📄 lcddrive12864.lst
字号:
C51 COMPILER V7.06 LCDDRIVE12864 01/22/2007 09:50:02 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCDDRIVE12864
OBJECT MODULE PLACED IN .\output\LcdDrive12864.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LcdDrive12864.C OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND OBJECT(.\output
-\LcdDrive12864.obj)
stmt level source
1 /*********************************************************************************************************
2 **--------------文件信息--------------------------------------------------------------------------------
3 **文 件 名: LCDDRIVE.C
4 **创 建 人: 刘宝贵
5 **最后修改日期: 2004年12月8日
6 **描 述: LCD驱动
7 **
8 **--------------历史版本信息----------------------------------------------------------------------------
9 ** 创建人: 刘宝贵
10 ** 版 本: V1.00
11 ** 日 期: 2004年12月8日
12 ** 描 述: 原始版本
13 **
14 **------------------------------------------------------------------------------------------------------
15 ** 修改人:
16 ** 版 本:
17 ** 日 期:
18 ** 描 述:
19 **
20 **------------------------------------------------------------------------------------------------------
21 **--------------当前版本修订------------------------------------------------------------------------------
22 ** 修改人: 刘宝贵
23 ** 日 期: 2004年4月20日
24 ** 描 述:
25 **
26 **------------------------------------------------------------------------------------------------------
27 ********************************************************************************************************/
28
29 #include"includes.h"
30
31 sbit LCDCS = P1^3;
32 sbit LCDCS2 = P1^2;
33 sbit LCDDI = P1^0;
34 sbit LCDE = P1^1;
35 //sbit LCDRW = P3^6;
36
37 extern unsigned char code lcd_lattice16_4[];
38 extern unsigned char code lcd_lattice16_8[];
39 extern unsigned char code lcd_lattice16_16[];
40 extern unsigned char code lcd_lattice8_8[];
41 extern unsigned char code mb[][16];
42 void lcddelay()
43 {
44 1 }
45 /*********************************************************************************************************
46 ** 函数名称: outsi
47 ** 功能描述: 12864底层函数
48 ** 输 入: 无
49 ** 输 出: 无
50 ** 全局变量:
51 ** 调用模块:
52 **
53 ** 作 者: 刘宝贵
54 ** 日 期: 2005年1月26日
C51 COMPILER V7.06 LCDDRIVE12864 01/22/2007 09:50:02 PAGE 2
55 **-------------------------------------------------------------------------------------------------------
56 ** 修改人:
57 ** 日 期:
58 **-------------------------------------------------------------------------------------------------------
59 *********************************************************************************************************/
60 void outsi(uint8 parameter)
61 {
62 1 LCDCS2 = 0;//lcddelay();
63 1 LCDDI = 0;//lcddelay();
64 1 LCDE = 1;//lcddelay();
65 1 WriteOutXRAM(CPLD_PORT_B,parameter);
66 1 LCDE = 0;//lcddelay();
67 1 LCDCS2 = 1;//lcddelay();
68 1 }
69 /*********************************************************************************************************
70 ** 函数名称: outsd
71 ** 功能描述: 12864底层函数
72 ** 输 入: 无
73 ** 输 出: 无
74 ** 全局变量:
75 ** 调用模块:
76 **
77 ** 作 者: 刘宝贵
78 ** 日 期: 2005年1月26日
79 **-------------------------------------------------------------------------------------------------------
80 ** 修改人:
81 ** 日 期:
82 **-------------------------------------------------------------------------------------------------------
83 *********************************************************************************************************/
84 void outsd(uint8 parameter)
85 {
86 1 LCDCS2 = 0;//lcddelay();
87 1 LCDDI = 1;//lcddelay();
88 1 LCDE = 1;//lcddelay();
89 1 WriteOutXRAM(CPLD_PORT_B,parameter);
90 1 LCDE = 0;//lcddelay();
91 1 LCDCS2 = 1;//lcddelay();
92 1 }
93 /*********************************************************************************************************
94 ** 函数名称: outmi
95 ** 功能描述: 12864底层函数
96 ** 输 入: 无
97 ** 输 出: 无
98 ** 全局变量:
99 ** 调用模块:
100 **
101 ** 作 者: 刘宝贵
102 ** 日 期: 2005年1月26日
103 **-------------------------------------------------------------------------------------------------------
104 ** 修改人:
105 ** 日 期:
106 **-------------------------------------------------------------------------------------------------------
107 *********************************************************************************************************/
108 void outmi(uint8 parameter)
109 {
110 1 LCDCS = 0;//lcddelay();
111 1 LCDDI = 0;//lcddelay();
112 1 LCDE = 1;//lcddelay();
113 1 WriteOutXRAM(CPLD_PORT_B,parameter);
114 1 LCDE = 0;//lcddelay();
115 1 LCDCS = 1;//lcddelay();
116 1 }
C51 COMPILER V7.06 LCDDRIVE12864 01/22/2007 09:50:02 PAGE 3
117 /*********************************************************************************************************
118 ** 函数名称: outmd
119 ** 功能描述: 12864底层函数
120 ** 输 入: 无
121 ** 输 出: 无
122 ** 全局变量:
123 ** 调用模块:
124 **
125 ** 作 者: 刘宝贵
126 ** 日 期: 2005年1月26日
127 **-------------------------------------------------------------------------------------------------------
128 ** 修改人:
129 ** 日 期:
130 **-------------------------------------------------------------------------------------------------------
131 *********************************************************************************************************/
132 void outmd(uint8 parameter)
133 {
134 1 LCDCS = 0;//lcddelay();
135 1 LCDDI = 1;//lcddelay();
136 1 LCDE = 1;//lcddelay();
137 1 WriteOutXRAM(CPLD_PORT_B,parameter);
138 1 LCDE = 0;//lcddelay();
139 1 LCDCS = 1;//lcddelay();
140 1 }
141 /*********************************************************************************************************
142 ** 函数名称: outsi
143 ** 功能描述: 12864底层函数
144 ** 输 入: 无
145 ** 输 出: 无
146 ** 全局变量:
147 ** 调用模块:
148 **
149 ** 作 者: 刘宝贵
150 ** 日 期: 2005年1月26日
151 **-------------------------------------------------------------------------------------------------------
152 ** 修改人:
153 ** 日 期:
154 **-------------------------------------------------------------------------------------------------------
155 *********************************************************************************************************/
156 void lcdinit() /*left and right show open*/
157 {
158 1 outmi(0x3f);
159 1 outsi(0x3f); /*display on*/
160 1 }
161 /*********************************************************************************************************
162 ** 函数名称: Display16X16
163 ** 功能描述: 在指定的行列绘16X16点阵
164 ** 输 入:
165 ** 输 出:
166 ** 全局变量:
167 ** 调用模块:
168 **
169 ** 作 者: 刘宝贵
170 ** 日 期: 2005年1月26日
171 **-------------------------------------------------------------------------------------------------------
172 ** 修改人:
173 ** 日 期:
174 **-------------------------------------------------------------------------------------------------------
175 *********************************************************************************************************/
176 /*void Display16X16(uint8 lcdrow,uint8 lcdline,uint8 wordnumber)
177 { //display 16x16 word//
178 uint8 i;
C51 COMPILER V7.06 LCDDRIVE12864 01/22/2007 09:50:02 PAGE 4
179 uint16 j;
180 lcdinit();// //left and right show open//
181 if(lcdline<64)
182 {
183 outmi(0xc0);
184 outmi(0xb8|lcdrow); //设置页地址//
185 outmi(0x40|lcdline); //设置列地址//
186 j=wordnumber*32;
187 for(i=0;i<32;i++)
188 {
189 if(DotNot)outmd(~lcd_lattice16_16 [i+j]);
190 else outmd( lcd_lattice16_16 [i+j]);
191 if(i==15)
192 {
193 outmi(0xb8|(lcdrow+1)); //设置页地址//
194 outmi(0x40|lcdline); //设置列地址//
195 }
196 }
197 }
198 else if(lcdline<128)
199 {
200 outsi(0xc0); //设置显示起始行//
201 outsi(0xb8|lcdrow); //设置页地址//
202 outsi(0x40|(lcdline-64)); //设置列地址//
203 j=wordnumber*32;
204 for(i=0;i<32;i++)
205 {
206 if(DotNot)outsd(~lcd_lattice16_16[i+j]);
207 else outsd( lcd_lattice16_16[i+j]);
208 if(i==15)
209 {
210 outsi(0xb8|(lcdrow+1)); //设置页地址//
211 outsi(0x40|(lcdline-64)); //设置列地址//
212 }
213 }
214 }
215 else
216 {}
217 }
218 /*********************************************************************************************************
219 ** 函数名称: Display16X8
220 ** 功能描述: 在指定的行列绘16X8点阵
221 ** 输 入:
222 ** 输 出:
223 ** 全局变量:
224 ** 调用模块:
225 **
226 ** 作 者: 刘宝贵
227 ** 日 期: 2005年1月26日
228 **-------------------------------------------------------------------------------------------------------
229 ** 修改人:
230 ** 日 期:
231 **-------------------------------------------------------------------------------------------------------
232 *********************************************************************************************************/
233 void Display16X8(uint8 lcdrow,uint8 lcdline,uint8 datanumber,uint8 DotNot) // display 16x8 data
234 {
235 1 uint8 i;
236 1 uint16 j;
237 1 datanumber-=0x20;
238 1 if(lcdline<64)
239 1 {
240 2 outmi(0xc0);
C51 COMPILER V7.06 LCDDRIVE12864 01/22/2007 09:50:02 PAGE 5
241 2 outmi(0xb8|lcdrow); //设置页地址
242 2 outmi(0x40|lcdline); //设置列地址
243 2 j=datanumber*16;
244 2 for(i=0;i<16;i++)
245 2 {
246 3 if(DotNot==1)
247 3 {
248 4 outmd(~lcd_lattice16_8[i+j]);
249 4 }
250 3 else
251 3 {
252 4 outmd(lcd_lattice16_8[i+j]);
253 4 }
254 3 if(i==7)
255 3 {
256 4 outmi(0xb8|(lcdrow+1)); //设置页地址
257 4 outmi(0x40|lcdline); //设置列地址
258 4 }
259 3 }
260 2 }
261 1 else if(lcdline<128)
262 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -