📄 st7920.lst
字号:
C51 COMPILER V7.50 ST7920 09/06/2008 00:08:16 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ST7920
OBJECT MODULE PLACED IN ST7920.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ST7920.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 #define lcdBus P2
8 sbit lcd_rs = P0^7;
9 sbit lcd_rw = P0^6;
10 sbit lcd_e = P0^5;
11
12 static void delayus(uchar n)
13 {
14 1 n = n>>1;
15 1 while( --n );
16 1 }
17
18 static void delayms(uchar n)
19 {
20 1 while( n-- )
21 1 {
22 2 delayus(240);
23 2 delayus(240);
24 2 delayus(240);
25 2 delayus(240);
26 2 }
27 1 }
28
29 void checkBusy()
30 {
31 1 lcd_rs = 0;
32 1 lcd_rw = 1;
33 1 lcd_e = 1;
34 1 lcdBus = 0xff;
35 1 while( (lcdBus&0x80)==0x80 );
36 1 lcd_e = 0;
37 1 }
38
39 void writeCommand(uchar com)
40 {
41 1 checkBusy();
42 1 lcd_rs = 0;
43 1 lcd_rw = 0;
44 1 lcdBus = com;
45 1 lcd_e = 1;
46 1 delayus( 10 );
47 1 lcd_e = 0;
48 1 delayus( 10 );
49 1 }
50
51 void writeData(uchar dat)
52 {
53 1 checkBusy();
54 1 lcd_rs = 1;
55 1 lcd_rw = 0;
C51 COMPILER V7.50 ST7920 09/06/2008 00:08:16 PAGE 2
56 1 lcdBus = dat;
57 1 lcd_e = 1;
58 1 delayus( 10 );
59 1 lcd_e = 0;
60 1 delayus( 10 );
61 1 }
62
63 void lcdReset()
64 {
65 1 delayms( 40 );
66 1 writeCommand( 0x30 ); //0b0011x0xx 8-bit interface and basic instruction
67 1 delayus( 130 );
68 1 writeCommand( 0x30 ); //0b0011x0xx
69 1 delayus( 50 );
70 1 writeCommand( 0x0c ); //0b00001bcd display on/off control
71 1 delayus( 130 );
72 1 writeCommand( 0x01 ); //0b00000001 display clear
73 1 delayms( 12 );
74 1 writeCommand( 0x06 ); //0b000001(I/D)s entry mode set
75 1 }
76
77 void writeCGRAM(uchar addr,uchar *array) // 0<=addr<=3
78 {
79 1 uchar i;
80 1 addr = addr<<4;
81 1 addr = addr|0x40;
82 1 writeCommand( 0x30 );
83 1 writeCommand( addr );
84 1 for( i=0 ; i<16 ; i++ )
85 1 {
86 2 writeData( array[i*2] );
87 2 writeData( array[i*2+1] );
88 2 }
89 1 }
90
91 void writeString(uchar line,uchar *str)
92 {
93 1 uchar i;
94 1 switch( line )
95 1 {
96 2 case 0:
97 2 writeCommand(0x80);
98 2 break;
99 2 case 1:
100 2 writeCommand(0x90);
101 2 break;
102 2 case 2:
103 2 writeCommand(0x88);
104 2 break;
105 2 case 3:
106 2 writeCommand(0x98);
107 2 }
108 1 for( i=0 ; str[i] ; i++ )
109 1 {
110 2 writeData(str[i]);
111 2 delayus(100);
112 2 }
113 1 }
114
115 void writeBmp(uchar *img)
116 {
117 1 uchar x,y,i;
C51 COMPILER V7.50 ST7920 09/06/2008 00:08:16 PAGE 3
118 1 uint j = 0;
119 1 for( i=0 ; i<9 ; i+=8 )
120 1 for( y=0 ; y<32 ; y++ )
121 1 for( x=0 ; x<8 ; x++ )
122 1 {
123 2 writeCommand(0x36);
124 2 writeCommand(y+0x80);
125 2 writeCommand(x+0x80+i);
126 2 writeCommand(0x30);
127 2 writeData(img[j++]);
128 2 writeData(img[j++]);
129 2 }
130 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 400 ----
CONSTANT SIZE = ---- ----
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 + -