📄 sed1335.lst
字号:
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE SED1335
OBJECT MODULE PLACED IN SED1335.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE SED1335.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "include.h"
2 /****************************************************************************************
3 * 文件名:1335DRV.C
4 * 功能:图形液晶320*240驱动(型号为SMG240128A)。32K显示存,0000H-7FFFH地址。显示是横向字节,高位
5 * 在前。
6 * 说明:图形液晶采用SED1335为LCD控制芯片,内带负压产生器,单5伏供电,并行接口(使用f020驱动)。
7 * 硬件连接: D0--D7 <===> D0--D7
8 * /WR <===> /WR
9 * /RD <===> /RD
10 * /CE <===> A14
11 * C/D <===> A0
12 *
13 * /RST <===> VCC
14 ****************************************************************************************/
15
16
17 /***********************************************************************
18 * 以下为LCM的驱动层,主要负责发送SED1335的各种命令,提供设置显示地址等功能,
19 * 在发送命令前会检测其状态字。
20 * 带参数命令模式:先参数,后命令;操作模式:先命令,后数据
21 ***********************************************************************/
22
23 unsigned char code DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08,0x04, 0x02, 0x01};
24 unsigned char code SYS_INIT_DAT[8] = {0x30, 0x87, 0x07, 0x27, 0x42,0xef, 0x28, 0x00};//{0x30, 0x87, 0x07,
-0x27, 0x2F,0xef, 0x28, 0x00};
25 unsigned char code SCROLL_DAT[10] = {0x00, 0x00, 0xf0, 0x80, 0x25, 0xF0, 0x80, 0x50,0x00,0x60};//{0x00, 0x
-00, 0xF0, 0xb0, 0x04, 0xf0, 0x80, 0x50,0x00,0x60};
26 int Disp_Base_Addr=0;
27
28
29 /***********************************************************************
30 * 名称:SED1335_Init()
31 * 功能:LCM初始化,将LCM初始化为纯图形模式,显示起始地址为0x0000,。
32 * 入口参数:无
33 * 出口参数:无
34 * 说明:函数会设置LCM数据总线为输出方式
35 ***********************************************************************/
36 void SED1335_Init(void)
37 {
38 1 unsigned char i;
39 1 LCD_WriteCommand(LCD_SYS_SET); //
40 1 for(i=0 ; i < 8 ; i++)
41 1 {LCD_WriteData(SYS_INIT_DAT[i]);}
42 1
43 1 LCD_WriteCommand(LCD_SCR_OLL); //
44 1 for(i=0 ; i < 10 ; i++)
45 1 {LCD_WriteData(SCROLL_DAT[i]);}
46 1
47 1 LCD_WriteCommand(LCD_DOT_DIR); //
48 1 LCD_WriteData(0x00);
49 1 LCD_WriteCommand(LCD_DIS_OVR); //
50 1 LCD_WriteData(0x0C);
51 1 LCD_WriteCommand(LCD_DIS_ON); //
52 1 LCD_WriteData(0x04);
53 1 LCD_WriteCommand(LCD_CSR_WR); //
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 2
54 1 LCD_WriteData(0x00);
55 1 LCD_WriteData(0x00);
56 1 LCD_WriteCommand(LCD_CSR_DIR); //
57 1 }
58
59 /***********************************************************************
60 * 名称:LCD_FillAll()
61 * 功能:LCD填充。以图形方式进行填充,起始地址为0x0000。
62 * 入口参数:dat 要填充的数据
63 * 出口参数:无
64 ***********************************************************************/
65 void LCD_FillAll(unsigned char dat)
66 {
67 1 unsigned char i,j;
68 1 for(j = 0 ; j < 40 ; j++){ //列数: 320/8 = 40
69 2 SED1335_CsRw(j);
70 2 LCD_WriteCommand(LCD_CSR_DIR+3); //光标自动向下
71 2 LCD_WriteCommand(LCD_MEM_WR); //写入显示缓冲区
72 2 for(i = 0 ; i < 240 ; i++){
73 3 LCD_WriteData(dat);
74 3 }
75 2 }
76 1
77 1 }
78 /*****************************************************************************************
79 * 名称:LCD_PutHZ(unsigned int X,unsigned int Y,unsigned int p_code)
80 * 功能:在指定的位置上显示汉字
81 * 入口参数:
82 * 出口参数:
83 ******************************************************************************************/
84 void SED1335_SYS_Set()
85 {
86 1
87 1
88 1
89 1
90 1
91 1
92 1 }
93
94 /*************************************************************************
95 *名称:SED1335_Sleep()
96 *功能:使LCD工作在休眠模式或从休眠模式唤醒
97 *入口参数:bit flg_sleep:判断是要进入休眠模式(0)还是从休眠模式唤醒(1)
98 * unsigned char dat:LCD唤醒时要工作在什么模式
99 *出口参数:无
100 ***************************************************************************/
101 void SED1335_Sleep(char flg_sleep,unsigned char P1)
102 {
103 1 switch(flg_sleep&0x01)
104 1 {
105 2 case 0:
106 2 {
107 3 LCD_WriteCommand(LCD_SLEEP_IN);break;
108 3
109 3 }
110 2 case 1:
111 2 {
112 3 LCD_WriteCommand(LCD_SYS_SET);LCD_WriteData(P1); //只要求P1参数
113 3 break;
114 3 }
115 2 }
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 3
116 1 }
117 /******************************************************************************
118 * 名称:SED1335_OnOff()
119 * 功能:设置光标和显示区的亮暗(光标还有闪烁的功能,默认只有一显示区亮)
120 * 入口参数:bit OnOff :总控制(0--液晶不显示 1--CurOnOff才有效)
121 * unsigned char CurOnOff:0--光标不显示,1--光标显示但不闪烁,2 3--光标闪烁
122 * 出口参数:无
123 *******************************************************************************/
124 void SED1335_OnOff(char OnOff,unsigned char CurOnOff)
125 {
126 1 switch (OnOff&0x01)
127 1 {
128 2 case 0:
129 2 {
130 3 LCD_WriteCommand(LCD_DIS_OFF);
131 3 LCD_WriteData(0x00);
132 3 break;
133 3
134 3 }
135 2 case 1:
136 2 {
137 3 LCD_WriteCommand(LCD_DIS_ON);
138 3 LCD_WriteData(0x04&(CurOnOff&0x03));
139 3 break;
140 3
141 3 }
142 2 }
143 1
144 1 }
145 /*************************************************************************************
146 * 名称:SED1335_Scroll()
147 * 功能:设置显存与LCD的对应关系
148 * 入口参数:
149 * 出口参数:
150 **************************************************************************************/
151 void SED1335_Scroll(unsigned int SAD1,unsigned int SAD2,unsigned int SAD3,unsigned int SAD4,unsigned char
-SL1,unsigned char SL2)
152 {
153 1 LCD_WriteCommand(LCD_SCR_OLL);
154 1 LCD_WriteData(GET_LOW_BYTE(SAD1));
155 1 LCD_WriteData(GET_HIG_BYTE(SAD1)); //P2
156 1 LCD_WriteData(SL1);
157 1
158 1 LCD_WriteData(GET_LOW_BYTE(SAD2));
159 1 LCD_WriteData(GET_HIG_BYTE(SAD2)); //P5
160 1 LCD_WriteData(SL2);
161 1
162 1 LCD_WriteData(GET_LOW_BYTE(SAD3));
163 1 LCD_WriteData(GET_HIG_BYTE(SAD3)); //P8
164 1
165 1 LCD_WriteData(GET_LOW_BYTE(SAD4));
166 1 LCD_WriteData(GET_HIG_BYTE(SAD4)); //P10
167 1
168 1 }
169 /***************************************************************************************
170 * 名称:SED1335_CsrForm()
171 * 功能:设置光标显示方式和形状
172 * 入口参数:
173 * 出口参数:
174 ****************************************************************************************/
175 void SED1335_CsrForm(unsigned char CRX,unsigned char CRY,unsigned char Disp_Form)
176 {
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 4
177 1 LCD_WriteCommand(LCD_CSR_FOM);
178 1 LCD_WriteData(CRX&0x07);
179 1 LCD_WriteData((CRY&0x0f)|((Disp_Form&0x01)<<7));
180 1
181 1 }
182 /*****************************************************************************************
183 * 名称:SED1335_CspDir()
184 * 功能:设置光标自增方向
185 * 入口参数:
186 * 出口参数:
187 *****************************************************************************************/
188 void SED1335_CspDir(Cur_Direct dic)
189 {
190 1 LCD_WriteCommand(LCD_CSR_DIR + dic);
191 1
192 1 }
193 /****************************************************************************************
194 * 名称:SED1335_Oylay()
195 * 功能:甚至显示方式和显示合成开关
196 * 入口参数:
197 * 出口参数:
198 *****************************************************************************************/
199 void SED1335_Oylay(Txt_Graph SAD1,Txt_Graph SAD3,OVlay_Form form)
200 {
201 1 LCD_WriteCommand(LCD_DIS_OVR);
202 1 LCD_WriteData((SAD3<<3)|(SAD1<<2)|form);
203 1
204 1
205 1 }
206 /****************************************************************************************
207 * 名称:SED1335_CsRw()
208 * 功能:设置光标位置
209 * 入口参数:
210 * 出口参数:
211 *****************************************************************************************/
212 void SED1335_CsRw(unsigned int cur_addr)
213 {
214 1
215 1 LCD_WriteCommand(LCD_CSR_WR);
216 1 LCD_WriteData(GET_LOW_BYTE(cur_addr));
217 1 LCD_WriteData(GET_HIG_BYTE(cur_addr));
218 1
219 1
220 1 }
221 /*****************************************************************************************
222 * 名称:SED1335_CsRr()
223 * 功能:读取光标位置
224 * 入口参数:
225 * 出口参数:
226 ******************************************************************************************/
227 unsigned int SED1335_CsRr(void)
228 {
229 1 unsigned char APL,APH;
230 1 LCD_WriteCommand(LCD_CSR_RD);
231 1 LCD_ReadData(APL);
232 1 LCD_ReadData(APH);
233 1 return (unsigned int)((unsigned int)APL|(unsigned int)(APH<<8));
234 1
235 1 }
236 /*****************************************************************************************
237 * 名称:SED1335_WMrite()
238 * 功能:向显存写入数据
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 5
239 * 入口参数:
240 * 出口参数:
241 ******************************************************************************************/
242 void SED1335_WMrite(unsigned char *p,unsigned int LEN)
243 {
244 1 unsigned int i;
245 1 LCD_WriteCommand(LCD_MEM_WR);
246 1 for(i=0;i<LEN;i++)
247 1 LCD_WriteData(p[i]);
248 1
249 1
250 1 }
251 /******************************************************************************************
252 * 名称:SED1335_MRead(void)
253 * 功能:读取显存内容
254 * 入口参数:
255 * 出口参数:
256 ********************************************************************************************/
257 unsigned char *SED1335_MRead(unsigned int LEN)
258 {
259 1 unsigned int i;
260 1 unsigned char status;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -