📄 lcd_function.lst
字号:
C51 COMPILER V6.23a LCD_FUNCTION 03/24/2006 16:06:58 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE LCD_FUNCTION
OBJECT MODULE PLACED IN lcd_function.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE lcd_function.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include <AT89X52.H>
3 #include <lcd_header.h>
4
5 #define Disp_On 0x3f
6 #define Disp_Off 0x3e
7 #define Col_Add 0x40///////Y地址
8 #define Page_Add 0xb8////////x地址
9 #define Start_Line 0xc0//启始行
10
11
12 sbit CSZ=P0^4; //Master chip enable ---左半部分CS2
13 sbit CSY=P0^3; //Slave chip enable ---右半部分CS1
14 sbit Enable=P0^2; //6800 mode Enable single ---据说是下降沿有效
15 sbit RS=P0^0; //Data or Instrument Select ---
16 sbit RW=P0^1; //Write or Read ---读写选择位
17 sbit Lcd_Rst=P0^5; //Lcm reset ---LCD复位
18 #define Lcd_Bus P2 //MCU P1<------> LCM
19 /*------------------延时子程序-----------------------------*/
20
21 void delay(unsigned int t)
22 {
23 1 unsigned int i,j;
24 1
25 1 for( i = 0 ; i < t ; i ++ )
26 1 for( j = 0 ; j < 10 ; j ++ ) ;
27 1 }
28 /*------------------写命令到LCD------------------------------*/
29 void write_com( unsigned char cmdcode )
30 {
31 1 RS = 0 ;
32 1 RW = 0 ;
33 1 //tran164(cmdcode);//
34 1 Lcd_Bus = cmdcode ;
35 1 delay ( 0 ) ;
36 1 Enable = 1 ;
37 1 delay ( 0 ) ;
38 1 Enable = 0 ;
39 1 }
40 /*-------------------写数据到LCD----------------------------*/
41 void write_data ( unsigned char Dispdata )
42 {
43 1 RS = 1 ;
44 1 RW = 0 ;
45 1 //tran164(Dispdata);//
46 1 Lcd_Bus = Dispdata ;
47 1 delay ( 0 ) ;
48 1 Enable = 1 ;
49 1 delay ( 0 ) ;
50 1 Enable = 0 ;
51 1 }
52 /*------------------清除内存---------------*/
53 void Clr_Scr ( )
54 {
55 1 unsigned char j , k ;
C51 COMPILER V6.23a LCD_FUNCTION 03/24/2006 16:06:58 PAGE 2
56 1
57 1 CSZ= 1 ;
58 1 CSY = 1 ;
59 1 write_com ( Page_Add + 0 ) ;
60 1 write_com ( Col_Add + 0 ) ;
61 1 for( k = 0 ; k < 8 ; k ++ )
62 1 {
63 2 write_com( Page_Add + k ) ;
64 2 for ( j = 0 ; j < 64 ; j++ )
65 2 {
66 3 write_data( 0x00 ) ;
67 3 }
68 2 }
69 1 }
70
71
72
73 /*---------------------指定位置显示汉字16*16-----------------------*/
74 void hz_disp16( unsigned char pag , unsigned char col, unsigned char code *hzk )
75 {
76 1 unsigned char j , i ;
77 1
78 1 for(j=0;j<2;j++)
79 1 {
80 2 write_com(Page_Add+pag+j);
81 2 write_com(Col_Add+col);
82 2 for(i=0;i<16;i++)
83 2 {
84 3 write_data(hzk[16*j+i]);
85 3 }
86 2 }
87 1 }
88
89 void init_lcd( void )
90 {
91 1 Lcd_Rst = 0 ; //复位LCD
92 1 delay ( 100 ) ;
93 1 Lcd_Rst = 1 ;
94 1 delay ( 100 ) ;
95 1 CSZ = 1 ;
96 1 CSY = 1 ;
97 1 delay ( 100 ) ;
98 1 write_com ( Disp_Off ) ;
99 1 write_com ( Page_Add ) ;
100 1 write_com ( Start_Line );
101 1 write_com ( Col_Add ) ;
102 1 write_com ( Disp_On );
103 1 }
104 void writecuit( unsigned char pag,unsigned char col,unsigned char code *dat , unsigned char pagc,unsigned
-char colc)
105 // 显示起始页 显示起始列 显示图案数据 图案所占页 图
-案所占列
106 {
107 1 unsigned char i,j;
108 1
109 1 for(j = 0 ; j < pagc ; j++ )
110 1 {
111 2 CSZ = 1 ;
112 2 CSY = 0 ;
113 2 write_com ( Page_Add + pag + j ) ;
114 2 write_com ( Col_Add + col ) ;
115 2 for( i = 0 ; i < colc ; i ++ )
C51 COMPILER V6.23a LCD_FUNCTION 03/24/2006 16:06:58 PAGE 3
116 2 {
117 3 if ( ( i+col ) == 64 )
118 3 {
119 4 CSZ = 0 ;
120 4 CSY = 1 ;
121 4 write_com ( Col_Add ) ;
122 4 write_com ( Page_Add + pag + j ) ;
123 4 }
124 3 else if ((i+col)==127)
125 3 {
126 4 CSZ = 1 ;
127 4 CSY = 0 ;
128 4 write_com ( Col_Add ) ;
129 4 write_com ( Page_Add + pag + j ) ;
130 4 }
131 3 write_data ( dat [colc * j + i ] ) ;
132 3 }
133 2 }
134 1 }
135
136
137
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 346 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
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 + -