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