📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 04/11/2009 10:23:23 PAGE 1
C51 COMPILER V8.08, 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 /*********显示的结果为d=**** c (范围:005-070 cm)*******/
2 /******P3^0输出38KHZ方波;P3.2接收返回信号*************/
3 #include <reg52.h>
4 #include <intrins.h>
5 #define ulong unsigned long int
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 sbit RS = P3^5;//RS=H 数据输入;RS=L时 指令输入;
10 sbit RW = P3^6;//RW=H 读数据 ;RW=L时 写数据 ;
11 sbit E = P3^7;//E =H->L 信号使能;
12 sbit led=P3^4;
13 extern void cs_t(void);
14 extern void delay(uint);
15 data uchar testok;
16 float speed=0; // 声音速度
17 unsigned long time;
18
19 uchar disp_buf[4]={0,0,0,0};//显示缓冲区
20 uchar code dis_code[]={"Distance is:"};
21 /***********显示延时函数***************/
22 void delay_a(uchar z)
23 {
24 1 uint i,j;
25 1 for(i=z;i>0;i--)
26 1 for(j=110;j>0;j--);
27 1 }
28
29 void Delay_MS(unsigned char no)
30 {
31 1 unsigned char i,j; //延时参数
32 1 for(; no>0; no--)
33 1 {
34 2 for(i=0; i<100; i++)
35 2 for(j=0; j<100; j++);
36 2 }
37 1 }
38 /********************************************************************\
39 |* 函 数 名: write_command(uchar tempdata) *|
40 |* 功能描述: 将数据码写入LCD数据寄存器 *|
41 \********************************************************************/
42 void write_command(uchar tempdata)
43 {
44 1 RW=0;
45 1 RS=0; //RS=0/RW=0 时写指令;
46 1 delay_a(5);
47 1 P1=tempdata;
48 1 delay_a(5);
49 1 E=1;
50 1 delay_a(5);
51 1 E=0;
52 1 }
53 /********************************************************************\
54 |* 函 数 名: void write_data(uchar tempdata) *|
55 |* 功能描述: 写LCD1602使能程序 *|
C51 COMPILER V8.08 MAIN 04/11/2009 10:23:23 PAGE 2
56 \********************************************************************/
57 void write_data(uchar tempdata)
58 {
59 1 RW=0;
60 1 RS=1; //RS=1/RW=0 时写数据;
61 1 delay_a(5);
62 1 P1=tempdata;
63 1 delay_a(5);
64 1 E=1;
65 1 delay_a(5);
66 1 E=0;
67 1 }
68 /*********液晶显示距离函数*************/
69 void display(uint dis_data)
70 {
71 1 uint i;
72 1 disp_buf[3] =(dis_data % 10);
73 1 dis_data /= 10;
74 1 disp_buf[2] =(dis_data % 10);
75 1 dis_data /= 10;
76 1 disp_buf[1] =(dis_data % 10);
77 1 disp_buf[0] =(dis_data / 10);
78 1 write_command(0xc0+2);
79 1 for(i=0;i<4;i++)
80 1 {
81 2 write_data(0x30+disp_buf[i]);
82 2 delay_a(9);
83 2 }
84 1 }
85 /********************* 超声波接收程序(外部中断0)*******************/
86 void cs_r(void) interrupt 0 using 1
87 {
88 1 TR0 = 0;
89 1 ET0 = 0;
90 1 EX0 = 0;
91 1 testok = 1;
92 1 }
93
94 /********************* 超时清除程序(内部中断T0)********************/
95 void overtime(void) interrupt 1 using 1
96 {
97 1 EX0 = 0;
98 1 TR0 = 0;
99 1 ET0 = 0;
100 1 testok = 2;
101 1 }
102 void init()
103 {
104 1 uint i;
105 1 time=0;
106 1 speed = 332 + 0.607*15.0;//声速
107 1
108 1 write_command(0x01);
109 1 write_command(0x38);
110 1 write_command(0x0C);
111 1 write_command(0x06);
112 1 write_command(0x80);
113 1 for(i=0;i<12;i++)
114 1 {
115 2 write_data(dis_code[i]);//字符显示
116 2 delay_a(5);
117 2 }
C51 COMPILER V8.08 MAIN 04/11/2009 10:23:23 PAGE 3
118 1 write_command(0xc0);
119 1 write_data(0x64);
120 1 delay_a(4);
121 1 write_data(0x3d);
122 1 delay_a(4);
123 1 display(time);
124 1 write_command(0xc0+6);
125 1 write_data(0x63);
126 1 delay_a(4);
127 1 write_data(0x6d);
128 1 delay_a(4);
129 1
130 1 TMOD=0x11;
131 1 EA=1;
132 1 led=1;
133 1 }
134 //=========================主函数============================//
135 void main(void)
136 {
137 1 init();
138 1 while(1)
139 1 {
140 2 cs_t();
141 2 delay(1);
142 2 testok = 0;
143 2 EX0 = 1;
144 2 ET0 = 1;
145 2 //IT0=1;//下降沿触发;
146 2 while(!testok)
147 2 if(testok==1)
148 2 { time = TH0;
149 3 time = (time<<8)|TL0; // uS
150 3 time *= speed/2; // *速度(m/S) / 2
151 3 time /= 10000; // /1000000(m)*100(cm)
152 3 led=0;
153 3 }
154 2 else
155 2 {led=1;}
156 2 display(time);//显示时间
157 2 Delay_MS(18);
158 2
159 2 }
160 1 }
161
162
163
164
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 554 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 2
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 + -