📄 yy.lst
字号:
C51 COMPILER V7.06 YY 08/28/2007 10:21:20 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE YY
OBJECT MODULE PLACED IN yy.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE yy.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<stdio.h>
2 #include<reg51.h>
3 #include<intrins.h>
4 #include <string.h>
5 #include <math.h>
6 sbit RS=P1^2;
7 sbit RW=P1^3;
8 sbit E=P1^4;
9 sbit buz=P2^7;
10 unsigned char XPos;
11 unsigned char YPos;
12 #define dataport P0 //LCD数据端口
13
14 #define busy 0x80 //D7忙标志
15 #define nop() _nop_()
16 #define uchar unsigned char
17 unsigned int q1,q2,q3,q4,q5;q6;
18 char m[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
19 char code H[]={"H:"};
20 char code L[]={"L:"};
21 char code D[]={"C:"};
22 char code W[]={"T:"};
23 unsigned char b0=0x31,b1=0x30,b2=0x30,b3=0x30,b4=0x30,b5=0x30; //b0--通道数,b1,b2,b3,b4,b5--上限温度值
24 unsigned char d0=0x30,d1=0x30,d2=0x30,d3=0x30,d4=0x30; //d0,d1,b2,b3,b4--上限温度值
25 unsigned char Rkey=0,p=1;
26
27 float CH1=0,CH2=0,CH3=0,CH4=0, CH5=0,CH6=0, CH7=0,CH8=0;
28 float CL1=0,CL2=0,CL3=0,CL4=0, CL5=0,CL6=0, CL7=0,CL8=0;
29
30 unsigned char Key();
31
32
33 //////////////////////////////////////////////////////延时
34 void delay5Ms(void)
35 {
36 1 unsigned int i=5552;
37 1 while(i--);
38 1 }
39
40 void delay(unsigned int y)
41 {
42 1 while(y--);
43 1 }
44
45 void delayP(unsigned int k)
46 {
47 1 while(k--)
48 1 {
49 2 Rkey=Key();
50 2 if((Rkey==2)||(Rkey==1)||(Rkey==4))
51 2 break;
52 2 }
53 1 }
54 //*********************************************************
55 //读忙状态函数
C51 COMPILER V7.06 YY 08/28/2007 10:21:20 PAGE 2
56 //功能:先检测忙状态,D7=1,LCD忙
57 void checkbusy(void)
58 {
59 1 dataport = 0xff; //P0口写1
60 1 RS=0; //选择指令寄存器
61 1 RW=1; //读模式
62 1 nop();
63 1 E=1;
64 1 nop();
65 1 nop();
66 1 while(dataport & busy);
67 1 nop();
68 1 E=0;
69 1 }
70
71 //写入IR寄存器命令函数
72 //功能:向LCD写入命令字符CMD
73 //若ac==1,检测忙信号
74 void writeIR( char CMD,char mang)
75 {
76 1 if(mang)
77 1 checkbusy();
78 1 RS=0; //选择指令寄存器
79 1 RW=0; //选择写模式
80 1 nop();
81 1 dataport=CMD; //将命令送数据端口
82 1 nop();
83 1 E=1; //使能LCD
84 1 nop(); //将D0-D7数据送入IR
85 1 nop();
86 1 E=0; //禁止LCD
87 1 }
88
89 //写入DDR显示数据寄存器函数
90 //功能:在当前光标显示字符
91 void writeDDR(char c) //void writeDDR(char c)
92 {
93 1 checkbusy();
94 1 RS=1; //选择数据寄存器
95 1 RW=0;
96 1 nop();
97 1 dataport=c; //将显示字符送给数据端口
98 1 nop();
99 1 E=1; //写使能
100 1 nop();
101 1 nop();
102 1 E=0;
103 1 }
104
105 //LCD初始化
106 //功能:向LCD写不同的命令,
107 void LCDreset()
108 {
109 1 writeIR(0x38,0); //writeIR(0x38,0); //功能设置命令,8位接口,显示两行,
110 1 delay5Ms();
111 1 writeIR(0x38,0); //writeIR(0x38,0); //功能设置命令,8位接口,显示两行,
112 1 delay5Ms();
113 1 writeIR(0x38,0); //writeIR(0x38,0); //功能设置命令,8位接口,显示两行,
114 1 delay5Ms();
115 1
116 1 writeIR(0x38,0);
117 1 writeIR(0x38,1); //writeIR(0x38,1);
C51 COMPILER V7.06 YY 08/28/2007 10:21:20 PAGE 3
118 1 writeIR(0x08,1);//显示开关控制
119 1 writeIR(0x01,1);//清屏
120 1 writeIR(0x06,1);//输入方式设置,完成一个字符发送后。地址指针AC加1
121 1 writeIR(0x0c,1); //显示光标,
122 1 }
123
124 //光标定位函数
125 void LCDPos(uchar XPos, uchar YPos)
126 {
127 1 uchar tmp;
128 1 XPos&=0x0f;
129 1 YPos&=0x01;
130 1 tmp=XPos;
131 1 if(YPos==1)
132 1 tmp+=0xc0;
133 1 else
134 1 tmp+=0x80;
135 1 writeIR(tmp,0);
136 1 }
137
138 //在指定的行列显示字符函数
139 void writechar( uchar XPos, uchar YPos,char c)
140 {
141 1 LCDPos(XPos,YPos);
142 1 writeDDR(c);
143 1 }
144
145 //显示字符串函数
146 void writestring(uchar XPos, uchar YPos, char s[])
147 {
148 1 uchar p=0;
149 1 while(p<2)
150 1 {
151 2 writechar(XPos,YPos,s[p]);
152 2 p++;
153 2 XPos++;
154 2 }
155 1 }
156
157 //********************************************************************************
158
159
160
161 void write(void)
162 {
163 1 writechar(2,0,b1); //上限温度值
164 1 writechar(3,0,b2);
165 1 writechar(4,0,b3);
166 1 writechar(5,0,b4);
167 1 writechar(6,0,0x2e);
168 1 writechar(7,0,b5);
169 1 writechar(10,0,d0); //下限温度
170 1 writechar(11,0,d1);
171 1 writechar(12,0,d2);
172 1 writechar(13,0,d3);
173 1 writechar(14,0,0x2e);
174 1 writechar(15,0,d4);
175 1 writechar(3,1,b0); //通道数
176 1 }
177
178 //*******按键跳转程序*****
179 unsigned char Key()
C51 COMPILER V7.06 YY 08/28/2007 10:21:20 PAGE 4
180 {
181 1 unsigned char key,i=0;
182 1 key=P2;
183 1 key=key&0x0f; //读键值
184 1 if(key!=0x0f) //有键按下?进入键值判断
185 1 {
186 2 while(1)
187 2 {
188 3 delay(10000); //延时
189 3 key=P2;
190 3 key=key&0x0f;
191 3 switch(key)
192 3 {
193 4
194 4 case 0x0e: while(1) //有键按下?
195 4 {
196 5 key=P2;
197 5 key=key&0x0f;
198 5 if(key==0x0f) ////没有键按下就跳出
199 5 break;
200 5 }
201 4 i=1;break; //加 P2.0口底电平
202 4 case 0x0b: while(1)
203 4 { key=P2;
204 5 key=key&0x0f;
205 5 if(key==0x0f)
206 5 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -