📄 lcddrive.lst
字号:
C51 COMPILER V7.06 LCDDRIVE 12/21/2004 15:11:28 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCDDRIVE
OBJECT MODULE PLACED IN .\output\LCDDRIVE.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCDDRIVE.C OPTIMIZE(6,SPEED) BROWSE ORDER DEBUG OBJECTEXTEND PRINT(.\output
-\LCDDRIVE.lst) OBJECT(.\output\LCDDRIVE.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 "config.h"
30 sbit LCDLS = P1^0;
31 sbit LCDRS = P1^1;
32 sbit LCDDI = P3^5;
33 sbit LCDRW = P3^6;
34 sbit LCDE = P3^7;
35
36 uint8 code lcd_lattice16_8[]={0};
37 uint8 code lcd_lattice16_16[]={9};
38 uint8 code lcd_lattice8_8[]={0};
39 uint8 code mb[]={0};
40
41 bit DotNot;
42 uint8 xdata DeepOne;
43 uint8 xdata DeepTwo;
44 uint8 xdata DeepThree;
45 uint8 xdata MenuDeep;
46 bit RedrawLcd;
47 bit RedrawLcdFocus;
48 void lcddelay()
49 {
50 1 // _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
51 1 }
52 /******************************************************************************/
53 void change_bin_to_bcd(uint16 temp,uint8 dotplace)
54 {
C51 COMPILER V7.06 LCDDRIVE 12/21/2004 15:11:28 PAGE 2
55 1 /*
56 1 int8 i;
57 1 for(i=5;i>0;i--)
58 1 {
59 1 image[i-1] = temp%10;
60 1 temp/=10;
61 1 }
62 1 for(i=5;i>dotplace;i--)
63 1 {
64 1 image[i]=image[i-1];
65 1 }
66 1 if(dotplace<7)image[dotplace]=10;
67 1 if(dotplace>4) image[5]=0xff;
68 1 else image[6]=0xff;
69 1 */
70 1 }
*** WARNING C280 IN LINE 53 OF LCDDRIVE.C: 'temp': unreferenced local variable
*** WARNING C280 IN LINE 53 OF LCDDRIVE.C: 'dotplace': unreferenced local variable
71 /******************************************************************************/
72 void outsi(uint8 parameter)
73 {
74 1 LCDRS = 1;lcddelay();
75 1 // LCDLS = 0;
76 1 LCDDI = 0;lcddelay();
77 1 LCDRW = 0;lcddelay();
78 1 LCDE = 1;lcddelay();
79 1 P2 = parameter;lcddelay();
80 1 LCDE = 0;lcddelay();
81 1 LCDRW = 1;lcddelay();
82 1 LCDRS = 0;lcddelay();
83 1 // LCDLS = 1;
84 1 }
85 /******************************************************************************/
86 void outsd(uint8 parameter)
87 {
88 1 LCDRS = 1;lcddelay();
89 1 // LCDLS = 0;
90 1 LCDDI = 1;lcddelay();
91 1 LCDRW = 0;lcddelay();
92 1 LCDE = 1;lcddelay();
93 1 P2 = parameter;lcddelay();
94 1 LCDE = 0;lcddelay();
95 1 LCDRW = 1;lcddelay();
96 1 LCDRS = 0;lcddelay();
97 1 // LCDLS = 1;
98 1 }
99 /******************************************************************************/
100 void outmi(uint8 parameter)
101 {
102 1 LCDLS = 1;lcddelay();
103 1 // LCDRS = 0;
104 1 LCDDI = 0;lcddelay();
105 1 LCDRW = 0;lcddelay();
106 1 LCDE = 1;lcddelay();
107 1 P2 = parameter;lcddelay();
108 1 LCDE = 0;lcddelay();
109 1 LCDRW = 1;lcddelay();
110 1 LCDLS = 0;lcddelay();
111 1 // LCDRS = 1;
112 1 }
113 /******************************************************************************/
114 void outmd(uint8 parameter)
C51 COMPILER V7.06 LCDDRIVE 12/21/2004 15:11:28 PAGE 3
115 {
116 1 LCDLS = 1;lcddelay();
117 1 // LCDRS = 0;
118 1 LCDDI = 1;lcddelay();
119 1 LCDRW = 0;lcddelay();
120 1 LCDE = 1;lcddelay();
121 1 P2 = parameter;lcddelay();
122 1 LCDE = 0;lcddelay();
123 1 LCDRW = 1;lcddelay();
124 1 LCDLS = 0;lcddelay();
125 1 // LCDRS = 1;
126 1 }
127 /******************************************************************************/
128 void lcdinit() /*left and right show open*/
129 {
130 1 outmi(0x3f);
131 1 outsi(0x3f); /*display on*/
132 1 }
133 /******************************************************************************/
134 /******************************************************************************/
135 void displayword(uint8 lcdrow,uint8 lcdline,uint8 wordnumber)
136 { /*display 16x16 word*/
137 1 uint8 data i;
138 1 uint16 data j;
139 1 lcdinit();// /*left and right show open*/
140 1 if(lcdline<64)
141 1 {
142 2 outmi(0xc0);
143 2 outmi(0xb8|lcdrow); /*设置页地址*/
144 2 outmi(0x40|lcdline); /*设置列地址*/
145 2 j=wordnumber*32;
146 2 for(i=0;i<32;i++)
147 2 {
148 3 if(DotNot)outmd(~lcd_lattice16_16 [i+j]);
149 3 else outmd( lcd_lattice16_16 [i+j]);
150 3 if(i==15)
151 3 {
152 4 outmi(0xb8|(lcdrow+1)); /*设置页地址*/
153 4 outmi(0x40|lcdline); /*设置列地址*/
154 4 }
155 3 }
156 2 }
157 1 else if(lcdline<128)
158 1 {
159 2 outsi(0xc0); /*设置显示起始行*/
160 2 outsi(0xb8|lcdrow); /*设置页地址*/
161 2 outsi(0x40|(lcdline-64)); /*设置列地址*/
162 2 j=wordnumber*32;
163 2 for(i=0;i<32;i++)
164 2 {
165 3 if(DotNot)outsd(~lcd_lattice16_16[i+j]);
166 3 else outsd( lcd_lattice16_16[i+j]);
167 3 if(i==15)
168 3 {
169 4 outsi(0xb8|(lcdrow+1)); /*设置页地址*/
170 4 outsi(0x40|(lcdline-64)); /*设置列地址*/
171 4 }
172 3 }
173 2 }
174 1 else
175 1 {}
176 1 }
C51 COMPILER V7.06 LCDDRIVE 12/21/2004 15:11:28 PAGE 4
177 /******************************************************************************/
178 /******************************************************************************/
179 void displaydata(uint8 lcdrow,uint8 lcdline,uint8 datanumber) /* display 16x8 data */
180 {
181 1 uint8 data i;
182 1 uint16 data j;
183 1 if(lcdline<64)
184 1 {
185 2 // outmi(0xc0);
186 2 outmi(0xb8|lcdrow); /*设置页地址*/
187 2 outmi(0x40|lcdline); /*设置列地址*/
188 2 j=datanumber*16;
189 2 for(i=0;i<16;i++)
190 2 {
191 3 if(DotNot==1)
192 3 {
193 4 outmd(~lcd_lattice16_8[i+j]);
194 4 }
195 3 else
196 3 {
197 4 outmd(lcd_lattice16_8[i+j]);
198 4 }
199 3 if(i==7)
200 3 {
201 4 outmi(0xb8|(lcdrow+1)); /*设置页地址*/
202 4 outmi(0x40|lcdline); /*设置列地址*/
203 4 }
204 3 }
205 2 }
206 1 else if(lcdline<121)
207 1 {
208 2 // outsi(0xc0); /*设置显示起始行*/
209 2 outsi(0xb8|lcdrow); /*设置页地址*/
210 2 if(lcdline<121)
211 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -