📄 dds.lst
字号:
C51 COMPILER V8.02 DDS 05/23/2008 13:58:50 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DDS
OBJECT MODULE PLACED IN dds.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dds.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h>
3 #include<absacc.h>
4
5 #define uchar unsigned char //类型重定义
6 #define uint unsigned int //类型重定义
7
8 sbit CS=P3^5; // LCD_4 选通
9 sbit SID=P3^6; // LCD_5 串行数据输入端
10 sbit SCLK=P3^7; // LCD_6 串行时钟
11
12 uchar code line1[14]={"频率步进:100Hz"};
13 uchar code line5[2]={"Hz"};
14 uchar code line2[14]={"频率: "};
15 uchar code line3[16]={"幅值: V"};
16 uchar code line4[16]={"波形: "};
17 uchar code line6[16]={" "};
18 uchar sb[]={"."};
19
20 uchar code table[]={"0123456789 "}; //半字符数字码表
21 uchar a[8]={0,0,0,0,0,0,0,0}; //装载要显示频率的数组
22
23 long int f=0; //输入的频率
24 uchar fudu=0; //输入的幅度
25 uchar code wavetype[24]={"sin 方波 叁角波锯齿波"};
26
27 sbit DS1804_CS=P1^5; // DS1804端口定义
28 sbit DS1804_INC=P1^6;
29 sbit DS1804_UD=P1^7;
30
31 unsigned char key, key_flag1,boxing_flag;
32 unsigned char Data[2];
33 sbit P12=P1^2;sbit P13=P1^3;
34 sbit pinlv1=P3^0;sbit pinlv2=P3^1;sbit boxing=P3^2;sbit fudu1=P3^3;sbit fudu2=P3^4;
35
36 unsigned char keyhh();
37 void init12864() ;
38 void LCD_Write_order(uchar Command);
39 void LCD_Write_Data(uchar ddd);
40 void display();
41 void DS1804_Inc_N_Step();
42 void DS1804_Dec_N_Step();
43
44
45 //==============================================================
46 //函数名称:void delay(unsigned int n)
47 //函数功能:延时函数
48 //=============================================================
49 void delay(unsigned int n)
50
51 {
52 1 unsigned int i,j;
53 1 for(i=0;i<n;i++)
54 1 for(j=0;j<n;j++) ;
55 1 }
C51 COMPILER V8.02 DDS 05/23/2008 13:58:50 PAGE 2
56
57
58 //==============================================================
59 //函数名称:void dectohex(f)
60 //函数功能:十进制频率控制字数值转换十六进制数值,分为高8位与低8位
61 //=============================================================
62 void dectohex(f)
63 { long int Ds;
64 1 unsigned int az;
65 1 Ds=f/3;
66 1 //Ds=Ds*100;
67 1 az=Ds/256;
68 1 P2=az; //高8位
69 1 P0=Ds%256; //低8位
70 1 }
71
72
73 //==============================================================
74 //函数名称:void type_gettype(void )
75 //函数功能:波形选择
76 //=============================================================
77 void type_gettype(void )
78 {
79 1
80 1 switch (boxing_flag)
81 1 { case 0: P13=0; P12=0; break;//正弦波
82 2 case 1: P13=0; P12=1; break;//方波
83 2 case 2: P13=1; P12=0; break;//三角波
84 2 case 3: P13=1; P12=1; break;//锯齿波
85 2 default: break;
86 2 }
87 1 }
88
89
90
91 //==============================================================
92 //函数名称:unsigned char keyscan()
93 //函数功能:按键检测并去除抖动,返回键值
94 //=============================================================
95 unsigned char keyscan()
96 {
97 1 unsigned char fromkey;
98 1 fromkey=P3&0x1f;
99 1 if (fromkey!=0x1f)
100 1 {
101 2 delay(20);
102 2 fromkey=P3&0x1f;
103 2 while ((P3&0x1f)!=0x1f)
104 2 {
105 3 ;//wait key release
106 3 }
107 2 switch (fromkey)
108 2 {
109 3 case 0x1f:return(0);break;//无按键
110 3 case 0x1e:return(1);break;//按SW2 FRE递增
111 3 case 0x1d:return(2);break;//按SW3 FRE递减
112 3 case 0x1b:return(3);break;//change WAVE
113 3 case 0x17:return(4);break;//按SW4 fudu递增
114 3 case 0x0f:return(5);break;//按SW5 fudu递减
115 3 default:return(0);break;
116 3 }
117 2 }
C51 COMPILER V8.02 DDS 05/23/2008 13:58:50 PAGE 3
118 1 else return(0);
119 1 }
120
121
122 //==============================================================
123 //函数名称:void init12864()
124 //函数功能:初始化12864函数
125 //=============================================================
126 void init12864()
127 {
128 1 uchar i;
129 1 LCD_Write_order(0x30); //基本操作指令
130 1 LCD_Write_order(0x0f); //开显示,关光标,不闪烁
131 1 LCD_Write_order(0x01); //清除显示
132 1 LCD_Write_order(0x06); //指定在资料写入或读取时,光标的移动方向
133 1 LCD_Write_order(0x0c); //整体显示
134 1
135 1
136 1 LCD_Write_order(0x80); //第1行初始化
137 1 for(i=0;i<14;i++)
138 1 LCD_Write_Data(line1[i]);
139 1
140 1 LCD_Write_order(0x90); //第2行初始化
141 1 for(i=0;i<10;i++)
142 1 LCD_Write_Data(line2[i]);
143 1
144 1 LCD_Write_order(0x88); //第3行初始化
145 1 for(i=0;i<16;i++)
146 1 LCD_Write_Data(line3[i]);
147 1
148 1 LCD_Write_order(0x98); //第4行初始化
149 1 for(i=0;i<16;i++)
150 1 LCD_Write_Data(line4[i]);
151 1 }
152
153
154
155 //==============================================================
156 //函数名称:void LCD_Write_order(uchar Command)
157 //函数功能:送命令给夜晶12864函数
158 //=============================================================
159 void LCD_Write_order(uchar Command)
160 {
161 1 uchar i,j,tem=0xf8;
162 1 CS=1;
163 1 for(i=8;i>0;i--)
164 1 {
165 2 SCLK=0;
166 2 SID=tem&0x80;
167 2 SCLK=1;
168 2 tem<<=1;
169 2 }
170 1
171 1 for(j=2;j>0;j--)
172 1 for(i=8;i>0;i--)
173 1 {
174 2 if(i>4) //送高四位
175 2 {
176 3 SCLK=0;
177 3 SID=Command&0x80;
178 3 SCLK=1;
179 3 Command<<=1;
C51 COMPILER V8.02 DDS 05/23/2008 13:58:50 PAGE 4
180 3 }
181 2 else //低四位为"0"
182 2 {
183 3 SCLK=0;
184 3 SID=0;
185 3 SCLK=1;
186 3 }
187 2
188 2 }
189 1
190 1 CS=0;
191 1 }
192
193
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -