📄 dd.lst
字号:
C51 COMPILER V8.02 DD 09/03/2008 22:02:49 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DD
OBJECT MODULE PLACED IN dd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 //#include<intrinsics.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5 /*#define s 8000000 //__delay_cycles(1*us)
6 #define ms 8000 //__delay_cycles(1*ms)
7 #define us 8 //__delay_cycles(1*us) */
8
9
10 /*12864 引脚定义-串行接口 */
11 /*#define CS=1 PORTC_Bit3=1 // asm("sbi 0x18,3") //CS设为高电平
12 #define CS=0 PORTC_Bit3=0 //asm("cbi 0x18,3") //CS设为低电平
13 #define SID=1 PORTC_Bit4=1 //asm("sbi 0x18,2") //SID设为高电平
14 #define SID=0 PORTC_Bit4=0 //asm("cbi 0x18,2") //SID设为低电平
15 #define SCLK=1 PORTC_Bit5=1 //asm("sbi 0x18,1") //SCLK设为高电平
16 #define SCLK=0 PORTC_Bit5=0 //asm("cbi 0x18,1") //SCLK设为低电平
17
18
19
20 /***********tlc5615*********************************/
21
22 /*#define DIN PORTD_Bit2
23 #define SCLK PORTD_Bit1
24 #define EN PORTD_Bit0 */
25
26
27 sbit CS=P3^0;//4
28 sbit SID=P3^1; //5
29 sbit SCLK=P3^3; //6管脚
30
31
32 void delay(uint z)
33 {
34 1 uint x,y;
35 1 for(x=0;x<z;x++)
36 1 for(y=0;y<121;y++);
37 1 }
38
39
40
41
42 //计算实际电压
43 /*
44 uint value=0, voltage=0; //电压单位为(mV)
45
46 uchar key_scan_biao_zhi=0, key=0;
47
48 uchar mo_shi_xian_shi=0,mode=0;
49
50
51 uint dac=102; */
52
53
54 /*---------------------12864开始-----------------------------------------------*/
55 /********************************************************************
C51 COMPILER V8.02 DD 09/03/2008 22:02:49 PAGE 2
56 函数作用:负责串行输出8个bit位
57 ********************************************************************/
58 void Write_8bits(uint W_bits)
59 {
60 1 uint i,Temp_data;
61 1 for(i=0; i<8; i++)
62 1 {
63 2 Temp_data = W_bits;
64 2 Temp_data <<= i;
65 2 if((Temp_data&0x80)==0) //bit7 is zero
66 2 {
67 3 SID=0;
68 3 delay(1);
69 3 SCLK=1;
70 3 delay(1);
71 3 delay(1);
72 3 SCLK=0;
73 3 delay(1);
74 3 SID=0;
75 3 }
76 2 else //bit7 is one
77 2 {
78 3 SID=1;
79 3 delay(1);
80 3 SCLK=1;
81 3 delay(1);
82 3 delay(1);
83 3 SCLK=0;
84 3 delay(1);
85 3 SID=0;
86 3 }
87 2 }
88 1 }
89 /*******************************************************************
90 函数作用:写一个字节的数据到12864液晶,包括指令和数据
91 说 明:RW=1,从液晶读数据到MCU;RW=0,写一个数据到液晶;
92 (一般RW都设为0,即只向液晶写数据,不读数据)
93 RS="1",写入的是数据;RS=0,写入的是指令;
94 一般模式:RW=0,RS=1;写数据
95 RW="0",RS=0;写指令
96 ********************************************************************/
97 void W_1byte(uchar RW, uchar RS, uchar W_data)
98 {
99 1 uint H_data,L_data,S_ID = 0xf8; //11111RWRS0
100 1 if(RW == 0)
101 1 {
102 2 S_ID &=~ 0x04;
103 2 }
104 1 else //if(RW==1)
105 1 {
106 2 S_ID |= 0X04;
107 2 }
108 1 if(RS == 0)
109 1 {
110 2 S_ID &=~ 0x02;
111 2 }
112 1 else //if(RS==1)
113 1 {
114 2 S_ID |= 0X02;
115 2 }
116 1 H_data = W_data;
117 1 H_data &= 0xf0; //屏蔽低4位的数据
C51 COMPILER V8.02 DD 09/03/2008 22:02:49 PAGE 3
118 1 L_data = W_data; //xxxx0000格式
119 1 L_data &= 0x0f; //屏蔽高4位的数据
120 1 L_data <<= 4; //xxxx0000格式
121 1 CS=1;
122 1 Write_8bits(S_ID); //发送S_ID
123 1 Write_8bits(H_data); //发送H_data
124 1 Write_8bits(L_data); //发送L_data
125 1 SID=1;
126 1 CS=0;
127 1 }
128
129 /******************************************************************/
130 void LCD_Init(void)
131 {
132 1 uchar cmd;
133 1 cmd=0x30; //功能设置 8位数据,基本指令
134 1 W_1byte(0,0,cmd);
135 1 delay(2);
136 1 cmd=0x30; //功能设置 8位数据,基本指令
137 1 W_1byte(0,0,cmd);
138 1 delay(2);
139 1 cmd=0x0C; //显示状态 ON,游标OFF,反白OFF
140 1 W_1byte(0,0,cmd); //写指令
141 1 delay(2);
142 1 cmd=0x01; //清除显示
143 1 W_1byte(0,0,cmd); //写指令
144 1 delay(2);
145 1 /*cmd=0x02; //地址归位
146 1 W_1byte(0,0,cmd); //写指令
147 1 delay(2);
148 1 /*cmd=0x80; //设置DDRAM地址
149 1 W_1byte(0,0,cmd); //写指令
150 1 delay(2); //延时 */
151 1 }
152 /*----------------------------------12864结束--------------------------------------*/
153
154 /*void da5615(uint Data)
155 {
156 unsigned char i;
157
158 EN=1 ;
159 EN=0;
160 //SCLK=0 ;
161 for (i=0;i<12;i++)
162 {SCLK=0;
163 if(Data&0x8000)
164 DIN=1;
165 else
166 DIN=0;
167 Data<<=1;
168 delay(1);
169 SCLK=1;
170
171 }
172 EN=0;
173 EN=1;
174 } */
175
176
177 /*--------------------------------------键盘开始--------------------------------------*/
178 /*
179 //adc转换初始化
C51 COMPILER V8.02 DD 09/03/2008 22:02:49 PAGE 4
180 void adc_init(void)
181 {
182 ADCSRB |=0x00;//连续转换模式
183 ADMUX = 0x42; //参考电压为VACC ADC2通道输入 转换结果右对齐
184 ADCSRA |= 0xe6;// 启动ADC 先转化一次 64分频
185
186 }
187
188 void adc_calc(void)
189 {
190 value=ADCL; //首先读低位
191 value|=(uint)ADCH << 8; //然后读高位
192 voltage=(value*5.0/1024)*1000;
193
194 mynew3[0]= voltage/1000;
195 mynew3[1]=( voltage/100)%10;
196 mynew3[2]=( voltage/10)%10;
197 mynew3[3]= voltage%10;
198 }
199
200
201 void key_value(void)
202 {
203
204 key_scan_biao_zhi=1;
205 __delay_cycles(4*ms);
206 __delay_cycles(4*ms);
207 __delay_cycles(4*ms);
208 __delay_cycles(4*ms);
209 adc_calc();
210
211
212 if(voltage>950&&voltage<1150) { key=0x01;}//1
213 if(voltage>1150&&voltage<1350){ key=0x02;}//2
214 if(voltage>2350&&voltage<2550){ key=0x03;}//3
215 if(voltage>750&&voltage<950) { key=0x04;}//4
216 if(voltage>1350&&voltage<1550){ key=0x05;}//5
217 if(voltage>2200&&voltage<2350){ key=0x06;}//6
218 if(voltage>550&&voltage<750) { key=0x07;}//7
219 if(voltage>1550&&voltage<1680){ key=0x08;}//8
220 if(voltage>2050&&voltage<2200){ key=0x09;}//9
221 if(voltage>350&&voltage<550) { key=0x0a;}//0
222 if(voltage>1680&&voltage<1850){ key=0x0b;}//点
223 if(voltage>1850&&voltage<2050){ key=0x0c;}//确定
224 if(voltage>2550&&voltage<2750){ key=0x0d;}//存储
225 if(voltage>2750&&voltage<2950){ key=0x0e;}//读出
226 if(voltage>2950&&voltage<3120){ key=0x0f;}//-
227 if(voltage>3120&&voltage<3300){ key=0x010;}//+
228 }
229 void key_scan(void)
230 {
231
232 switch(key)
233 { case 0x01: { dac += 5; dac<<=6; da5615(dac); dac >>=6; break; }
234 case 0x02: { dac -= 5; dac<<=6; da5615(dac); dac >>=6; break; }
235 case 0x03: { break; }
236 case 0x04: { break; }
237 case 0x05: { break; }
238 case 0x06: { break; }
239 case 0x07: { break; }
240 case 0x08: { break; }
241 case 0x09: { break; }
C51 COMPILER V8.02 DD 09/03/2008 22:02:49 PAGE 5
242 case 0x0a: { break; }
243 case 0x0b: { break; }
244 case 0x0c: { break; }
245 case 0x0d: { break; }
246 case 0x0e: { break; }
247 case 0x0f: { break; }
248 case 0x10: { break; }
249 }
250
251 key_scan_biao_zhi=0;
252 key=0;
253
254 }
255
256 void key_working(void)
257 {
258 adc_calc();
259 if(voltage<4500) key_value();
260 if(voltage>4500&&key_scan_biao_zhi==1) key_scan();
261
262 } */
263 /*----------------------------------键盘结素----------------------------------------*/
264
265
266
267
268
269
270
271
272 /*---------倒计时显示---------*/
273
274
275
276 /*------主函数---------*/
277 void main()
278 {
279 1 CS=0;
280 1 SCLK=0;
281 1 SID=0;
282 1 LCD_Init();
283 1
284 1 while(1){
285 2 W_1byte(0,0,0x80);
286 2 delay(5);
287 2
288 2 W_1byte(0,1,0x31);
289 2 delay(5);
290 2
291 2 // lcdmode0();
292 2 } }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 283 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V8.02 DD 09/03/2008 22:02:49 PAGE 6
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -