📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 06/08/2007 16:16:19 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.obj
COMPILER INVOKED BY: D:\常用软件\keil\C51\BIN\C51.EXE ..\电子设计竞赛\接收\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main
-.lst) OBJECT(.\main.obj)
stmt level source
1 #include<reg52.h>
2 #define uchar unsigned char
3
4 #define led_data_out P1//八位开关
5 void zhuye(void);
6 void set_frequency(void);
7 uchar hh=0;
8 uchar code *frequency0[10]={"39.50M","39.60M","39.70M","39.80M","39.90M","40.00M","40.10M","40.20M","40.30
-M"," "};//发射
9 uchar code *frequency1[10]={"45.50M","45.60M","45.70M","45.80M","45.90M","46.00M","46.10M","46.20M","46.30
-M"," "};//接收
10 int code fry0[9]={3950,3960,3970,3980,3990,4000,4010,4020,4030};//发射
11 int code fry1[9]={4550,4560,4570,4580,4590,4600,4610,4620,4630};//接收
12 void MC145162_Reset(unsigned int Ctrl_Data,unsigned long int Ref_Data,unsigned int Tx_Count,unsigned int R
-x_Count);
13 void data_display(void);
14 void message(void);
15 void adc(void);
16 void led(void);
17 uchar control_data;
18 uchar led_data;
19 int xdata ad0_data[2];
20 int xdata ad1_data[2];
21 uchar cd[32]={' ',' '};
22 /*说明:功能显示函数 *********************************************************
23 ****** LCD_set_xy ******** //显示光标定位 ***********************************
24 ****** LCD_write_char ***** //在指定位置显示字符 ******************************
25 ****** transfer_display *** //显示连续字串 ***********************************
26 ****** LCD_Write_String *** //写入字符串 ************************************
27 ****** FLOAT_NUM_Display ** //显示浮点型 ************************************
28 ****** INT_NUM_Display **** //显示整数 *************************************
29 ****** HEX_NUM_Display **** //显示十六进制 **********************************
30 ******为了避免程序"死等",故在功能函数中尽量避免调用Delay函数******************/
31
32
33 /***************************LCD Part*******************************************/
34 //#define uchar unsigned char
35
36 #define LCDIO P0 //LCD数据口
37
38 #define LINE1 0 //1602第一行
39
40 #define LINE2 1 //1602第二行
41
42 #define LINE1_HEAD 0x80 //第一行首地址
43
44 #define LINE2_HEAD 0xC0 //第二行首地址
45
46
47 /****************************LCD与单片机的接口*********************************/
48
49 sbit LCD1602_RS=P2^2; //指令/数据选择,1选择数据,0选择指令
50
51 sbit LCD1602_RW=P2^1; //读写选择,1读出,0写入
C51 COMPILER V7.06 MAIN 06/08/2007 16:16:19 PAGE 2
52
53 sbit LCD1602_EN=P2^0; //写使能。高有效,下降沿时锁定数据
54
55 sbit LCD1602_busy=LCDIO^7; //判忙标志
56
57 /********************数组定义区************************************************/
58
59 uchar code CHR[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','.'};
60
61 uchar xdata LCDDisplaybuffer[32]={0};
62
63 /******************全局变量定义区**********************************************/
64
65 unsigned long frequency; //显示整型定义
66
67 float dd; //显示浮点型定义]
68
69 uchar zhi=0x30; //数字0的代码值
70
71 long int Num;
72
73 uchar Bite;
74
75 /******************函数声明区**************************************************/
76
77 void LCD_en_command(uchar command); //写指令
78
79 void LCD_en_dat(uchar temp); //写数据
80
81 void LCD_set_xy( uchar x, uchar y );//设置显示地址
82
83 void LCD_write_char( uchar x,uchar y,uchar dat);//显示字符
84
85 void LCD_write_string(uchar X,uchar Y,uchar *s);//显示字符串
86
87 //void transfer_display(uchar zhi,uchar x,uchar y);//显示滚动的字符
88
89 void LCD_init(void); //LCD初始化
90
91 void LCD_busy(); //判忙
92
93 void FLOAT_NUM_Display(float dd,uchar x,uchar y); //显示浮点型
94
95 //void INT_NUM_Display(unsigned int Num,uchar x,uchar y);//显示整型
96
97 //void HEX_NUM_Display(unsigned long Num,uchar Bite,uchar x,uchar y);//显示十六进制
98
99 void delay_nms(unsigned int n);//延时功能
100
101 /*******************nms延时函数************************************************/
102
103
104 void delay_nms(unsigned int n)
105 {
106 1 unsigned int i=0,j=0;
107 1 for (i=n;i>0;i--)
108 1 for (j=0;j<1140;j++)
109 1 {;};
110 1
111 1 }
112
113
C51 COMPILER V7.06 MAIN 06/08/2007 16:16:19 PAGE 3
114
115 /*******************************************************************************
116 /***************LCD模块的子程序*************************************************
117 ****************要注意判忙程序的写法和在指令数据函数里放的顺序,不可调换********/
118
119 //判忙程序
120 void LCD_busy()
121 {
122 1 LCDIO=0xff; //置p0口为输入状态
123 1 LCD1602_RS=0;
124 1 LCD1602_RW=1;
125 1 LCD1602_EN=1;
126 1 while(LCD1602_busy);
127 1 LCD1602_EN=0;
128 1 }
129
130 //写入指令代码,即数据的地址
131 void LCD_en_command(uchar command)
132 {
133 1
134 1 LCDIO=command;
135 1 LCD1602_RS=0;
136 1 LCD1602_RW=0;
137 1 LCD1602_EN=0;
138 1 LCD_busy();
139 1 LCD1602_EN=1;
140 1 }
141
142
143 //写入要显示的数据
144 void LCD_en_dat(uchar dat)
145 {
146 1 LCDIO=dat;
147 1 LCD1602_RS=1;
148 1 LCD1602_RW=0;
149 1 LCD1602_EN=0;
150 1 LCD_busy();
151 1 LCD1602_EN=1;
152 1 }
153
154 /*********************************************************************************
155 ** 函数名:void LCD_set_xy( uchar x, uchar y )************************************
156 ** 功能:设置LCD显示的起始位置****************************************************
157 ** 入口参数:uchar x,uchar y (x:0-15;y:0-1;)************************************
158 ********************LCD第一行显示寄存器地址:0X80-0X8F****************************
159 ********************LCD第一行显示寄存器地址:0XC0-0XCF****************************
160 *********** uchar x,uchar y(字符显示的坐标)************************************
161 ** 出口参数:无 ******************************************************************
162 **********************************************************************************/
163
164
165 void LCD_set_xy( uchar x, uchar y )
166 {
167 1
168 1 uchar address;//光标位置
169 1 if (y==LINE1)
170 1 address=LINE1_HEAD+x;
171 1 else
172 1 address=LINE2_HEAD+x;
173 1
174 1 LCD_en_command(address);
175 1 }
C51 COMPILER V7.06 MAIN 06/08/2007 16:16:19 PAGE 4
176
177
178
179 /*********************************************************************************
180 ** 函数名:void LCD_write_char( uchar x,uchar y,uchar dat)************************
181 ** 功能:在指定位置显示单字符(最多32个字符)*************************************
182 ** 入口参数:uchar dat (直接输入需要显示的字符,例如'1','a'等等)***************
183 *********** uchar x,uchar y(字符显示的坐标)************************************
184 ** 出口参数:无 ******************************************************************
185 **********************************************************************************/
186
187 void LCD_write_char( uchar x,uchar y,uchar dat)
188 {
189 1
190 1 LCD_set_xy( x, y );
191 1 LCD_en_dat(dat);
192 1
193 1 }
194
195
196 /*********************************************************************************
197 **函数名:void transfer_display()**************************************************
198 **功能:显示从定义的zhi的ASCALL码开始的连续的字符(最多显示32个字符)**************
199 **入口参数:uchar zhi (输入要显示连续字串的首字符)*********************************
200 **其中的i,j是x轴,LINE1,LINE2为y轴************************************************
201 **出口参数:无*********************************************************************/
202
203
204 /*void transfer_display(uchar zhi,uchar x,uchar y)
205 {
206
207 uchar i,j;
208
209 for(i=x;i<16;i++) //第一行显示
210 {
211 LCD_write_char(i,y,zhi++);
212 }
213
214 y^=1;
215 for(j=0;j<16;j++) //当第一行显示满后第二行显示
216 {
217 LCD_write_char(j,y,zhi++);
218 }
219
220 }
221
222 /*********************************************************************************
223 ** 函数名:void LCD_write_string(uchar X,uchar Y,uchar *s)************************
224 ** 功能:字符串显示的输入函数(最多32个字符)*************************************
225 ** 入口参数:uchar *s (直接输入需要显示的字符串,例如"welcome to use!")********
226 *********** uchar X,uchar Y(第一个字符开始显示的坐标)**************************
227 ** 出口参数:无 ******************************************************************
228 **********************************************************************************/
229 void LCD_write_string(uchar X,uchar Y,uchar *s)
230 {
231 1
232 1 while (*s) // 显示的字符
233 1 {
234 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -