📄 csy.lst
字号:
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CSY
OBJECT MODULE PLACED IN csy.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE csy.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //深圳瑞特RT12864带M系列(控制器ST7920A),单片机:89S52,晶振:12M,
2 //并行连接方式,P2.7-RS,P2.1-RW,P2.2-E
3 //设计:TIMEN HUANG
4 #include<reg1210.h>
5 #include <intrins.h>
6 #include<stdio.h>
7 #include<stdlib.h>
8 #include<math.h>
9 //#include<syslib.h>
10 extern void autobaud(void);
11 sbit RS=P2^7;//串口时为CS
12 sbit RW=P2^1; //串口为SID
13 sbit E=P2^2; //串口为时钟SCLK
14 //D0---D7=P1
15 sbit up=P2^3;
16 sbit down=P2^4;
17 sbit enter=P2^5;
18 sbit retu=P2^6;
19
20 sbit TMDAT=P2^0; //温度数据引脚
21
22 /*sbit start=P2^7;
23 sbit run=P2^6;
24 sbit display=P3^3;
25 sbit close=P3^1;
26 */
27
28 #define BF 0x80 //用于检测LCM状态字中的Busy标识
29 typedef unsigned int Uint;
30 typedef unsigned char Uchar;
31
32
33
34 //汉字,直接可以写入字形
35 //第一屏
36
37
38 float ph;
39 char sph[6];
40 int b;//行号
41 int s;//屏号
42
43
44 //xiao=modf(ph,*iptr1);
45 //zheng=floor(ph);
46 unsigned char code chinese1[] = {"pH 值"};
47 const Uchar lengthCF1=3;
48 unsigned char code chinese2[] = {"溶解氧"};
49 const Uchar lengthCF2=3;
50 unsigned char code chinese3[] = {"氟离子"};
51 const Uchar lengthCF3=3;
52 unsigned char code chinese4[] = {"温度值"};
53 const Uchar lengthCF4=3;
54 //pH第二屏显示内容
55 unsigned char code chinese5[] = {"不校验"};
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 2
56 const Uchar lengthCF5=3;
57 unsigned char code chinese6[] = {"酸性校验"};
58 const Uchar lengthCF6=4;
59 unsigned char code chinese7[] = {"碱性校验"};
60 const Uchar lengthCF7=4;
61 unsigned char code chinese8[] = {"返回上级菜单"};
62 const Uchar lengthCF8=6;
63
64
65 //DO第二屏显示内容,氟离子第二屏内容和DO相同
66 //unsigned char code chinese5[] = {"不校验"};
67 //const Uchar lengthCF5=3;
68 unsigned char code chinese9[] = {"校验"};
69 const Uchar lengthCF9=2;
70 //unsigned char code chinese7[] = {"碱性校验"};
71 //const Uchar lengthCF7=4;
72 //unsigned char code chinese8[] = {"返回上级菜单"};
73 //const Uchar lengthCF8=6;
74
75
76 //T第二屏显示内容
77 //unsigned char code chinese5[] = {"不校验"};
78 //const Uchar lengthCF5=3;
79 unsigned char code chinese10[] = {"开始温度测量"};
80 const Uchar lengthCF10=6;
81 unsigned char code chinese11[] = {"℃"};
82 const Uchar lengthCF11=1;
83 //unsigned char code chinese7[] = {"碱性校验"};
84 //const Uchar lengthCF7=4;
85 //unsigned char code chinese8[] = {"返回上级菜单"};
86 //const Uchar lengthCF8=6;
87
88
89 const Uchar delay=250; //延时时间常数
90
91 const Uchar delay1=1; //延时时间常数
92 static void Wait1ms1(void)//延迟1 ms
93 {
94 1 Uchar cnt=0;
95 1 while (cnt<delay1) cnt++;
96 1 }
97
98 static void Wait1ms(void)//延迟1 ms
99 {
100 1 Uchar cnt=0;
101 1 while (cnt<delay) cnt++;
102 1 }
103 //延迟n ms
104 void WaitNms(int n)
105 {
106 1 Uchar i;
107 1 for(i=1;i<=n;i++)
108 1 Wait1ms();
109 1 Wait1ms();
110 1 Wait1ms();
111 1 Wait1ms();
112 1 }
113
114
115
116 //**************************************************************************//
117 //以下是并口时才开的
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 3
118 //读忙标志,
119 void RDBF(void)
120 {
121 1
122 1 Uchar temp;
123 1 RS=0; // RS=0
124 1 RW=1; // RW=1
125 1 WaitNms(3);
126 1 while(1)
127 1 {
128 2 P1=0xFF; //数据线为输入
129 2
130 2 E=1;
131 2
132 2 WaitNms(3);
133 2 temp=P1;
134 2 // E=1;
135 2 // E=1;
136 2 Wait1ms1();
137 2 // WaitNms(3);
138 2
139 2 E=0; // E=0
140 2
141 2 //printf("调用完判忙函数\r\n");
142 2 if ((temp&0x80)==0) break;
143 2 // break;}
144 2 }
145 1 }
146 //写数据到指令寄存器
147
148 void WRCommand(Uchar comm)
149 {
150 1 //printf("调用WRcommd函数\r\n");
151 1 RDBF();
152 1 //printf("调用WRcommd函数\r\n");
153 1 RW=0;
154 1 E=1;
155 1 WaitNms(3);
156 1 P1=comm;
157 1 Wait1ms1();
158 1 E=0;
159 1 //printf("调用完WRcommd函数\r\n");
160 1 }
161 //写数据到数据寄存器
162 void WRData(Uchar TEMP)
163 {
164 1 RDBF();
165 1 RS=1;
166 1 RW=0;
167 1 E=1;
168 1 WaitNms(3);
169 1
170 1
171 1 P1=TEMP;
172 1 Wait1ms1();
173 1
174 1
175 1 E=0;
176 1
177 1 }
178
179
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 4
180
181 //初始化LCD-8位接口
182 void LCDInit(void)
183 { // PSB=0; //串口
184 1 //PSB=1;//并口时选这个,上一行取消
185 1 //REST=1;
186 1 //REST=0;
187 1 // REST=1;
188 1
189 1 WRCommand(0x30); //基本指令集,8位并行
190 1
191 1 Wait1ms();
192 1 WRCommand(0x06); //启始点设定:光标右移
193 1 Wait1ms();
194 1
195 1 WRCommand(0x01); //清除显示DDRAM
196 1 Wait1ms();
197 1 WRCommand(0x0D); //显示状态开关:整体显示开,光标显示关,光标显示反白开
198 1
199 1 Wait1ms();
200 1 WRCommand(0x02); //地址归零
201 1
202 1 Wait1ms();
203 1 }
204
205 //显示数组字符串(显示半宽字型16*8点阵)
206 void ShowQQChar(Uchar addr,Uchar *english,Uchar count)
207 {
208 1 Uchar i;
209 1 WRCommand(addr); //设定DDRAM地址
210 1 for(i=0;i<count;)
211 1 {
212 2 WRData(english[i*2]);
213 2 Wait1ms();
214 2 WRData(english[i*2+1]);
215 2 Wait1ms();
216 2 i++;
217 2 }
218 1 }
219 //温度显示开始
220 /*----------------------------------------------------
221 * 整型转换成字符型子程序
222 *----------------------------------------------------*/
223 unsigned inttochar(unsigned int int1)
224 {
225 1 unsigned char ch1;
226 1 switch(int1)
227 1 {
228 2 case(0):ch1='0';break;
229 2 case(1):ch1='1';break;
230 2 case(2):ch1='2';break;
231 2 case(3):ch1='3';break;
232 2 case(4):ch1='4';break;
233 2 case(5):ch1='5';break;
234 2 case(6):ch1='6';break;
235 2 case(7):ch1='7';break;
236 2 case(8):ch1='8';break;
237 2 case(9):ch1='9';break;
238 2 default:break;
239 2 }
240 1 return(ch1);
241 1 }
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 5
242 /*----------------------------------------------------
243 * 整型转换成浮点型子程序
244 *----------------------------------------------------*/
245 float inttofloat(unsigned int int1)
246 {
247 1 float ch1;
248 1 switch(int1)
249 1 {
250 2 case(0):ch1=0;break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -