📄 display.lst
字号:
C51 COMPILER V7.50 DISPLAY 12/01/2007 10:47:35 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN display.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE display.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h> //包括一个52标准内核的头文件
2 #include <intrins.h>
3 #include <stdio.h>
4
5 //变量类型标识的宏定义
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 // 控制引脚定义,不同的连接必须修改的部分
10 sbit RS=P1^3;
11 sbit RW=P1^4;
12 sbit Elcm=P1^5;
13
14 #define DataPort P2 // 数据端口
15 #define Busy 0x80
16
17 void Delay400Ms(void);
18 void Delay5Ms(void);
19 void WaitForEnable( void );
20 void LcdWriteData( char dataW );
21 void LcdWriteCommand( uchar CMD,uchar AttribC );
22 void LcdReset( void );
23 void Display( uchar dd );
24 void DispOneChar(uchar x,uchar y,uchar Wdata);
25 void ePutstr(uchar x,uchar y, uchar code *ptr);
26 void DelayMs(unsigned int number);
27
28 //=============显示操作==================================
29
30 //=======================================================
31 //显示字符串
32 //=======================================================
33 void ePutstr(uchar x,uchar y, uchar code *ptr)
34 {
35 1 uchar i,l=0;
36 1 while (ptr[l] > 31)
37 1 {l++;};
38 1 for (i=0;i<16;i++ )
39 1 DispOneChar(x++,y,ptr[i]);
40 1 if ( x == 16 )
41 1 {
42 2 x = 0; y ^= 1;
43 2 }
44 1 }
45
46
47 /*=======================================================
48 显示光标定位
49 =======================================================*/
50 void Disp_XY( char posx,char posy) {
51 1
52 1 uchar temp;
53 1
54 1 temp = posx & 0xf;
55 1 posy &= 0x1;
C51 COMPILER V7.50 DISPLAY 12/01/2007 10:47:35 PAGE 2
56 1 if ( posy )temp |= 0x40;
57 1 temp |= 0x80;
58 1 LcdWriteCommand(temp,0);
59 1 }
60
61 /*=======================================================
62 按指定位置显示数出一个字符
63 =======================================================*/
64 void DispOneChar(uchar x,uchar y,uchar Wdata) {
65 1
66 1 Disp_XY( x, y ); // 定位显示地址
67 1 LcdWriteData( Wdata ); // 写字符
68 1 }
69
70 /*=======================================================
71 初始化程序, 必须按照产品资料介绍的初始化过程进行
72 =======================================================*/
73 void LcdReset( void ) {
74 1
75 1 LcdWriteCommand( 0x38, 0); // 显示模式设置(不检测忙信号)
76 1 Delay5Ms();
77 1 LcdWriteCommand( 0x38, 0); // 共三次
78 1 Delay5Ms();
79 1 LcdWriteCommand( 0x38, 0);
80 1 Delay5Ms();
81 1
82 1 LcdWriteCommand( 0x38, 1); // 显示模式设置(以后均检测忙信号)
83 1 LcdWriteCommand( 0x08, 1); // 显示关闭
84 1 LcdWriteCommand( 0x01, 1); // 显示清屏
85 1 LcdWriteCommand( 0x06, 1); // 显示光标移动设置
86 1 LcdWriteCommand( 0x0c, 1); // 显示开及光标设置
87 1 }
88
89 /*=======================================================
90 写控制字符子程序: E=1 RS=0 RW=0
91 =======================================================*/
92 void LcdWriteCommand( uchar CMD,uchar AttribC ) {
93 1
94 1 if (AttribC) WaitForEnable(); // 检测忙信号?
95 1
96 1 RS = 0; RW = 0; _nop_();
97 1
98 1 DataPort = CMD; _nop_();
99 1 // 送控制字子程序
100 1
101 1 Elcm = 1;_nop_();_nop_();Elcm = 0; // 操作允许脉冲信号
102 1 }
103
104 /*=======================================================
105 当前位置写字符子程序: E =1 RS=1 RW=0
106 =======================================================*/
107 void LcdWriteData( char dataW ) {
108 1
109 1 WaitForEnable();
110 1 // 检测忙信号
111 1
112 1 RS = 1; RW = 0; _nop_();
113 1
114 1 DataPort = dataW; _nop_();
115 1
116 1 Elcm = 1; _nop_(); _nop_(); Elcm = 0; // 操作允许脉冲信号
117 1
C51 COMPILER V7.50 DISPLAY 12/01/2007 10:47:35 PAGE 3
118 1 }
119
120 /*=======================================================
121 正常读写操作之前必须检测LCD控制器状态: CS=1 RS=0 RW=1
122 DB7: 0 LCD控制器空闲; 1 LCD控制器忙
123 ========================================================*/
124 void WaitForEnable( void ) {
125 1
126 1 DataPort = 0xff;
127 1
128 1 RS =0; RW = 1; _nop_(); Elcm = 1; _nop_(); _nop_();
129 1
130 1 while( DataPort & Busy );
131 1
132 1 Elcm = 0;
133 1 }
134
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 230 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
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 + -