📄 3510.lst
字号:
C51 COMPILER V6.12 3510 05/14/2006 11:24:26 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 3510
OBJECT MODULE PLACED IN .\3510.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\3510.c DEBUG OBJECTEXTEND
stmt level source
1 /*================================================
2
3 3510i符液晶屏驱动演示程序
4 ==================================================
5 RST BIT P1.0 ;复位
6 CS BIT P1.1 ;片选
7 SDATA BIT P1.2 ;串行数据
8 SCLK BIT P1.3 ;串行时钟
9
10 [注]:AT89C51的晶振频率为12MHz
11 ============================================================================*/
12 // 产生汇编文件
13 #include <reg51.h>
14 #include <math.h>
15
16
17
18 //========= 变量类型标识的宏定义,大家都喜欢这么做 ==============
19 #define Uchar unsigned char
20 #define Uint unsigned int
21 #define CMD 0
22 #define DATA 1
23
24
25 sbit RST =P2^3;
26 sbit CS =P2^2;
27 sbit SDATA=P2^1;
28 sbit SCLK =P2^0;
29
30
31 sbit ACC0=ACC^0;
32 sbit ACC1=ACC^1;
33 sbit ACC2=ACC^2;
34 sbit ACC3=ACC^3;
35 sbit ACC4=ACC^4;
36 sbit ACC5=ACC^5;
37 sbit ACC6=ACC^6;
38 sbit ACC7=ACC^7;
39
40
41 Uchar code asci[];
42 Uchar code bmp[];
43
44 void LCD_Clear(bit color);
45 void test(void);
46 void test2(void);
47 void Delay400Ms(void);
48 void COLORSET(bit color);
49 void SENDLCM(Uchar Sdata, Uchar cd);
50 void Delay5Ms(void);
51 void DATAOVER(void);
52 void LCD_Initialize(void);
53 void test3(unsigned long kk);
54 void LCD_Drawbmp(bit color);
55 void LCD_Drawasc(Uchar x, Uchar y,Uchar n,Uchar color,Uchar pen);
C51 COMPILER V6.12 3510 05/14/2006 11:24:26 PAGE 2
56 void LCD_Drawhz(Uchar x, Uchar y,Uchar n,Uchar color,Uchar pen);
57 void LCD_DrawLine(Uchar x1, Uchar y1, Uchar x2, Uchar y2,Uchar color);
58 void LCD_DrawRectangle(Uchar x1, Uchar y1, Uchar x2, Uchar y2,Uchar color);
59 void LCD_Drawtime(Uchar x, Uchar y,Uchar n,Uchar color,Uchar pen);
60 void LCD_Drawdd(Uchar x, Uchar y,Uchar n,Uchar pen);
61 void LCD_DrawPoint(Uchar x, Uchar y,Uchar color);
62
63
64
65 /*
66 void LCD_Drawbmp(bit color)
67 {
68 Uchar x,y,*pic;
69 pic =bmp;
70
71 SENDLCM(0x2C,CMD );//memory write
72 if (color==1)
73 {
74 }
75 else
76 {
77 for(y = 0; y < 67; y ++)
78 for(x = 0; x < 98; x ++)
79 {
80 SENDLCM(*pic,DATA );
81 pic++;
82 }
83 }
84 DATAOVER();
85 }
86 */
87
88 /*
89
90 //画点
91 void LCD_DrawPoint(Uchar x, Uchar y,Uchar color)
92 {
93 SENDLCM(0x2a,CMD );//column address set
94 SENDLCM(x,DATA );
95 SENDLCM(x,DATA );
96 DATAOVER();
97
98 SENDLCM(0x2B,CMD );//page address set
99 SENDLCM(y,DATA );
100 SENDLCM(y,DATA );
101 DATAOVER();
102
103 SENDLCM(0x2C,CMD ); //memory write
104 SENDLCM(color,DATA );
105 DATAOVER();
106 }
107
108
109 //画线
110 void LCD_DrawLine(Uchar x1, Uchar y1, Uchar x2, Uchar y2,Uchar color)
111 {
112 Uint x, y, t;
113 if((x1 == x2) && (y1 == y2))
114 LCD_DrawPoint(x1, y1,color);
115 else if(abs(y2 - y1) > abs(x2 - x1))
116 {
117 if(y1 > y2)
C51 COMPILER V6.12 3510 05/14/2006 11:24:26 PAGE 3
118 {
119 t = y1;
120 y1 = y2;
121 y2 = t;
122 t = x1;
123 x1 = x2;
124 x2 = t;
125 }
126 for(y = y1; y <= y2; y ++)
127 {
128 x = (y - y1) * (x2 - x1) / (y2 - y1) + x1;
129 LCD_DrawPoint(x, y,color);
130 }
131 }
132 else
133 {
134 if(x1 > x2)
135 {
136 t = y1;
137 y1 = y2;
138 y2 = t;
139 t = x1;
140 x1 = x2;
141 x2 = t;
142 }
143 for(x = x1; x <= x2; x ++)
144 {
145 y =(x - x1) * (y2 - y1) / (x2 - x1) + y1;
146 LCD_DrawPoint(x, y,color);
147 }
148 }
149 }
150
151 //画距形
152 void LCD_DrawRectangle(Uchar x1, Uchar y1, Uchar x2, Uchar y2,Uchar color)
153 {
154 LCD_DrawLine(x1, y1, x2, y1,color);
155 LCD_DrawLine(x2, y1, x2, y2,color);
156 LCD_DrawLine(x2, y2, x1, y2,color);
157 LCD_DrawLine(x1, y2, x1, y1,color);
158 }
159 */
160
161 //************************
162 //清屏:color=1为4096色模式清屏
163 // :color=0为256色模式清屏
164 //************************
165 void LCD_Clear(bit color)
166 {
167 1 Uchar x, y;
168 1
169 1 SENDLCM(0x2a,CMD );//column address set
170 1 SENDLCM(0,DATA );
171 1 SENDLCM(97,DATA );
172 1 DATAOVER();
173 1
174 1
175 1 SENDLCM(0x2B,CMD );//page address set
176 1 SENDLCM(0,DATA );
177 1 SENDLCM(66,DATA );
178 1 DATAOVER();
179 1
C51 COMPILER V6.12 3510 05/14/2006 11:24:26 PAGE 4
180 1
181 1 SENDLCM(0x2C,CMD );//memory write
182 1 if (color==1)
183 1 {
184 2 for(y = 0; y < 67; y ++)
185 2 for(x = 0; x < 147; x ++)
186 2 SENDLCM(0,DATA );
187 2 }
188 1 else
189 1 {
190 2 for(y = 0; y < 67; y ++)
191 2 for(x = 0; x < 98; x ++)
192 2 SENDLCM(0,DATA );
193 2 }
194 1 DATAOVER();
195 1
196 1 }
197
198 //************************
199 //颜色模式设置:color=1为4096色模式
200 // :color=0为256色模式
201 //************************
202 void COLORSET(bit color)
203 {
204 1
205 1 if (color==1) {
206 2 SENDLCM(0x3a, CMD); //interface pixel format
207 2 SENDLCM(0x03, DATA); //0x03 为4096色,0x02为256色
208 2 DATAOVER();
209 2 }
210 1 else
211 1 {
212 2 SENDLCM(0x3a, CMD); //interface pixel format
213 2 SENDLCM(0x02, DATA); //0x03 为4096色,0x02为256色
214 2 DATAOVER();
215 2
216 2
217 2 SENDLCM(0x2d, CMD); //colour set
218 2 //red
219 2 SENDLCM(0x00, DATA);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -