?? 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 + -