📄 1602.lst
字号:
C51 COMPILER V8.02 1602 12/27/2010 10:15:50 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\obj\1602.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\1602.lst) OBJECT(.\obj\1602.ob
-j)
line level source
1
2 #include "1602.h"
3 #include "delay.h"
4
5 #define CHECK_BUSY
6
7 sbit RS = P2^7; //定义端口
8 sbit RW = P2^6;
9 sbit EN = P2^5;
10
11 #define RS_CLR RS=0
12 #define RS_SET RS=1
13
14 #define RW_CLR RW=0
15 #define RW_SET RW=1
16
17 #define EN_CLR EN=0
18 #define EN_SET EN=1
19
20 #define DataPort P0
21
22 /*------------------------------------------------
23 判忙函数
24 ------------------------------------------------*/
25 bit LCD_Check_Busy(void)
26 {
27 1 #ifdef CHECK_BUSY
28 1 DataPort= 0xFF;
29 1 RS_CLR;
30 1 RW_SET;
31 1 EN_CLR;
32 1 _nop_();
33 1 EN_SET;
34 1 return (bit)(DataPort & 0x80);
35 1 #else
return 0;
#endif
38 1 }
39 /*------------------------------------------------
40 写入命令函数
41 ----------------- ----------------------------*/
42 void LCD_Write_Com(unsigned char com)
43 {
44 1 while(LCD_Check_Busy()); //忙则等待
45 1 RS_CLR;
46 1 RW_CLR;
47 1 EN_SET;
48 1 DataPort= com;
49 1 _nop_();
50 1 EN_CLR;
51 1 }
52 /*------------------------------------------------
53 写入数据函数
54 ------------------------------------------------*/
C51 COMPILER V8.02 1602 12/27/2010 10:15:50 PAGE 2
55 void LCD_Write_Data(unsigned char Data)
56 {
57 1 while(LCD_Check_Busy()); //忙则等待
58 1 RS_SET;
59 1 RW_CLR;
60 1 EN_SET;
61 1 DataPort= Data;
62 1 _nop_();
63 1 EN_CLR;
64 1 }
65
66 /*------------------------------------------------
67 清屏函数
68 ------------------------------------------------*/
69 void LCD_Clear(void)
70 {
71 1 LCD_Write_Com(0x01);
72 1 DelayMs(5);
73 1 }
74 /*------------------------------------------------
75 写入字符串函数
76 ------------------------------------------------*/
77 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
78 {
79 1 if (y == 0)
80 1 {
81 2 LCD_Write_Com(0x80 + x); //表示第一行
82 2 }
83 1 else
84 1 {
85 2 LCD_Write_Com(0xC0 + x); //表示第二行
86 2 }
87 1 while (*s)
88 1 {
89 2 LCD_Write_Data( *s);
90 2 s ++;
91 2 }
92 1 }
93 /*------------------------------------------------
94 写入字符函数
95 ------------------------------------------------*/
96 /* void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
97 {
98 if (y == 0)
99 {
100 LCD_Write_Com(0x80 + x);
101 }
102 else
103 {
104 LCD_Write_Com(0xC0 + x);
105 }
106 LCD_Write_Data( Data);
107 }*/
108 /*------------------------------------------------
109 初始化函数
110 ------------------------------------------------*/
111 void LCD_Init(void)
112 {
113 1 LCD_Write_Com(0x38); /*显示模式设置*/
114 1 DelayMs(5);
115 1 LCD_Write_Com(0x38);
116 1 DelayMs(5);
C51 COMPILER V8.02 1602 12/27/2010 10:15:50 PAGE 3
117 1 LCD_Write_Com(0x38);
118 1 DelayMs(5);
119 1 LCD_Write_Com(0x38);
120 1 LCD_Write_Com(0x08); /*显示关闭*/
121 1 LCD_Write_Com(0x01); /*显示清屏*/
122 1 LCD_Write_Com(0x06); /*显示光标移动设置*/
123 1 DelayMs(5);
124 1 LCD_Write_Com(0x0C); /*显示开及光标设置*/
125 1 }
126
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 155 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -