📄 lcd_function.lst
字号:
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD_FUNCTION
OBJECT MODULE PLACED IN E:\MANUAI~1\WAVE\MY_LCD~1\LCD_FUNCTION.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\MANUAI~1\WAVE\MY_LCD~1\LCD_FUNCTION.C DB SB OE
line level source
1
2 //以下4个底层函数在CMLCD_DriverIO.c中定义
3 void LCD_Reset(void);
4 void LCD_COM_W(unsigned char com_d);
5 void LCD_Data_W(unsigned char dd);
6 unsigned char LCD_Data_R(void);
7
8 unsigned char LCD_show_buf[32]; //用于LCD的显示缓存的空间
9 unsigned char LCD_show_Addr=0x00; //实际上是对于LCD当前操作的图层的参数
10 //===================================================//
11 //程序:void LCD_Initial(void)
12 //描述:CM320X240LCD初始化函数
13 //参数:null
14 //返回:
15 //Note: Edit by Mz xinqiang zhang
16 //Date: 2006 07 29 beijing
17 //===================================================//
18 void LCD_Initial(void)
19 {
20 1 LCD_Reset(); //复位LCD,如果用户将LCD的复位用端口控制的话
21 1 LCD_COM_W(0x40); //设置LCD系统参数,后面跟着P1~P8的参数
22 1 LCD_Data_W(0x30);
23 1 LCD_Data_W(0x87);
24 1 LCD_Data_W(0x07);
25 1 LCD_Data_W(0x27); //每一行的有效显示字节数0x27+1=40,即320个点
26 1 LCD_Data_W(0x32);//0x42); 每一行所占用的存储器数量,下一行起始的计算就利用它
27 1 LCD_Data_W(0xF0);
28 1 LCD_Data_W(0x32);
29 1 LCD_Data_W(0x00);
30 1 LCD_COM_W(0x44); //设置LCD的SCROLL参数,后面跟着P1~P10的参数
31 1 LCD_Data_W(0x00); //设置第一图层的起始地址,低
32 1 LCD_Data_W(0x00); //设置第一图层的起始地址,高
33 1 LCD_Data_W(0xF0); //设置第一图层的SL1(即Y轴点数)
34 1 LCD_Data_W(0x00); //设置第二图层的起始地址,低
35 1 LCD_Data_W(0x40); //设置第二图层的起始地址,高
36 1 LCD_Data_W(0xF0); //设置第二图层的SL2
37 1 LCD_Data_W(0x00); //设置第三图层起始地址
38 1 LCD_Data_W(0x80);
39 1 LCD_Data_W(0x00); //设置第四图层的起始地址
40 1 LCD_Data_W(0x00);
41 1
42 1 LCD_COM_W(0x5A); //设置Scroll的点数
43 1 LCD_Data_W(0x00); //1个点 (垂直方向的)
44 1 LCD_COM_W(0x5B); //设置图层关系
45 1 LCD_Data_W(0x0d); //两个图层、异或的关系、graphic模式
46 1 // LCD_COM_W(0x53); //设置光标模式
47 1 // LCD_Data_W(0x0F);
48 1 // LCD_Data_W(0x0F);
49 1 LCD_COM_W(0x59); //Display ON
50 1 LCD_Data_W(0x14); //1、2区开显示
51 1 LCD_COM_W(0x4c);
52 1 }
53 //===================================================//
54 //程序:void LCD_Setlayer(unsigned char layer)
55 //描述:CM320X240LCD活动图层选择
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 2
56 //参数:layer=选择图层(1~4)
57 //返回:
58 //Note: Edit by Mz xinqiang zhang
59 //Date: 2006 08 01 beijing
60 //===================================================//
61 void LCD_Setlayer(unsigned char layer)
62 {
63 1 switch(layer)
64 1 {
65 2 case 1: LCD_show_Addr = 0x00;break;
66 2 case 2: LCD_show_Addr = 0x40;break;
67 2 default: LCD_show_Addr = 0x00;break;
68 2 }
69 1 }
70 //===================================================//
71 //程序:void LCD_Clear(bit is_Clear,unsigned char layer)
72 //描述:CM320X240LCD显示清屏函数
73 //参数:is_Clear=选择填充的色(0/1) layer=选择图层(1~4)
74 //返回:
75 //Note: Edit by Mz xinqiang zhang
76 //Date: 2006 07 29 beijing
77 //===================================================//
78 void LCD_Clear(bit is_Clear)
79 {
80 1 unsigned char show_Data,i,j,Addr_H=0;
81 1 if(is_Clear)
82 1 show_Data = 0xFF;
83 1 else
84 1 show_Data = 0x00;
85 1
86 1 Addr_H = Addr_H+LCD_show_Addr;
87 1
88 1 LCD_COM_W(0x46); //设置当前地址
89 1 LCD_Data_W(0x00);
90 1 LCD_Data_W(Addr_H);
91 1 LCD_COM_W(0x42);
92 1
93 1 for(i=0;i<240;i++)
94 1 {
95 2 for(j=0;j<0x32;j++)
96 2 {
97 3 LCD_Data_W(show_Data);
98 3 }
99 2 }
100 1 }
101 //===================================================//
102 //程序:void LCD_ONOFF(bit is_ON,unsigned char layer)
103 //描述:CM320X240LCD显示清屏函数
104 //参数:is_ON=选择关闭/打开(0/1) layer=选择图层数(1~3)
105 //返回:
106 //注意:只有在打开LCD的命令当中layer参数才有效
107 //Note: Edit by Mz xinqiang zhang
108 //Date: 2006 07 29 beijing
109 //===================================================//
110 void LCD_ONOFF(bit is_ON,unsigned char layer)
111 {
112 1
113 1 switch(layer)
114 1 {
115 2 case 1:layer = 0x04;
116 2 case 2:layer = 0x14;
117 2 default: break;
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 3
118 2 }
119 1 if(is_ON)
120 1 {
121 2 LCD_COM_W(0x59);
122 2 }
123 1 else
124 1 {
125 2 LCD_COM_W(0x58);
126 2 }
127 1 LCD_Data_W(layer);
128 1 }
129 //===================================================//
130 //程序:void LCD_PutPixel(unsigned int Index_x,unsigned char Index_y)
131 //描述:CM320X240LCD画点子程序
132 //参数:Index_x X轴坐标(0~319) Index_y y轴坐标(0~239)
133 //返回:
134 //Note: Edit by Mz xinqiang zhang
135 //Date: 2006 07 29 beijing
136 //===================================================//
137 void LCD_Back_dot(unsigned int Addr,unsigned char b,bit mode);
138 void LCD_PutPixel(unsigned int Index_x,unsigned char Index_y,bit mode)
139 {
140 1 unsigned int Addr_Byte;
141 1 Addr_Byte = (unsigned int)Index_y*0x32;
142 1 Addr_Byte = Addr_Byte+(Index_x>>3)+(unsigned int)(LCD_show_Addr<<8);
143 1 Index_x = Index_x&0x07;
144 1 switch(Index_x)
145 1 {
146 2 case 0:Index_y = 0x80;break;
147 2 case 1:Index_y = 0x40;break;
148 2 case 2:Index_y = 0x20;break;
149 2 case 3:Index_y = 0x10;break;
150 2 case 4:Index_y = 0x08;break;
151 2 case 5:Index_y = 0x04;break;
152 2 case 6:Index_y = 0x02;break;
153 2 case 7:Index_y = 0x01;break;
154 2 }
155 1 LCD_Back_dot(Addr_Byte,Index_y,mode);
156 1 }
157 //***************************************************************************//
158 //程序:void LCD501_Line(unsigned int x,unsigned int y,unsigned int e_x,
159 // unsigned int e_y)
160 //描述:画直线程序
161 //参数:x 要画线的x起点坐标 y 要画的线的y起点坐标
162 // e_x 要画线的x 终点坐标 e_y 要画的线的y起点坐标
163 //返回:无
164 //声明:小丑 200505121 sunnorth Mz Design
165 //注意:
166 //***************************************************************************//
167 void LCD_Line(unsigned int x,unsigned int y,unsigned int e_x,unsigned int e_y,bit mode)
168 {
169 1 int Offset_x,Offset_y,Offset_k = 0;
170 1 int Err_d = 1;
171 1 if(y>e_y)
172 1 {
173 2 Offset_x = x;
174 2 x = e_x;
175 2 e_x = Offset_x;
176 2 Offset_x = y;
177 2 y = e_y;
178 2 e_y = Offset_x;
179 2 }
C51 COMPILER V7.50 LCD_FUNCTION 07/31/2006 09:48:34 PAGE 4
180 1 Offset_x = e_x-x;
181 1 Offset_y = e_y-y;
182 1 LCD_PutPixel(x,y,mode);
183 1 if(Offset_x<=0)
184 1 {
185 2 Offset_x = x-e_x;
186 2 Err_d = -1;
187 2 }
188 1 if(Offset_x>Offset_y)
189 1 {
190 2 while(x!=e_x)
191 2 {
192 3 if(Offset_k>0)
193 3 {
194 4 y+=1;
195 4 Offset_k += (Offset_y-Offset_x);
196 4 }
197 3 else Offset_k += Offset_y;
198 3 x+=Err_d;
199 3 LCD_PutPixel(x,y,mode);
200 3 }
201 2 }
202 1 else
203 1 {
204 2 while(y!=e_y)
205 2 {
206 3 if(Offset_k>0)
207 3 {
208 4 x+=Err_d;
209 4 Offset_k += (Offset_x-Offset_y);
210 4 }
211 3 else Offset_k += Offset_x;
212 3 y+=1;
213 3 LCD_PutPixel(x,y,mode);
214 3 }
215 2 }
216 1 }
217 //***************************************************************************//
218 //程序:void LCD501_Rectangle(unsigned left, unsigned top,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -