📄 yejing.lst
字号:
C51 COMPILER V8.08 YEJING 12/05/2007 16:54:47 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE YEJING
OBJECT MODULE PLACED IN yejing.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE yejing.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 ** DS18B20温度测量程序
3 ** 晶 振 频 率:11.0592M
4 ** 线路->单片机实验开发板A
5 ******************************************************************/
6 #include<reg51.h>
7 #define uchar unsigned char
8 #define uint unsigned int
9
10 sbit LCM_E=P3^5; //定义接口
11 sbit LCM_RW=P3^6;
12 sbit LCM_RS=P3^7;
13
14 #define LCM_Data P1
15
16 void LCM_WriteData(uchar WDLCM);
17 void LCM_WriteCommand(uchar WCLCM,BuysC);
18 uchar LCM_ReadData(void);
19 uchar LCM_ReadStatus(void);
20 void LCM_Init(void);
21 void DisplayOneChar(uchar X, uchar Y, uchar DData);
22 void DisplayListChar(uchar X, uchar Y, uchar code *DData);
23 void Delay5Ms(void);
24 void Delay400Ms(void);
25
26 uchar code uctech[] = {"1602A"};
27 uchar code net[] = {"www.52c51.com"};
28
29 void main(void)
30 {
31 1 Delay400Ms(); //启动等待,等LCM讲入工作状态
32 1 LCM_Init(); //LCM初始化
33 1 Delay5Ms(); //延时片刻(可不要)
34 1
35 1 DisplayListChar(6, 1, uctech);
36 1 DisplayListChar(0, 0, net);
37 1 LCM_ReadData();//测试用句无意义
38 1 LCM_Data=255;
39 1 while(1);
40 1 }
41
42 /****************************1602A写数据函数**************************/
43 /*函数原型:void LCM_WriteData(uchar WDLCM)
44 /*函数功能:1602A写数据
45 /*输入参数:要写入的数据
46 /*输出参数:无
47 /*调用模块:
48 /*建立时间:2005/11/14
49 /*作者:站长
50 /**********************************************************************/
51 void LCM_WriteData(uchar WDLCM)
52 {
53 1 LCM_ReadStatus(); //检测忙
54 1 LCM_Data = WDLCM;
55 1 LCM_RS = 1;
C51 COMPILER V8.08 YEJING 12/05/2007 16:54:47 PAGE 2
56 1 LCM_RW = 0;
57 1 LCM_E = 0; //若晶振速度太高可以在这后加小的延时
58 1 LCM_E = 0; //延时
59 1 LCM_E = 1;
60 1 }
61
62 /****************************1602A写指令函数**************************/
63 /*函数原型:void LCM_WriteCommand(uchar WCLCM,BuysC)
64 /*函数功能:1602A写指令
65 /*输入参数:要写入的指令
66 /*输出参数:无
67 /*调用模块:
68 /*建立时间:2005/11/14
69 /*作者:站长
70 /**********************************************************************/
71 void LCM_WriteCommand(uchar WCLCM,BuysC) //BuysC为0时忽略忙检测
72 {
73 1 if (BuysC) LCM_ReadStatus(); //根据需要检测忙
74 1 LCM_Data = WCLCM;
75 1 LCM_RS = 0;
76 1 LCM_RW = 0;
77 1 LCM_E = 0;
78 1 LCM_E = 0;
79 1 LCM_E = 1;
80 1 }
81
82 /****************************1602A读数据函数**************************/
83 /*函数原型:uchar LCM_ReadData(void)
84 /*函数功能:1602A读数据
85 /*输入参数:无
86 /*输出参数:1602A返回的数据
87 /*调用模块:
88 /*建立时间:2005/11/14
89 /*作者:站长
90 /**********************************************************************/
91 uchar LCM_ReadData(void)
92 {
93 1 LCM_RS = 1;
94 1 LCM_RW = 1;
95 1 LCM_E = 0;
96 1 LCM_E = 0;
97 1 LCM_E = 1;
98 1 return(LCM_Data);
99 1 }
100
101 /****************************1602A读状态函数**************************/
102 /*函数原型:uchar LCM_ReadData(void)
103 /*函数功能:1602A读状态
104 /*输入参数:无
105 /*输出参数:1602A返回的状态
106 /*调用模块:
107 /*建立时间:2005/11/14
108 /*作者:站长
109 /**********************************************************************/
110 uchar LCM_ReadStatus(void)
111 {
112 1 LCM_Data = 0xFF;
113 1 LCM_RS = 0;
114 1 LCM_RW = 1;
115 1 LCM_E = 0;
116 1 LCM_E = 0;
117 1 LCM_E = 1;
C51 COMPILER V8.08 YEJING 12/05/2007 16:54:47 PAGE 3
118 1 while (LCM_Data & 0x80); //检测忙信号
119 1 return(LCM_Data);
120 1 }
121
122 /****************************1602A初始化函数**************************/
123 /*函数原型:void LCM_Init(void)
124 /*函数功能:1602A初始化
125 /*输入参数:无
126 /*输出参数:无
127 /*调用模块:
128 /*建立时间:2005/11/14
129 /*作者:站长
130 /**********************************************************************/
131 void LCM_Init(void)
132 {
133 1 LCM_Data = 0;
134 1 LCM_WriteCommand(0x38,0); //三次显示模式设置,不检测忙信号
135 1 Delay5Ms();
136 1 LCM_WriteCommand(0x38,0);
137 1 Delay5Ms();
138 1 LCM_WriteCommand(0x38,0);
139 1 Delay5Ms();
140 1
141 1 LCM_WriteCommand(0x38,1); //显示模式设置,开始要求每次检测忙信号
142 1 LCM_WriteCommand(0x08,1); //关闭显示
143 1 LCM_WriteCommand(0x01,1); //显示清屏
144 1 LCM_WriteCommand(0x06,1); // 显示光标移动设置
145 1 LCM_WriteCommand(0x0C,1); // 显示开及光标设置
146 1 }
147
148 /******************1602A按指定位置显示一个字符函数**********************/
149 /*函数原型:void DisplayOneChar(uchar X, uchar Y, uchar DData)
150 /*函数功能:1602A按指定位置显示一个字符
151 /*输入参数:X坐标 Y坐标 要显示的字符
152 /*输出参数:无
153 /*调用模块:
154 /*建立时间:2005/11/14
155 /*作者:站长
156 /**********************************************************************/
157 void DisplayOneChar(uchar X, uchar Y, uchar DData)
158 {
159 1 Y &= 0x1;
160 1 X &= 0xF; //限制X不能大于15,Y不能大于1
161 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
162 1 X |= 0x80; // 算出指令码
163 1 LCM_WriteCommand(X, 0); //这里不检测忙信号,发送地址码
164 1 LCM_WriteData(DData);
165 1 }
166
167 /*******************1602A按指定位置显示一串字符函数*********************/
168 /*函数原型:void DisplayListChar(uchar X, uchar Y, uchar code *DData)
169 /*函数功能:1602A按指定位置显示一个字符
170 /*输入参数:X坐标 Y坐标 要显示字符串的首地址
171 /*输出参数:无
172 /*调用模块:
173 /*建立时间:2005/11/14
174 /*作者:站长
175 /**********************************************************************/
176 void DisplayListChar(uchar X, uchar Y, uchar code *DData)
177 {
178 1 uchar ListLength;
179 1 ListLength = 0;
C51 COMPILER V8.08 YEJING 12/05/2007 16:54:47 PAGE 4
180 1 Y &= 0x1;
181 1 X &= 0xF; //限制X不能大于15,Y不能大于1
182 1 while (DData[ListLength]>0x20) //若到达字串尾则退出
183 1 {
184 2 if (X <= 0xF) //X坐标应小于0xF
185 2 {
186 3 DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
187 3 ListLength++;
188 3 X++;
189 3 }
190 2 }
191 1 }
192
193 /********************5ms延时函数************************/
194 /*函数原型:void Delay5Ms(void)
195 /*函数功能:5ms延时
196 /*输入参数:无
197 /*输出参数:无
198 /*调用模块:
199 /*建立时间:2005/11/14
200 /*作者:站长
201 /**********************************************************************/
202 void Delay5Ms(void)
203 {
204 1 unsigned int TempCyc = 5552;
205 1 while(TempCyc--);
206 1 }
207
208 /********************400ms延时延时函数************************/
209 /*函数原型:void Delay400Ms(void)
210 /*函数功能:400ms延时延时
211 /*输入参数:无
212 /*输出参数:无
213 /*调用模块:
214 /*建立时间:2005/11/14
215 /*作者:站长
216 /**********************************************************************/
217 void Delay400Ms(void)
218 {
219 1 uchar TempCycA = 5;
220 1 unsigned int TempCycB;
221 1 while(TempCycA--)
222 1 {
223 2 TempCycB=7269;
224 2 while(TempCycB--);
225 2 };
226 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 315 ----
CONSTANT SIZE = 20 ----
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 + -