📄 sy.lst
字号:
C51 COMPILER V7.50 SY 08/26/2007 12:58:15 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SY
OBJECT MODULE PLACED IN sy.OBJ
COMPILER INVOKED BY: D:\keil uvision3\C51\BIN\C51.EXE sy.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <stdio.h>
3 #include "absacc.h"
4 #include "intrins.h"
5 sbit RS = P2^0;
6 sbit RW = P2^1;
7 sbit E = P2^2;
8 sbit PSB = P2^3;
9 sbit RST = P2^4;
10
11 #define DATA P1
12
13 /*void delay(const unsigned char i)
14 {
15 unsigned char j;
16
17 j = i;
18 while(--j);
19 j = i;
20 while(--j);
21 } */
22
23 /*****************************************
24 名称:void delay_10us( unsigned char x )
25 功能:延时10us
26 实参输入:unsigned char x
27 返回值:void
28 *****************************************/
29 void delay_10us( unsigned char x )
30 {
31 1 while( x-- );
32 1 }
33
34 /*****************************************
35 名称:void delay_ms( unsigned int cnt )
36 功能:延时1ms
37 实参输入:unsigned int cnt
38 返回值:void
39 *****************************************/
40 void delay_ms( unsigned int cnt )
41 {
42 1 unsigned char i;
43 1 do{
44 2 i = 4;
45 2 do{
46 3 delay_10us(39);
47 3 } while(--i);
48 2 } while( --cnt );
49 1 }
50
51
52 void smNop(void)
53 {
54 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
55 1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
C51 COMPILER V7.50 SY 08/26/2007 12:58:15 PAGE 2
56 1 }
57 const unsigned char code suc[] =
58 {
59 "测试成功"
60 };/*
61 ** Create : 2007 7 31
62 ** Author : oDon
63 ** email : yuanonline@hotmail.com
64 ** Description:**
65 ** This project is using for a library of solutions of CM12864
66 ** functions will implements to display ZH_CN ASCII IMAGE on
67 ** CM12864 LCD.etc..
68 */
69
70
71
72
73 //volatile uchar command; /*Command Word*/
74
75 /**************************************************
76 * Function Definations Below */
77
78 void check_busy(void);
79 void send_com(const unsigned char command);
80 void send_com_init(const unsigned char command_init);
81 void send_data(const unsigned char data_a);
82 void send_data(const unsigned char data_a);
83 void clear_LCD(void);
84 void initial_LCD(void);
85 void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
86 void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
87 /* Function Definations End *
88 **************************************************/
89
90 void main(void)
91 {
92 1 clear_LCD();
93 1 smNop();
94 1 initial_LCD();
95 1 smNop();
96 1 clear_LCD();
97 1 smNop();
98 1 Display_ch(suc, 2, 1, 6);
99 1 while(1);
100 1
101 1 }
102
103
104 /******************************************
105 功能:void check_busy( void )
106 功能:检查是否LCD忙碌的子程序
107 实参输入:void
108 返回值:void
109 ******************************************/
110 void check_busy(void)
111 {
112 1 P1 = 0xff;
113 1 RS = 0;
114 1 RW = 1;
115 1 while (1)
116 1 {
117 2 smNop();
C51 COMPILER V7.50 SY 08/26/2007 12:58:15 PAGE 3
118 2 E =1;
119 2 smNop();
120 2 if( P1 < 0x80 )
121 2 break;
122 2 smNop();
123 2 E =0;
124 2 }
125 1 E = 0;
126 1 }
127
128 /*****************************************
129 名称:void send_com( unsigned char command )
130 功能:写指令
131 实参输入:unsigned char command
132 返回值:void
133 *****************************************/
134 void send_com(const unsigned char command)
135 {
136 1 check_busy();
137 1 RS = 0;
138 1 RW = 0;
139 1 P1 = command;
140 1 E = 1;
141 1 smNop();
142 1 E = 0;
143 1 }
144
145 /********************************************************
146 名称:void send_com_init( unsigned char command_init )
147 功能:LCD初始化时的送命令
148 实参输入:unsigned char command_init
149 返回值:void
150 ********************************************************/
151 void send_com_init(const unsigned char command_init )
152 {
153 1 RS = 0;
154 1 RW = 0;
155 1 P1 = command_init;
156 1 E = 1;
157 1 smNop();
158 1 E = 0;
159 1 }
160
161 /*******************************************************
162 名称:void send_data( unsigned char data_a )
163 功能:写数据
164 实参输入:unsigned char data_a
165 返回值:void
166 *******************************************************/
167 void send_data(const unsigned char data_a)
168 {
169 1 check_busy();
170 1 RS = 1; //DB7-DB0为显示数据
171 1 RW = 0; //写入数据
172 1 P1 = data_a;
173 1 E = 1;
174 1 smNop();
175 1 E = 0; //下降沿
176 1 }
177
178 /*********************************************************
179 名称:void clear_LCD( void )
C51 COMPILER V7.50 SY 08/26/2007 12:58:15 PAGE 4
180 功能:清屏
181 实参输入:void
182 返回值:void
183 *********************************************************/
184 void clear_LCD(void)
185 {
186 1 send_com(0x01); //清除显示//
187 1 send_com(0x34); // 功能设定:扩充指令集动作 //
188 1 send_com(0x30); //功能设定:基本指令集动作//
189 1 }
190
191 /*************************************************************
192 名称:void initial_LCD( void )
193 功能:LCD初始化
194 实参输入:void
195 返回值:void
196 *************************************************************/
197 void initial_LCD(void)
198 {
199 1 PSB = 1; //并行传送
200 1 RST = 0; //复位
201 1 _nop_();
202 1 _nop_();
203 1 RST = 1; //不复位
204 1 _nop_();
205 1 delay_10us(10);
206 1 send_com_init(0x30);//30H--基本指令操作
207 1 delay_10us(4);
208 1 send_com_init(0x0c);//开显示,关光标,不闪烁。
209 1 delay_10us(10);
210 1 send_com_init(0x01);//清除显示
211 1 delay_ms(10);
212 1 send_com_init(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
213 1 }
214
215
216 /*********************************************************************
217 名称:void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
218 功能:显示字符串 2 1 6
219 参数输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length
220 返回值:void
221 *********************************************************************/
222 void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
223 {
224 1 unsigned char ddram = 0x00;
225 1 unsigned char i1;
226 1
227 1 if(line == 1)
228 1 ddram = 0x80;
229 1 if(line == 2)
230 1 ddram = 0x90;
231 1 if(line == 3)
232 1 ddram = 0x88;
233 1 if(line == 4)
234 1 ddram = 0x98;
235 1
236 1 ddram = ddram + col - 1;
237 1
238 1 send_com( ddram ); //定位显示起始地址
239 1
240 1 for( i1 = 0;i1 < length;i1 ++ )
241 1 {
C51 COMPILER V7.50 SY 08/26/2007 12:58:15 PAGE 5
242 2 send_data( ptr[i1] );//输出单个字符
243 2 }
244 1 }
245
246 /********************************************************
247 名称: void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
248 功能:显示汉字子程序
249 实参输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned length
250 返回值:void
251 ********************************************************/
252 void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
253 {
254 1
255 1 unsigned char ddram = 0x00;
256 1 unsigned char i1;
257 1 if(line == 1)
258 1 ddram = 0x80;
259 1 if(line == 2)
260 1 ddram = 0x90;
261 1 if(line == 3)
262 1 ddram = 0x88;
263 1 if(line == 4)
264 1 ddram = 0x98;
265 1
266 1 ddram = ddram + col - 1;
267 1 send_com( ddram ); //定位显示起始地址
268 1 for( i1 = 0;i1 < length;i1 ++ )
269 1 {
270 2 send_data(ptr[i1*2]);//输出单个字符
271 2 send_data(ptr[i1*2+1]);
272 2 }
273 1 }
274 /****************************************************************
275 -----------------------------------------------------------------
276 END OF MAIN.C
277 -----------------------------------------------------------------
278 ****************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 366 ----
CONSTANT SIZE = 9 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -