📄 test.lst
字号:
C51 COMPILER V8.02 TEST 01/27/2007 22:14:50 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG51.H>
2 sbit P0_0=P0^0;
3 sbit rs = P1^0; //H=data; L=command;
4 sbit rw = P1^1; //H=read; L=write;
5 sbit e = P1^2; //input enable;
6 sbit busy=P2^7; //lcd busy bit
7
8
9
10
11 #define com_expand_command 0x40
12 #define base_command 0x34
13
14 #define oppsite_cursor_dec 0x10
15 #define open_display_oppsite 0x0D
16 #define clear_screen 0x01
17
18
19 /*------下面的这些反白指令没有什么用处!--------*/
20 #define oppsite_first_line 0x04
21 #define oppsite_second_line 0x05
22 #define oppsite_third_line 0x06
23 #define oppsite_forth_line 0x07
24 /*------上面的这些反白指令没有什么用处!--------*/
25
26 /*-----键盘扫描码定义------------------*/
27 #define key_down_1 14 //第一键
28 #define key_down_2 13 //第二键
29 #define key_down_3 11 //
30 #define key_down_4 7 //
31
32 #define k1 14
33 #define k2 13
34 #define K3 11
35 #define K4 7
36
37 #define OK_Down 14
38 #define Up_Down 11
39 #define Down_Down 7
40 /*-----键盘扫描码定义------------------*/
41
42
43
44 /*-------------屏幕代号定义区-----------*/
45 #define Main_menu 4
46 #define Wave_Choose_menu 5
47 #define Fruequency_Choose_menu 6
48 #define Wave_range 7
49
50 #define comm 0
51 #define dat 1
52 #define uchar unsigned char
53
54
55
C51 COMPILER V8.02 TEST 01/27/2007 22:14:50 PAGE 2
56 uchar code screen_data[][64]={
57 {
58 "淮北煤炭师范学院"
59 "03级电子信息 2班"
60 " 石玮松 "
61 " 毕业设计 "},//第一屏
62 ///////////////////////////
63 {" "
64 " "
65 " DDS信号发生器 "
66 " "},//第二屏
67 //////////////////////////
68 {"指导老师: 周正"
69 " "
70 " 候俊钦"
71 " "},//第三屏
72 ////////////////////////
73 {" 系统启动中 "
74 "请您保护国有资产"
75 "您请稍候********"
76 " "},//第四屏
77 ////////////////////////
78 {"波形 频率 幅度"
79 " 欢迎 使用 "
80 "返回 确认"
81 "煤师院信号发生器"},//第五屏
82 ///////////////////////
83 {"正弦波 三角波"
84 "返回 确认"
85 "方波 "
86 "煤师院信号发生器"////第六屏
87 },
88 {"频率: HZ"
89 " 欢迎 使用 "
90 "返回 确认"
91 "煤师院信号发生器"////第七屏
92 },
93 {"幅度: MV"
94 " 欢迎 使用 "
95 "返回 确认"
96 "煤师院信号发生器" ////第八屏
97 }
98
99 };
100
101 //函数声明
102 void chk_busy (void);
103 void voice_function();
104
105 void Set_Oppsite_Point(uchar posituin);
106 void Down_Down_function();
107 void Up_Down_function();
108 void Ok_Down_function();
109 void Shown_Main_menu();//显示主菜单
110
111
112
113 /*-----键盘变量定义--------*/
114 unsigned char KEY_WORD;
115 bit KEY_DOWN;
116 uchar Current_screen_num;
117 uchar Currrent_Position;//保存光标所在的位置
C51 COMPILER V8.02 TEST 01/27/2007 22:14:50 PAGE 3
118
119 /*------键盘扫描也是中T0中断函数--------*/
120 void inter_timer0() interrupt 1
121 {
122 1 unsigned char b;
123 1 TR0=0;
124 1 P3=0xff;
125 1 b=P3;
126 1 b=b&0x0f;
127 1 if(b!=15)
128 1 {
129 2 KEY_DOWN=1;
130 2 KEY_WORD=b;
131 2 voice_function();
132 2 }
133 1 while(b!=15)
134 1 {
135 2 b=P3;
136 2 b=b&0x0f;
137 2 }
138 1 TR0=1;
139 1
140 1
141 1 }
142
143 /*------发音子程序-------*/
144 void voice_function()
145 {
146 1 int c,e,d;
147 1 for(d=0;d<1;d++)
148 1 {
149 2
150 2 for (c=0;c<50;c++)
151 2 for(e=0;e<100;e++)
152 2 P0_0=0;
153 2
154 2 for (c=0;c<50;c++)
155 2 for(e=0;e<100;e++)
156 2 P0_0=1;
157 2 }
158 1 }
159 /*------------写LCD子程序----------*/
160 void wr_lcd (unsigned char dat_comm,unsigned char content)
161 {
162 1 unsigned char i;
163 1
164 1 chk_busy ();
165 1
166 1 if(dat_comm)
167 1 {
168 2 rs=1; //data
169 2 rw=0; //write
170 2 }
171 1 else
172 1 {
173 2 rs=0; //command
174 2 rw=0; //write
175 2 }
176 1 P2=content; //本人用的上P2口输出数据
177 1
178 1 e=1;
179 1
C51 COMPILER V8.02 TEST 01/27/2007 22:14:50 PAGE 4
180 1 for(i=0;i<5;i++)
181 1 {
182 2 ; //这里是用来迤时间的这是我加的我
183 2 //是怕这个家伙太快了不会液晶反应不过来
184 2 }
185 1 e=0;
186 1
187 1
188 1 }
189
190 void chk_busy (void)
191 {
192 1 P2=0xff;
193 1 rs=0;
194 1 rw=1;
195 1 e =1;
196 1 while(busy==1);
197 1 e =0;
198 1 }
199 /*--------初始化定时器----------*/
200 void inicial_timer () {
201 1 TMOD=0x1;
202 1 EA=1;
203 1 TR0=1;
204 1 ET0=1;
205 1 }
206 /*------------显示一个整屏----------*/
207 void display_all_screen (uchar screen_num)
208 {
209 1 uchar counter;
210 1 wr_lcd (comm,clear_screen);//这里是写入清屏指令
211 1 wr_lcd (comm,0x80);
212 1 for(counter=0;counter<64;counter++)
213 1 {
214 2 wr_lcd (dat,screen_data[screen_num][counter]);
215 2 }
216 1
217 1 }
218
219
220
221 void delay_ms(unsigned int ms)////延时毫秒级的
222 { unsigned int i,j;
223 1 uchar timer;
224 1 for(i=0;i<ms;i++)
225 1 for(j=0;j<30;j++)
226 1 { for(timer=10;timer>1;timer--)
227 2 {
228 3 ;
229 3 }
230 2 }
231 1 }
232
233
234 /*------键盘响应函数----------*/
235 void respond_key_down()
236 {
237 1 if(KEY_DOWN)
238 1 {
239 2 KEY_DOWN=0;
240 2 switch(KEY_WORD)
241 2 {
C51 COMPILER V8.02 TEST 01/27/2007 22:14:50 PAGE 5
242 3 case Up_Down:
243 3 Up_Down_function();
244 3 break;
245 3 case Down_Down:
246 3 Down_Down_function();
247 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -