📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 08/30/2011 00:53:05 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg51.h"
2 #define uchar unsigned char
3 #define uint unsigned int
4 //LCD端口要根据实际的连接情况分配IO
5 #define busy 0x80
6 sbit RS=P3^7;
7 sbit RW=P3^6;
8 sbit E=P3^5;
9 sfr LCDData=0x80;//0x80--P0,0X90--P1,0xa0--P2,0xb0--P3
10 sbit da=P1^0;
11 sbit cs=P1^1;
12 sbit clk=P1^2;
13 uchar dis[5];
14 /************延时函数*/
15 void Delay(uint i)
16 {
17 1 while(i--);
18 1 }
19 /*写指令函数*/
20 void Write_Instruction(uchar x)
21 {
22 1 Delay(1000);
23 1 E=0;
24 1 RW=0;
25 1 RS=0;
26 1 LCDData=x;
27 1 E=1;
28 1 Delay(20);
29 1 E=0;
30 1 }
31 /*写单个数据的函数*/
32 void Write_Data(uchar x)
33 {
34 1 Delay(1000);
35 1 E=0;
36 1 RW=0;
37 1 RS=1;
38 1 E=1;
39 1 LCDData=x;
40 1 E=0;
41 1 }
42 /*清屏函数*/
43 void Cls(void)
44 {
45 1 Write_Instruction(0x01);
46 1 }
47 /*写入一串字符串函数*/
48 void Write_String(uchar x,uchar *p)
49 { Write_Instruction(x);
50 1 while(*p!=0x00)
51 1 {Write_Data(*p);
52 2 p++;
53 2 if (x++==0x8f)
54 2 {Write_Instruction(0xc0);}
55 2 }
C51 COMPILER V7.20 MAIN 08/30/2011 00:53:05 PAGE 2
56 1 }
57 /*初始化函数*/
58 void InitLCD(void)
59 {Write_Instruction(0x38);
60 1 Delay(2000);
61 1 Write_Instruction(0x0e);
62 1 Delay(2000);
63 1 Write_Instruction(0x06);
64 1 Delay(2000);
65 1 }
66 /**************/
67 void get_angue(void)
68 {
69 1 int value=0,value1=0;
70 1 uchar i;
71 1 clk=1;
72 1 cs=1;
73 1 cs=0;
74 1 for(i=0;i<16;i++)
75 1 {
76 2 value<<=1;
77 2 clk=0;
78 2 if(da)
79 2 {
80 3 value++;
81 3 }
82 2 cs=1;
83 2 if(!(value&0x4000))
84 2 {
85 3 value1=value&0x3f00;
86 3 value1>>=1;
87 3 value&=0x007f;
88 3 value=value+value1;
89 3 }
90 2 else
91 2 {
92 3 value=0;
93 3 }
94 2 value=value*2/10;
95 2 dis[0]=value/1000+0x30;
96 2 dis[1]=value%1000/100+0x30;
97 2 dis[2]=value%100/10+0x30;
98 2 dis[3]=0x2e;
99 2 dis[4]=value%10/1+0x30;
100 2 }
101 1
102 1 /**/
103 1 }
104 uint uzz9001(void)
105 {
106 1 uchar i,tem1;
107 1 uint t;
108 1 i=16;
109 1 t=0;
110 1
111 1 clk=1;
112 1 cs=1;
113 1 Delay(5);
114 1 cs=0;
115 1 Delay(2);
116 1 for(i=0;i<16;i++)
117 1 {
C51 COMPILER V7.20 MAIN 08/30/2011 00:53:05 PAGE 3
118 2 clk=0;
119 2 Delay(2);
120 2 clk=1;
121 2 t=t<<1;
122 2 if(da)
123 2 {
124 3 t=t+1;
125 3 }
126 2 Delay(2);
127 2 }
128 1 cs=1;
129 1 tem1=t;
130 1 t=((t&0x7f00)>>1)+(tem1&0x7f);
131 1 return(t);
132 1 }
133 void displaybit(uchar addr,uint d)
134 {
135 1 uchar i;
136 1 i=16;
137 1 Write_Instruction(addr);
138 1 while(i--)
139 1 {
140 2 if(d&0x8000)
141 2 Write_Data(0x31);
142 2 else
143 2 Write_Data(0x30);
144 2 d=d<<1;
145 2 }
146 1 }
147 /*主函数*/
148 void main(void)
149 {
150 1 uint angle;
151 1 // uchar j;
152 1 InitLCD();//初始化液晶屏
153 1 Write_String(0xc0,"Ang=");
154 1 while(1)
155 1 {
156 2 angle=uzz9001();
157 2 Write_Instruction(0xc4);
158 2 Write_Data(angle/10000+0x30);
159 2 Write_Data(angle%10000/1000+0x30);
160 2 Write_Data(angle%10000%1000/100+0x30);
161 2 Write_Data(angle%10000%1000%100/10+0x30);
162 2 Write_Data(angle%10000%1000%100%10+0x30);
163 2 Delay(0xffff);
164 2 Delay(0xffff);
165 2 Delay(0xffff);
166 2 displaybit(0x80,angle);
167 2 /* get_angue();
168 2 Write_Instruction(0xc4);
169 2 for(j=0;j<5;j++)
170 2 {
171 2 Write_Data(dis[j]);
172 2 Delay(20);
173 2 }*/
174 2 }
175 1 }
176
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.20 MAIN 08/30/2011 00:53:05 PAGE 4
CODE SIZE = 683 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 6
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 + -