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