📄 text1.lst
字号:
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define outdat P2
6
7 sbit DQ0=P1^0; //定义变量DQ0与P1^0相同,即温度传感器数据总线DQ0与单片机P1.0连接
8 sbit DQ1=P1^1;
9
10 sbit cs2= P0^0;
11 sbit rw = P0^3;
12 sbit rs= P0^4;
13 sbit cs1= P0^1;
14 sbit e= P0^2;
15
16
17 /***********************************************************************************************/
18 /* 字形码 */
19 /***********************************************************************************************/
20 char code wen[32]={0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,
21 0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00};
22 char code du[32]={0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,
23 0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00};
24 char code zhuang[32]={0x04,0x02,0x01,0xFF,0x40,0x20,0x18,0x07,0x00,0x00,0x03,0x0C,0x30,0x60,0x20,0x00,
25 0x08,0x30,0x00,0xFF,0x20,0x20,0x20,0x20,0xFF,0x20,0xE1,0x26,0x2C,0x20,0x20,0x00};
26 char code tai[32]={0x00,0x60,0x39,0x01,0x00,0x3C,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00,
27 0x00,0x04,0x04,0x04,0x84,0x44,0x34,0x4F,0x94,0x24,0x44,0x84,0x84,0x04,0x00,0x00};
28 char code xu[32]={0x80,0x60,0x1F,0x00,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x03,0x01,0x00,
29 0x00,0x00,0xFC,0x04,0x04,0x14,0x14,0x35,0x56,0x94,0x54,0x34,0x14,0x04,0x04,0x00};
30 char code hao[32]={0x00,0x00,0x00,0x02,0x07,0x02,0x02,0x22,0x42,0x82,0x42,0x3E,0x00,0x00,0x00,0x00,
31 0x40,0x40,0x40,0x5F,0xD1,0x51,0x51,0x51,0x51,0x51,0x51,0x5F,0x40,0x40,0x40,0x00};
32
33
34 char code no[16]={0x00,0x7E,0x04,0x08,0x10,0x20,0x7E,0x00,0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00};
35 char code on[16]={0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00,0x00,0x7E,0x04,0x08,0x10,0x20,0x7E,0x00};
36 char code off[16]={0x00,0x7E,0x42,0x42,0x7E,0x00,0x7E,0x12,0x12,0x12,0x00,0x7E,0x12,0x12,0x12,0x00};
37
38
39 /*********************************************************************************/
40 /* 十个数字 */
41 /*********************************************************************************/
42 char code z[10][8]={0x00,0xFE,0x82,0x82,0x82,0xFE,0x00,0x00
43 ,0x00,0x00,0x44,0x7E,0x40,0x00,0x00,0x00
44 ,0x00,0xF2,0x92,0x92,0x92,0x9E,0x00,0x00
45 ,0x00,0x92,0x92,0x92,0x92,0xFE,0x00,0x00
46 ,0x00,0x30,0x28,0xA4,0xFE,0xA0,0x00,0x00
47 ,0x00,0x9E,0x92,0x92,0x92,0xF2,0x00,0x00
48 ,0x00,0xFE,0x92,0x92,0x92,0xF2,0x00,0x00
49 ,0x00,0x00,0x02,0x02,0xF2,0x1E,0x00,0x00
50 ,0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00
51 ,0x00,0x9E,0x92,0x92,0x92,0xFE,0x00,0x00};
52
53
54 /****************************************************************/
55 /* LCD显示程序 */
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 2
56 /****************************************************************/
57
58 void busy(uchar cs)
59 {
60 1 outdat=0xFF; //释放总线,以读取状态字
61 1 if(cs) //片2测忙
62 1 {
63 2 rs=0;
64 2 rw=1;
65 2 cs1=0;
66 2 cs2=1;
67 2 e=1;
68 2 while((outdat&0x80)==0x80); //buzy=1时,再读,等待至busy=0
69 2 e=0;
70 2 }
71 1 else
72 1 { //片1测忙
73 2 rs=0;
74 2 rw=1;
75 2 cs2=0;
76 2 cs1=1;
77 2 e=1;
78 2 while((outdat&0x80)==0x80);
79 2 e=0;
80 2 }
81 1 }
82 void com_w(uchar com,uchar cs) //写指令
83
84 {
85 1 busy(cs);
86 1 outdat=com;
87 1 rw=0;
88 1 e=1;
89 1 e=0;
90 1 }
91 void data_w(uchar dat, uchar cs) //写数据
92 {
93 1 busy(cs);
94 1 rs=1;
95 1 rw=0;
96 1 outdat=dat;
97 1 e=1;
98 1 e=0;
99 1 }
100
101 void lcd_init()
102 {
103 1 unsigned int i,j;
104 1 com_w(0x3e+1,0);//显示开关
105 1 com_w(0xc0+0,0);//修改显示起始行
106 1 //com_w(0xb8+0,0);//修改页地址
107 1 //com_w(0x40+0,0);//修改列地址
108 1 com_w(0x3e+1,1);
109 1 com_w(0xc0+0,1);
110 1 //com_w(0xb8+0,1);
111 1 //com_w(0x40+0,1);
112 1
113 1 for(i=0;i<8;i++) //lcd初始设置,所有点清零
114 1 {
115 2 com_w(0xb8+i,0);
116 2 com_w(0x40+0,0);
117 2 for(j=0;j<64;j++)
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 3
118 2 data_w(0x00,0) ;
119 2 }
120 1
121 1 for(i=0;i<8;i++)
122 1 {
123 2 com_w(0xb8+i,1);
124 2 com_w(0x40+0,1);
125 2 for(j=0;j<64;j++)
126 2 data_w(0x00,1) ;
127 2 }
128 1 }
129
130 void hz16x16(uchar hang ,uchar lie,char hz[32]) //汉字显示程序
131 {
132 1 unsigned char i;
133 1 if(lie<4)
134 1 {
135 2 com_w(0xb8+2*hang+1,0); //汉字1hang为2页,即点16行
136 2 com_w(0x40+16*lie,0); //汉字1lie为点16列
137 2 for(i=0;i<16;i++)
138 2 data_w(hz[i],0) ;
139 2 com_w(0xb8+2*hang,0);
140 2 com_w(0x40+16*lie,0);
141 2 for(i=16;i<32;i++)
142 2 data_w(hz[i],0) ;
143 2 }
144 1 else
145 1 {
146 2 com_w(0xb8+2*hang+1,1);
147 2 com_w(0x40+16*(lie-4),1);
148 2 for(i=0;i<16;i++)
149 2 data_w(hz[i],1) ;
150 2 com_w(0xb8+2*hang,1);
151 2 com_w(0x40+16*(lie-4),1);
152 2 for(i=16;i<32;i++)
153 2 data_w(hz[i],1) ;
154 2 }
155 1 }
156
157
158 void sz8x8(uchar hang,uchar lie ,uchar zihu[8]) //数字显示程序
159 {
160 1 int i;
161 1 if(lie<8)
162 1 {
163 2 com_w(0xb8+hang,0);
164 2 com_w(0x40+8*lie,0);
165 2 for(i=0;i<8;i++)
166 2 data_w(zihu[i],0) ;
167 2 }
168 1 else
169 1 {
170 2 com_w(0xb8+hang,1);
171 2 com_w(0x40+8*(lie-8),1);
172 2 for(i=0;i<8;i++)
173 2 data_w(zihu[i],1) ;
174 2 }
175 1 }
176
177 void zf8x16(uchar hang,uchar lie ,uchar zihu[16]) //字符显示程序
178 {
179 1 int i;
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 4
180 1 if(lie<4)
181 1 {
182 2 com_w(0xb8+hang,0);
183 2 com_w(0x40+16*lie,0);
184 2 for(i=0;i<16;i++)
185 2 data_w(zihu[i],0) ;
186 2 }
187 1 else
188 1 {
189 2 com_w(0xb8+hang,1);
190 2 com_w(0x40+16*(lie-4),1);
191 2 for(i=0;i<16;i++)
192 2 data_w(zihu[i],1) ;
193 2 }
194 1 }
195
196 /*****************************************************************/
197 /* 延时程序 */
198 /*****************************************************************/
199 void delay100m()
200 {
201 1 uchar i,j,k;
202 1 for(i=0;i<8;i++)
203 1 {
204 2 for(j=0;j<25;j++)
205 2 {
206 3 for(k=0;k<250;k++);
207 3 }
208 2 }
209 1 }
210
211 void delay15() //delay time is 15us
212 {
213 1 uchar i;
214 1 for(i=0;i<5;i++);
215 1 }
216
217 void delay60() //delay time is 60us
218 {
219 1 uchar i;
220 1 for(i=0;i<20;i++);
221 1 }
222
223 /*****************************************************************/
224 /* 温度测量程序 */
225 /*****************************************************************/
226
227 void reset(uchar dqhao) //初始化
228 {
229 1 uchar i;
230 1 // DQ=1;
231 1 if(dqhao)
232 1 DQ1=1;
233 1 else
234 1 DQ0=1;
235 1 // DQ=0;
236 1 if(dqhao)
237 1 DQ1=0;
238 1 else
239 1 DQ0=0;
240 1 for(i=0;i<9;i++)
241 1 {
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 5
242 2 delay60(); //----540us----
243 2 }
244 1 //DQ=1;
245 1 if(dqhao)
246 1 DQ1=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -