📄 12864.lst
字号:
C51 COMPILER V7.50 12864 11/10/2010 11:25:06 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 12864
OBJECT MODULE PLACED IN 12864.OBJ
COMPILER INVOKED BY: E:\Program Files\KEIL\C51\BIN\C51.EXE 12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg52.h"
2 #include "intrins.h"
3 sbit io_LCD12864_RS = P2^5 ;
4 sbit io_LCD12864_RW = P2^6 ;
5 sbit io_LCD12864_EN = P2^7 ;
6
7 #define io_LCD12864_DATAPORT P0
8
9 #define SET_DATA io_LCD12864_RS = 1 ;
10 #define SET_INC io_LCD12864_RS = 0 ;
11 #define SET_READ io_LCD12864_RW = 1 ;
12 #define SET_WRITE io_LCD12864_RW = 0 ;
13 #define SET_EN io_LCD12864_EN = 1 ;
14 #define CLR_EN io_LCD12864_EN = 0 ;
15
16 void v_Lcd12864CheckBusy_f( void ) //忙检测函数
17 {
18 1 unsigned int nTimeOut = 0 ;
19 1 SET_INC
20 1 SET_READ
21 1 CLR_EN
22 1 SET_EN
23 1 while( ( io_LCD12864_DATAPORT & 0x80 ) && ( ++nTimeOut != 0 ) ) ;
24 1 CLR_EN
25 1 SET_INC
26 1 SET_READ
27 1 }
28
29 void v_Lcd12864SendCmd_f( unsigned char byCmd ) //发送命令
30 {
31 1 v_Lcd12864CheckBusy_f() ;
32 1 SET_INC
33 1 SET_WRITE
34 1 CLR_EN
35 1 io_LCD12864_DATAPORT = byCmd ;
36 1 _nop_();
37 1 _nop_();
38 1 SET_EN
39 1 _nop_();
40 1 _nop_();
41 1 CLR_EN
42 1 SET_READ
43 1 SET_INC
44 1 }
45 void v_Lcd12864SendData_f( unsigned char byData ) //发送数据
46 {
47 1 v_Lcd12864CheckBusy_f() ;
48 1 SET_DATA
49 1 SET_WRITE
50 1 CLR_EN
51 1 io_LCD12864_DATAPORT = byData ;
52 1 _nop_();
53 1 _nop_();
54 1 SET_EN
55 1 _nop_();
C51 COMPILER V7.50 12864 11/10/2010 11:25:06 PAGE 2
56 1 _nop_();
57 1 CLR_EN
58 1 SET_READ
59 1 SET_INC
60 1 }
61
62 void v_DelayMs_f( unsigned int nDelay ) //延时
63 {
64 1 unsigned int i ;
65 1 for( ; nDelay > 0 ; nDelay-- )
66 1 {
67 2 for( i = 125 ; i > 0 ; i-- ) ;
68 2 }
69 1 }
70
71 void v_Lcd12864Init_f( void ) //初始化
72 {
73 1 v_Lcd12864SendCmd_f( 0x30 ) ; //基本指令集
74 1 v_DelayMs_f( 50 ) ;
75 1 v_Lcd12864SendCmd_f( 0x01 ) ; //清屏
76 1 v_DelayMs_f( 50 ) ;
77 1 v_Lcd12864SendCmd_f( 0x06 ) ; //光标右移
78 1 v_DelayMs_f( 50 ) ;
79 1 v_Lcd12864SendCmd_f( 0x0c ) ; //开显示
80 1 }
81 void v_Lcd12864SetAddress_f( unsigned char x, y ) //地址转换
82 {
83 1 unsigned char byAddress ;
84 1 switch( y )
85 1 {
86 2 case 0 : byAddress = 0x80 + x ;
87 2 break;
88 2 case 1 : byAddress = 0x90 + x ;
89 2 break ;
90 2 case 2 : byAddress = 0x88 + x ;
91 2 break ;
92 2 case 3 : byAddress = 0x98 + x ;
93 2 break ;
94 2 default :
95 2 break ;
96 2 }
97 1 v_Lcd12864SendCmd_f( byAddress ) ;
98 1 }
99 void v_Lcd12864PutString_f( unsigned char x, unsigned char y, unsigned char *pData )
100 {
101 1 v_Lcd12864SetAddress_f( x, y ) ;
102 1 while( *pData != '\0' )
103 1 {
104 2 v_Lcd12864SendData_f( *pData++ ) ;
105 2 }
106 1 }
107 void main( void )
108 {
109 1 v_Lcd12864Init_f() ;
110 1 v_Lcd12864PutString_f( 0,0, " 东流电子") ;
111 1 v_Lcd12864PutString_f( 2,1, "开发板商城") ;
112 1 v_Lcd12864PutString_f( 0,2, "*LCD12864ST7920*") ;
113 1 v_Lcd12864PutString_f( 0,3, "★○◇◆※☆■△") ;
114 1 while( 1 ) ;
115 1 }
C51 COMPILER V7.50 12864 11/10/2010 11:25:06 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 278 ----
CONSTANT SIZE = 56 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -