📄 1602.lst
字号:
C51 COMPILER V7.01 1602 08/22/2008 12:38:42 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\1602.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\Documents and Settings\hjjm\桌面\hjm\1602.C BROWSE DEBUG OBJECTEXTEND PR
-INT(.\1602.lst) OBJECT(.\1602.obj)
stmt level source
1 #include <REG51.h>
2 #include <string.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 sbit LCM_E=P2^3;//定义接口
8 sbit LCM_RW=P2^2;
9 sbit LCM_RS=P2^1;
10 #define LCM_Data P0//数据接口
11 /*
12 void LCM_WriteData(uchar WDLCM);
13 void LCM_WriteCommand(uchar WCLCM,BuysC);
14 uchar LCM_ReadData(void);
15 uchar LCM_ReadStatus(void);
16 void LCM_Init(void);
17 void DisplayOneChar(uchar X, uchar Y, uchar DData);
18 void DisplayListChar(uchar X, uchar Y, uchar code *DData);
19 void Delay5Ms(void);
20 void Delay400Ms(void);*/
21 /********************5ms延时函数************************/
22 /*函数原型:void Delay5Ms(void)
23 /*函数功能:5ms延时
24 /*输入参数:无
25 /*输出参数:无
26 /**********************************************************************/
27 void Delay5Ms(void)
28 {
29 1 unsigned int TempCyc = 5552;
30 1 while(TempCyc--);
31 1 }
32 /********************400ms延时延时函数************************/
33 /*函数原型:void Delay400Ms(void)
34 /*函数功能:400ms延时延时
35 /*输入参数:无
36 /*输出参数:无
37 /**********************************************************************/
38 void Delay400Ms(void)
39 {
40 1 uchar TempCycA = 5;
41 1 unsigned int TempCycB;
42 1 while(TempCycA--)
43 1 {
44 2 TempCycB=7269;
45 2 while(TempCycB--);
46 2 };
47 1 }
48
49 /****************************1602A读状态函数**************************/
50 /*函数原型:uchar LCM_ReadData(void)
51 /*函数功能:1602A读状态
52 /*输入参数:无
53 /*输出参数:1602A返回的状态
54 /**********************************************************************/
C51 COMPILER V7.01 1602 08/22/2008 12:38:42 PAGE 2
55 uchar LCM_ReadStatus(void)
56 {
57 1 LCM_Data = 0xFF;
58 1 LCM_RS = 0;
59 1 LCM_RW = 1;
60 1 LCM_E = 0;
61 1 LCM_E = 0;
62 1 LCM_E = 1;
63 1 while (LCM_Data & 0x80);//检测忙信号
64 1 return(LCM_Data);
65 1 }
66 /****************************1602A写数据函数**************************/
67 /*函数原型:void LCM_WriteData(uchar WDLCM)
68 /*函数功能:1602A写数据
69 /*输入参数:要写入的数据
70 /*输出参数:无
71
72 /**********************************************************************/
73 void LCM_WriteData(uchar WDLCM)
74 {
75 1 LCM_ReadStatus();//检测忙
76 1 LCM_Data = WDLCM;
77 1 LCM_RS = 1;
78 1 LCM_RW = 0;
79 1 LCM_E = 0;//若晶振速度太高可以在这后加小的延时
80 1 LCM_E = 0;//延时
81 1 LCM_E = 1;
82 1 }
83 /****************************1602A写指令函数**************************/
84 /*函数原型:void LCM_WriteCommand(uchar WCLCM,BuysC)
85 /*函数功能:1602A写指令
86 /*输入参数:要写入的指令
87 /*输出参数:无
88
89 /**********************************************************************/
90 void LCM_WriteCommand(uchar WCLCM,BuysC)//BuysC为0时忽略忙检测
91 {
92 1 if (BuysC) LCM_ReadStatus();//根据需要检测忙
93 1 LCM_Data = WCLCM;
94 1 LCM_RS = 0;
95 1 LCM_RW = 0;
96 1 LCM_E = 0;
97 1 LCM_E = 0;
98 1 LCM_E = 1;
99 1 }
100 /****************************1602A读数据函数**************************/
101 /*函数原型:uchar LCM_ReadData(void)
102 /*函数功能:1602A读数据
103 /*输入参数:无
104 /*输出参数:1602A返回的数据
105 /**********************************************************************/
106 uchar LCM_ReadData(void)
107 {
108 1 LCM_RS = 1;
109 1 LCM_RW = 1;
110 1 LCM_E = 0;
111 1 LCM_E = 0;
112 1 LCM_E = 1;
113 1 return(LCM_Data);
114 1 }
115
116 /****************************1602A初始化函数**************************/
C51 COMPILER V7.01 1602 08/22/2008 12:38:42 PAGE 3
117 /*函数原型:void LCM_Init(void)
118 /*函数功能:1602A初始化
119 /**********************************************************************/
120 void LCM_Init(void)
121 {
122 1 LCM_Data = 0;
123 1 LCM_WriteCommand(0x38,0);//三次显示模式设置,不检测忙信号
124 1 Delay5Ms();
125 1 LCM_WriteCommand(0x38,0);
126 1 Delay5Ms();
127 1 LCM_WriteCommand(0x38,0);
128 1 Delay5Ms();
129 1
130 1 LCM_WriteCommand(0x38,1);//显示模式设置,开始要求每次检测忙信号
131 1 //LCM_WriteCommand(0x08,1);//关闭显示
132 1 LCM_WriteCommand(0x01,1);//显示清屏
133 1 LCM_WriteCommand(0x06,1);// 显示光标移动设置
134 1 LCM_WriteCommand(0x0e,1);// 显示开及光标设置
135 1 //LCM_WriteCommand(0x18,1);
136 1 }
137 /******************1602A按指定位置显示一个字符函数**********************/
138 /*函数原型:void DisplayOneChar(uchar X, uchar Y, uchar DData)
139 /*函数功能:1602A按指定位置显示一个字符
140 /*输入参数:X坐标 Y坐标 要显示的字符
141 /*输出参数:无
142 /**********************************************************************/
143 void DisplayOneChar(uchar X, uchar Y, uchar DData)
144 {
145 1 Y &= 0x1;
146 1 X &= 0xF;//限制X不能大于15,Y不能大于1
147 1 if (Y)
148 1 X |= 0x40;//当要显示第二行时地址码+0x40;
149 1 X |= 0x80;// 算出指令码
150 1 LCM_WriteCommand(X, 0);//这里不检测忙信号,发送地址码
151 1 LCM_WriteData(DData);
152 1 }
153 /*******************1602A按指定位置显示一串字符函数*********************/
154 /*函数原型:void DisplayListChar(uchar X, uchar Y, uchar code *DData)
155 /*函数功能:1602A按指定位置显示一个字符
156 /*输入参数:X坐标 Y坐标 要显示字符串的首地址
157 /*输出参数:无
158 /**********************************************************************/
159 void DisplayListChar(uchar X, uchar Y, uchar code *DData)
160 {
161 1 uchar ListLength;
162 1 ListLength = 0;
163 1 Y &= 0x1;
164 1 X &= 0xF;//限制X不能大于15,Y不能大于1
165 1 while (DData[ListLength]>0x20)//若到达字串尾则退出
166 1 {
167 2 if (X <= 0xF)//X坐标应小于0xF
168 2 {
169 3 DisplayOneChar(X,Y,DData[ListLength]);//显示单个字符
170 3 ListLength++;
171 3 X++;
172 3 }
173 2 }
174 1 }
175
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.01 1602 08/22/2008 12:38:42 PAGE 4
CODE SIZE = 239 ----
CONSTANT SIZE = ---- ----
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 + -