📄 123.lst
字号:
C51 COMPILER V8.05a 123 04/16/2009 17:22:03 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 123
OBJECT MODULE PLACED IN 123.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 123.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2
3
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define DATA_PORT P0
7
8
9 sbit BUSY=P3^4;
10 sbit REQ=P3^5;
11 sbit RESET=P3^6;
12 sbit P10=P1^0;
13
14
15 /*--------------------------------------------------------------------------------------------------------
---------- */
16 uchar table0[]={0x30,0x25,0x1a,0x25,0x12,0x2e,0x2a,0x5d,0x31,0x01,0x34,0x51,0x12,0x2b,0x15,0x05}; //信号
-参数选择菜单
17 uchar table1[]={0x35,0x5d,0x2f,0x32,0x12,0x08}; //正弦波
18 uchar table2[]={0x28,0x5d,0x1d,0x27,0x12,0x08}; //三角波
19 uchar table3[]={0x17,0x1d,0x12,0x08,0x12,0x08}; //方波波
20 uchar table4[]={0x29,0x08,0x23,0x48,0x12,0x08}; //扫描波
21 /*--------------------------------------------------------------------------------------------------------
--------*/
22
23 uchar set0[]={0x26,0x15,0x22,0x2a}; // 频率
24 uchar set1[]={0x17,0x59,0x16,0x28}; //幅度
25 uchar set2[]={0x35,0x1c,0x1f,0x35,0x11,0x28}; //占空比
26 //uchar set3[]={0x2f,0x40,0x2e,0x1b}; //相位
27
28 /*--------------------------------------------------------------------------------------------------------
--*/
29 uchar num[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; //数值0~9
30 /*--------------------------------------------------------------------------------------------------------
---*/
31
32
33 /*********************************************************************************************/
34 uchar unit0[]={0x2e,0x30,0x30,0x48,0x7a};//.00Hz的ASC码
35 uchar unit1[]={0x56,0x70,0x70};//Vpp的ASC码
36 uchar unit2[]={0x2e,0x30,0x30,0x4b,0x48,0x7a};//.00KHz
37
38
39 /*************************************************************************************************/
40
41
42 /*************全局变量****************/
43 uchar temp=0; //主菜单选项选中标志
44 uchar temp1=0; //一级子菜单选项选中标志
45 uint f=0;//频率
46 uchar range=0;//幅度
47 uchar duty=0;//占空比
48 uchar w=0;//单位为HZ,当w=1时单位为KHZ
49 uchar flag;//发送数据标志位
50
C51 COMPILER V8.05a 123 04/16/2009 17:22:03 PAGE 2
51 uchar numf[5]; //频率数值存放数组
52 uchar numr[4]; //幅度数值存放数组
53 uchar numd[2]; //占空比数值存放数组
54
55
56
57
58
59 /******LCD初始化***********/
60 void lcd_init()
61 {
62 1 BUSY=1;
63 1 REQ=0;
64 1 RESET=1;
65 1 }
66
67 /*********写入数据***********/
68 void wr_lcd(uchar dat)
69 {
70 1 while(BUSY);
71 1 DATA_PORT=dat;
72 1 REQ=1;
73 1 while(BUSY);
74 1 REQ=0;
75 1 }
76
77 /*******写指令和坐标******/
78 void wr_zhiling(uchar com,uchar addr_x,uchar addr_y)
79 {
80 1 wr_lcd(com);
81 1 wr_lcd(addr_x);
82 1 wr_lcd(addr_y);
83 1 }
84 void delay(uint z)
85 {
86 1 uint x;
87 1 uchar y;
88 1 for(x=z;x>0;x--)
89 1 for(y=110;y>0;y--);
90 1 }
91 void start() //开机画面
92 {
93 1 uchar i;
94 1 for(i=0;i<8;i++)
95 1 {
96 2 wr_zhiling(0xf0,0x02+i,1);
97 2 wr_lcd(table0[2*i]);
98 2 wr_lcd(table0[2*i+1]);
99 2 }
100 1
101 1
102 1 }
103 void int_init() // 中断初始化
104 {
105 1 EX0=1;
106 1 IT0=0;
107 1 EA=1;
108 1 }
109 void serial_init() //串口初始化
110 {
111 1 TMOD=0X20;
112 1 TH1=0XFD;
C51 COMPILER V8.05a 123 04/16/2009 17:22:03 PAGE 3
113 1 TL1=0XFD;
114 1 TR1=1;
115 1 SCON=0X50;
116 1
117 1 }
118
119 /******************************主菜单显示*******************************************/
120 void main_menu(uchar a) //主菜单显示
121 {
122 1 uchar i,p;
123 1 p=a;
124 1 switch(p)
125 1 {
126 2 case 0: //正弦波
127 2 wr_lcd(0xf4);
128 2 wr_lcd(0xfa);
129 2 for(i=0;i<3;i++)
130 2 {
131 3 wr_zhiling(0xf0,i,0);
132 3 wr_lcd(table1[2*i]);
133 3 wr_lcd(table1[2*i+1]);
134 3 }
135 2 wr_lcd(0xfa);
136 2 for(i=0;i<3;i++) //三角波
137 2 {
138 3 wr_zhiling(0xf0,i,1);
139 3 wr_lcd(table2[2*i]);
140 3 wr_lcd(table2[2*i+1]);
141 3 }
142 2 for(i=0;i<3;i++) //方波
143 2 {
144 3 wr_zhiling(0xf0,i,2);
145 3 wr_lcd(table3[2*i]);
146 3 wr_lcd(table3[2*i+1]);
147 3 }
148 2 for(i=0;i<3;i++) //扫描波
149 2 {
150 3 wr_zhiling(0xf0,i,3);
151 3 wr_lcd(table4[2*i]);
152 3 wr_lcd(table4[2*i+1]);
153 3 }
154 2 break;
155 2
156 2
157 2 case 1:
158 2 wr_lcd(0xf4);
159 2 for(i=0;i<3;i++)
160 2 {
161 3 wr_zhiling(0xf0,i,0);
162 3 wr_lcd(table1[2*i]);
163 3 wr_lcd(table1[2*i+1]);
164 3 }
165 2 wr_lcd(0xfa);
166 2 for(i=0;i<3;i++)
167 2 {
168 3 wr_zhiling(0xf0,i,1);
169 3 wr_lcd(table2[2*i]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -