📄 dds9954.lst
字号:
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DDS9954
OBJECT MODULE PLACED IN DDS9954.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DDS9954.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //***********************************************************************
2 // 液晶控制芯片ST7920驱动源文件 *
3 // *
4 //硬件连接说明: *
5 // *
6 // RS(CS) ----------------------------- P3^1 *
7 // R/W(STD) ----------------------------- P3^4 *
8 // E(SCLK) ----------------------------- P3^5 *
9 // PSB ----------------------------- P0^1 *
10 // RST ----------------------------- P0^0 *
11 // DB0 ----------------------------- P1^0 *
12 // DB1 ----------------------------- P1^1 *
13 // DB2 ----------------------------- P1^2 *
14 // DB3 ----------------------------- P1^3 *
15 // DB4 ----------------------------- P1^4 *
16 // DB5 ----------------------------- P1^5 *
17 // DB6 ----------------------------- P1^6 *
18 // DB7(BUSY) ----------------------------- P1^7 *
19 // *
20 //***********************************************************************
21
22 #include <reg52.h>
23 #include<intrins.h>
24 #include<string.h>
25 #define uchar unsigned char
26 #define uint unsigned int
27
28 #define COUNT 0x10
29
30 //每行的首地址,基于RT12864-4M型液晶
31 #define LINE_ONE_ADDRESS 0x80
32 #define LINE_TWO_ADDRESS 0x90
33 #define LINE_THREE_ADDRESS 0x88
34 #define LINE_FOUR_ADDRESS 0x98
35
36 //基本指令集预定义
37 #define DATA 1 //数据位
38 #define COMMAND 0 //命令位
39 #define CLEAR_SCREEN 0x01 //清屏
40 #define ADDRESS_RESET 0x02 //地址归零
41 #define BASIC_FUNCTION 0x30 //基本指令集
42 #define EXTEND_FUNCTION 0x34 //扩充指令集
43
44
45 //扩展指令集预定义
46 #define AWAIT_MODE 0x01 //待命模式
47 #define ROLLADDRESS_ON 0x03 //允许输入垂直卷动地址
48 #define IRAMADDRESS_ON 0x02 //允许输入IRAM地址
49 #define SLEEP_MODE 0x08 //进入睡眠模式
50 #define NO_SLEEP_MODE 0x0c //脱离睡眠模式
51 #define GRAPH_ON 0x36 //打开绘图模式
52 #define GRAPH_OFF 0x34 //关闭绘图模式
53
54
55 //并行位定义
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 2
56 sbit RS=P1^4;
57 sbit RW=P1^5;
58 sbit E= P1^6;
59
60 sbit BUSY=P2^7;
61
62 //控制位定义
63 sbit PSB = P1^7; //串并选择信号
64 sbit RST = P3^0; //复位信号
65
66
67 uchar code Tab1[]="扫频仪"; //显示在第一行
68 uchar code Tab2[]="起始频率: 3KHz";//显示在第二行
69 uchar code Tab3[]="终止频率: 7KHz";//显示在第三行
70 uchar code Tab4[]="扫描时间: 4s";//显示在第四行
71 uchar code Tab5[]={0x54,0xf4};
72
73 unsigned long CFR1 ;
74 unsigned long CFR2 = 0;
75 unsigned long FTW0;
76 unsigned long FTW1;
77 unsigned long NLSCW;
78 unsigned long PLSCW;
79 unsigned long multfreq = 0xFFFFFFFF; //计算频率控制字的系数
80
81
82
83
84
85 //51引脚定义
86 sbit IO_UPDATE = P0^0;
87 sbit PS1 = P0^1;
88 sbit PS0 = P0^2;
89 sbit IO_SYNC = P0^3;
90 sbit SDIO = P0^4;
91 sbit SCLK = P0^5;
92 sbit CS = P0^6;
93 sbit SDO = P0^7;
94
95
96 sbit CS2 = P1^0;
97 sbit PWR = P1^1;
98 sbit CLKMS = P1^2;
99 sbit RET = P1^3;
100
101
102
103 /***********************************************************************
104 ** 函数名称: 端口操作
105 ** 功能描述: AD9954端口基本操作
106 ** 输 入: 无
107 ** 输 出: 无
108 ** 全局变量: 无
109 ** 调用模块: 无
110 ***********************************************************************/
111 void SCLK_0(void)
112 {
113 1 SCLK = 0;
114 1 }
115
116
117 void SCLK_1(void)
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 3
118 {
119 1 SCLK = 1;
120 1 }
121
122
123 void SDIO_0(void)
124 {
125 1 SDIO = 0;
126 1 }
127
128
129 void SDIO_1(void)
130 {
131 1 SDIO = 1;
132 1 }
133
134
135
136
137 void IO_UPDATE_0(void)
138 {
139 1 IO_UPDATE = 0;
140 1 }
141
142 void IO_UPDATE_1(void)
143 {
144 1 IO_UPDATE = 1;
145 1 }
146
147
148
149
150 /***********************************************************************
151 ** 函数名称: IO9954_Init
152 ** 功能描述: IO_Init
153 ** 输 入: 无
154 ** 输 出: 无
155 ** 全局变量: 无
156 ** 调用模块: 无
157 ***********************************************************************/
158 void IO9954_Init()
159 {
160 1 CS2= 0;
161 1 PWR=0;
162 1 CLKMS=0;
163 1 RET=0;
164 1
165 1 IO_UPDATE = 0;
166 1 // PS1 = 0;
167 1 // PS0 = 0;
168 1 IO_SYNC = 0;
169 1 SDIO = 0;
170 1 SCLK = 0;
171 1 CS = 0;
172 1 // SDO = 0;
173 1 }
174
175 /***********************************************************************
176 ** 函数名称: nNop
177 ** 功能描述: US级软件延时(不精确)
178 ** 输 入: 延时参数,值越大时延时越久
179 ** 输 出: 无
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 4
180 ** 全局变量: 无
181 ** 调用模块: 无
182 ***********************************************************************/
183 void nNop(unsigned long nValue)
184 {
185 1 unsigned long i;
186 1 for(i=nValue;i>0;i--);
187 1 }
188
189 /***********************************************************************
190 ** 函数名称: WriteByte
191 ** 功能描述: 向AD9954发送一字节数据 MSB FIRST
192 ** 输 入: unsigned char data 发送的数据
193 ** 输 出: 无
194 ** 全局变量: 无
195 ** 调用模块: 端口操作 nNop
196 ***********************************************************************/
197 void WriteByte(unsigned char Data)
198 {
199 1 unsigned char k;
200 1 for(k=0;k<8;k++)
201 1 {
202 2 SCLK_0();
203 2 nNop(4); //延时很重要
204 2 if((Data&0x80) == 0x80)
205 2 SDIO_1();
206 2 else
207 2 SDIO_0();
208 2 Data = Data << 1;
209 2 nNop(2); //延时很重要
210 2 SCLK_1();
211 2 nNop(4); //延时很重要
212 2 }
213 1 }
214
215
216
217
218 /***********************************************************************
219 ** 函数名称: 更新寄存器操作
220 ** 功能描述: 每次更新寄存器的固定操作
221 ** 输 入: 无
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -