?? lcdxianshi.lst
字號:
C51 COMPILER V7.50 LCDXIANSHI 08/30/2007 10:09:08 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCDXIANSHI
OBJECT MODULE PLACED IN lcdxianshi.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE lcdxianshi.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 ** Create : 2007 7 31
3 ** Author : oDon
4 ** email : yuanonline@hotmail.com
5 ** Description:**
6 ** This project is using for a library of solutions of CM12864
7 ** functions will implements to display ZH_CN ASCII IMAGE on
8 ** CM12864 LCD.etc..
9 */
10 #include <intrins.h>
11 #include<func.h>
12 #include<reg52.h>
13 sbit RS = P2^0;
14 sbit RW = P2^1;
15 sbit E = P2^2;
16 sbit PSB = P2^3;
17 sbit RST = P2^4;
18
19 #define DATA P1
20 volatile uchar command; /*Command Word*/
21
22 /**************************************************
23 * Function Definations Below */
24
25 void check_busy(void);
26 void send_com(const unsigned char command);
27 void send_com_init(const unsigned char command_init);
28 void send_data(const unsigned char data_a);
29 void send_data(const unsigned char data_a);
30 void clear_LCD(void);
31 void initial_LCD(void);
32 void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
33 void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
34 /* Function Definations End *
35 **************************************************/
36
37 /*void xianshi(void)
38 {
39 clear_LCD();
40 smNop();
41 initial_LCD();
42 smNop();
43 clear_LCD();
44 smNop();
45 Display_ch(suc, 2, 1, 6);
46 while(1);
47
48 } */
49
50
51 /******************************************
52 功能:void check_busy( void )
53 功能:檢查是否LCD忙碌的子程序
54 實參輸入:void
55 返回值:void
C51 COMPILER V7.50 LCDXIANSHI 08/30/2007 10:09:08 PAGE 2
56 ******************************************/
57 void check_busy(void)
58 {
59 1 P1 = 0xff;
60 1 RS = 0;
61 1 RW = 1;
62 1 while (1)
63 1 {
64 2 smNop();
65 2 E =1;
66 2 smNop();
67 2 if( P1 < 0x80 )
68 2 break;
69 2 smNop();
70 2 E =0;
71 2 }
72 1 E = 0;
73 1 }
74
75 /*****************************************
76 名稱:void send_com( unsigned char command )
77 功能:數據寫命令
78 實參輸入:unsigned char command
79 返回值:void
80 *****************************************/
81 void send_com(const unsigned char command)
82 {
83 1 check_busy();
84 1 RS = 0;
85 1 RW = 0;
86 1 P1 = command;
87 1 E = 1;
88 1 smNop();
89 1 E = 0;
90 1 }
91
92 /********************************************************
93 名稱:void send_com_init( unsigned char command_init )
94 功能:LCD初始化時的送命令
95 實參輸入:unsigned char command_init
96 返回值:void
97 ********************************************************/
98 void send_com_init(const unsigned char command_init )
99 {
100 1 RS = 0;
101 1 RW = 0;
102 1 P1 = command_init;
103 1 E = 1;
104 1 smNop();
105 1 E = 0;
106 1 }
107
108 /*******************************************************
109 名稱:void send_data( unsigned char data_a )
110 功能:寫數據
111 實參輸入:unsigned char data_a
112 返回值:void
113 *******************************************************/
114 void send_data(const unsigned char data_a)
115 {
116 1 check_busy();
117 1 RS = 1; //DB7-DB0為顯示數據
C51 COMPILER V7.50 LCDXIANSHI 08/30/2007 10:09:08 PAGE 3
118 1 RW = 0; //寫入數據
119 1 P1 = data_a;
120 1 E = 1;
121 1 smNop();
122 1 E = 0; //下降沿
123 1 }
124
125 /*********************************************************
126 名稱:void clear_LCD( void )
127 功能:清屏
128 實參輸入:void
129 返回值:void
130 *********************************************************/
131 void clear_LCD(void)
132 {
133 1 send_com(0x01); //清除顯示//
134 1 send_com(0x34); // 功能設定:擴充指令集動作 //
135 1 send_com(0x30); //功能設定:基本指令集動作//
136 1 }
137
138 /*************************************************************
139 名稱:void initial_LCD( void )
140 功能:LCD初始化
141 實參輸入:void
142 返回值:void
143 *************************************************************/
144 void initial_LCD(void)
145 {
146 1 PSB = 1; //水平顯示
147 1 RST = 0; //復位
148 1 _nop_();
149 1 _nop_();
150 1 RST = 1; //不復位
151 1 _nop_();
152 1 delay_10us(10);
153 1 send_com_init(0x30);//30H--基本指令操作
154 1 delay_10us(4);
155 1 send_com_init(0x0c);//開顯示,關光標,不閃爍。
156 1 delay_10us(10);
157 1 send_com_init(0x01);//清除顯示
158 1 delay_ms(10);
159 1 send_com_init(0x06);//指定在資料寫入或讀取時,光標的移動方向,DDRAM的地址計數器(AC)加1。
160 1 }
161
162
163 /*********************************************************************
164 名稱:void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
165 功能:顯示字符串 2 1 6
166 參數輸入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length
167 返回值:void
168 *********************************************************************/
169 void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
170 {
171 1 unsigned char ddram = 0x00;
172 1 unsigned char i1;
173 1
174 1 if(line == 1)
175 1 ddram = 0x80;
176 1 if(line == 2)
177 1 ddram = 0x90;
178 1 if(line == 3)
179 1 ddram = 0x88;
C51 COMPILER V7.50 LCDXIANSHI 08/30/2007 10:09:08 PAGE 4
180 1 if(line == 4)
181 1 ddram = 0x98;
182 1
183 1 ddram = ddram + col - 1;
184 1
185 1 send_com( ddram ); //定位顯示起始地址
186 1
187 1 for( i1 = 0;i1 < length;i1 ++ )
188 1 {
189 2 send_data( ptr[i1] );//輸出單個字符
190 2 }
191 1 }
192
193 /********************************************************
194 名稱: void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
195 功能:顯示漢字子程序
196 實參輸入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned length
197 返回值:void
198 ********************************************************/
199 void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
200 {
201 1
202 1 unsigned char ddram = 0x00;
203 1 unsigned char i1;
204 1 if(line == 1)
205 1 ddram = 0x80;
206 1 if(line == 2)
207 1 ddram = 0x90;
208 1 if(line == 3)
209 1 ddram = 0x88;
210 1 if(line == 4)
211 1 ddram = 0x98;
212 1
213 1 ddram = ddram + col - 1;
214 1 send_com( ddram ); //定位顯示起始地址
215 1 for( i1 = 0;i1 < length;i1 ++ )
216 1 {
217 2 send_data(ptr[i1*2]);//輸出單個字符
218 2 send_data(ptr[i1*2+1]);
219 2 }
220 1 }
221 /****************************************************************
222 -----------------------------------------------------------------
223 END OF MAIN.C
224 -----------------------------------------------------------------
225 ****************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 317 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 16
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 + -