📄 lcddis.lst
字号:
C51 COMPILER V8.05a LCDDIS 09/18/2008 22:43:47 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LCDDIS
OBJECT MODULE PLACED IN LCDDIS.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCDDIS.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /************************
2 ADC0832实验
3 ************************/
4 #include <intrins.h>
5 #include <reg51.h>
6
7 #define ulong unsigned long
8 #define uint unsigned int
9 #define uchar unsigned char
10
11 sbit ADCS =P3^0; //ADC0832 chip seclect
12 sbit ADDI =P3^2; //ADC0832 data in
13 sbit ADDO =P3^2; //ADC0832 data out
14 sbit ADCLK =P3^1; //ADC0832 clock signal
15 unsigned char readad[2];
16 unsigned char tem;
17
18 void Adc0832(unsigned char channel);
19
20 /************
21 读ADC0832函数
22 ************/
23
24 //采集并返回
25 void Adc0832(unsigned char channel)
26 {
27 1 uchar i=0;
28 1 uchar j;
29 1 uint dat=0;
30 1 uchar ndat=0;
31 1
32 1 if(channel==0)channel=2;
33 1 if(channel==1)channel=3;
34 1 ADDI=1;
35 1 _nop_();
36 1 _nop_();
37 1 ADCS=0;//拉低CS端
38 1 _nop_();
39 1 _nop_();
40 1 ADCLK=1;//拉高CLK端
41 1 _nop_();
42 1 _nop_();
43 1 ADCLK=0;//拉低CLK端,形成下降沿1
44 1 _nop_();
45 1 _nop_();
46 1 ADCLK=1;//拉高CLK端
47 1 ADDI=channel&0x1;
48 1 _nop_();
49 1 _nop_();
50 1 ADCLK=0;//拉低CLK端,形成下降沿2
51 1 _nop_();
52 1 _nop_();
53 1 ADCLK=1;//拉高CLK端
54 1 ADDI=(channel>>1)&0x1;
55 1 _nop_();
C51 COMPILER V8.05a LCDDIS 09/18/2008 22:43:47 PAGE 2
56 1 _nop_();
57 1 ADCLK=0;//拉低CLK端,形成下降沿3
58 1 ADDI=1;//控制命令结束
59 1 _nop_();
60 1 _nop_();
61 1 dat=0;
62 1 for(i=0;i<8;i++)
63 1 {
64 2 dat|=ADDO;//收数据
65 2 ADCLK=1;
66 2 _nop_();
67 2 _nop_();
68 2 ADCLK=0;//形成一次时钟脉冲
69 2 _nop_();
70 2 _nop_();
71 2 dat<<=1;
72 2 if(i==7)dat|=ADDO;
73 2 }
74 1 for(i=0;i<8;i++)
75 1 {
76 2 j=0;
77 2 j=j|ADDO;//收数据
78 2 ADCLK=1;
79 2 _nop_();
80 2 _nop_();
81 2 ADCLK=0;//形成一次时钟脉冲
82 2 _nop_();
83 2 _nop_();
84 2 j=j<<7;
85 2 ndat=ndat|j;
86 2 if(i<7)ndat>>=1;
87 2 }
88 1 ADCS=1;//拉低CS端
89 1 ADCLK=0;//拉低CLK端
90 1 ADDO=1;//拉高数据端,回到初始状态
91 1
92 1 readad[0]=dat;
93 1 //if (tem==0) tem=dat;
94 1
95 1 //readad[1]=ndat
96 1 //dat<<=8;
97 1 //dat|=ndat;
98 1 //return(dat); //return ad data
99 1 }
100
101
102
103
104 /////////////lcd variable/////////////////
105 #include <absacc.h>
106
107 #define REG0 XBYTE[0x0000]
108 #define REG1 XBYTE[0x0001]
109 #define REG2 XBYTE[0x0002]
110 #define REG3 XBYTE[0x0003]
111
112 unsigned char bdata busyflag;
113 unsigned char dat,datn,count;
114
115 unsigned char word1[16]={"CH = "};
116 code unsigned char word2[16]={" by LiXueli "};
117 code unsigned char word3[16]={"www.bitc.edu.cn!"};
C51 COMPILER V8.05a LCDDIS 09/18/2008 22:43:47 PAGE 3
118 code unsigned char word4[16]={"bitclxl@126.com!"};
119 code unsigned char word5[16]={" Wellcome To "};
120 code unsigned char word6[16]={" Proteus Tools!"};
121 code unsigned char word7[16]={"This Programme "};
122 code unsigned char word8[16]={" by LiXueli "};
123
124 sbit busyflag_7=busyflag^7;
125 sbit p10=P1^0;
126 sbit p11=P1^1;
127 sbit p12=P1^2;
128 /////////////////end of lcd variable////////////
129 ///////////////start of lcd 1602/////////////////
130 void busy()
131 {
132 1 do
133 1 {
134 2 busyflag=REG1;
135 2 }while(busyflag_7);
136 1 }
137
138 void wrc(unsigned char wcon)
139 {
140 1 busy();
141 1 REG0=wcon;
142 1 }
143
144 void wrd(unsigned char wdat)
145 {
146 1 busy();
147 1 REG2=wdat;
148 1 }
149
150 void rdd()
151 {
152 1 busy();
153 1 dat=REG3;
154 1 }
155
156 void lcdint()
157 {
158 1 wrc(0x38);
159 1 wrc(0x01);
160 1 wrc(0x06);
161 1 wrc(0x0c);
162 1 }
163 void wrn(unsigned char word[])
164 {
165 1 unsigned char i;
166 1 for(i=0;i<16;i++)
167 1 {
168 2 wrd(word[i]);
169 2 }
170 1 }
171 //////////////end of lcd 1602///////////////////////
172 ////////////// data process//////////////////////
173 void Tempprocess()
174 {
175 1 float tt;
176 1
177 1 tt=(readad[0])/255.0*5.0;
178 1 word1[4]=(unsigned char )(tt);
179 1 word1[5]='.';
C51 COMPILER V8.05a LCDDIS 09/18/2008 22:43:47 PAGE 4
180 1 word1[6]=(unsigned char )(tt*10-word1[4]*10);
181 1 word1[7]=(unsigned char )(tt*100-word1[4]*100-word1[6]*10);
182 1 word1[8]=(unsigned char )(tt*1000-word1[4]*1000-word1[6]*100-word1[7]*10);
183 1 word1[9]=(unsigned char )(tt*10000-word1[4]*10000-word1[6]*1000-word1[7]*100-word1[8]*10);
184 1 word1[4]+=48;
185 1 word1[6]+=48;
186 1 word1[7]+=48;
187 1 word1[8]+=48;
188 1 word1[9]+=48;
189 1 word1[10]='V';
190 1 }
191 ///////////////////// end of process/////////////
192
193 void main()
194 {
195 1 lcdint();//初始化液晶
196 1 wrc(0x80);
197 1 wrn(word5);
198 1 wrc(0xc0);
199 1 wrn(word6);
200 1
201 1 while(1)
202 1
203 1 //if(p10==0) //判断P1.0是否按下
204 1 {
205 2
206 2 Adc0832(1);
207 2 Tempprocess();
208 2 wrc(0xc0);
209 2 word1[2]='1';
210 2 wrn(word1);
211 2 Adc0832(0);
212 2 Tempprocess();
213 2 wrc(0x80);
214 2 word1[2]='0';
215 2 wrn(word1);
216 2 }
217 1
218 1
219 1 }
220
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 934 ----
CONSTANT SIZE = 112 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 7
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 + -