📄 top.lst
字号:
C51 COMPILER V7.50 TOP 08/22/2008 20:40:12 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TOP
OBJECT MODULE PLACED IN top.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE top.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*电子综合设计实验箱测试程序
2 说明:此程序为51单片机系统模块,键盘LED模块,LCD1602显示模块,LCD12864显示模块
3 万能板模块测试程序
4 插上跳线冒J104确保总线给其他模块供电
5 技术支持:qq:190189667 胡玉贵
6 */
7 #include <reg51.h>
8 #include <absacc.h>
9 #include <string.h>
10 #include<INTRINS.H>
11 #include "lcd.h"
12 #include "serial.h"
13 //#include "lcd12864.h"
14 #include "ziku.h"
15 #include "keypad.h"
16 #include "led.h"
17 #include "OCMJ.h"
18 #include "TLC549.h"
19 #include "EPM240.h"
20
21
22 sbit sdata=P0^3;
23 sbit sclk=P0^4;
24 sbit load=P0^5;
25 sbit ldac=P0^6;
26 //注意跳线冒P13~P15插到右边
27 sbit ds=P1^3;
28 sbit sh=P1^4;
29 sbit st=P1^5;
30
31 //AD9850控制引脚,注意将P32~P35的跳线冒插到左边
32 sbit DDS_reset=P3^2;
33 sbit DDS_sclk=P3^3;
34 sbit DDS_load=P3^4; //FQUD
35 sbit DDS_sdata=P3^5; //DATA
36
37 typedef unsigned char uint8;
38 extern uint8 code tab[13];
39 extern uint8 d[8];
40
41 uchar code tab1[]={
42 " 电子综合设计 "
43 " 南京师范大学 "
44 " 实验系统V1.0 "
45 " 2007/10/30 "
46 };
47
48 /*************************AD9850初始化********************************/
49 void ad9850init()
50 {
51 1 DDS_reset=0;
52 1 DDS_reset=1;
53 1 DDS_reset=0;
54 1 DDS_load=0;
55 1 }
C51 COMPILER V7.50 TOP 08/22/2008 20:40:12 PAGE 2
56
57 /*************************AD9850显示正弦波********************************/
58 AD9850(float freq)
59 {
60 1 float fw;
61 1 uchar temp;
62 1 uchar i,j;
63 1 uchar d[5];
64 1 // fw=freq*34.359738368; //d[4]中存放控制字最高位,即相位控制字
65 1 //Freq=MCLK*FW/2^32
66 1 fw=freq*85.89934592;
67 1 d[4]=0;
68 1 d[0]=(unsigned long)fw;
69 1 d[1]=(unsigned long)fw>>8;
70 1 d[2]=(unsigned long)fw>>16;
71 1 d[3]=(unsigned long)fw>>24;
72 1 DDS_load=0;
73 1 DDS_sclk=0;
74 1 DDS_sclk=1;
75 1 DDS_sclk=0;
76 1 DDS_load=1;
77 1 DDS_load=0;
78 1 for(i=0;i<5;i++)
79 1 {
80 2 temp=d[i];
81 2 for(j=0;j<8;j++)
82 2 {
83 3 DDS_sclk=0;
84 3 if(temp&1) DDS_sdata=1;
85 3 else DDS_sdata=0;
86 3 DDS_sclk=1;
87 3 temp=temp>>1;
88 3 }
89 2 }
90 1
91 1 DDS_load=1;
92 1 DDS_load=0;
93 1 DDS_load=0;
94 1 DDS_load=0;
95 1 }
96
97
98 void WriteSIOByte(unsigned char led,unsigned char sel,unsigned char seg)
99 {
100 1 unsigned char i;
101 1 for (i=0;i<8;i++)
102 1 {
103 2 led=led<<1; ds=CY; sh=1; sh=0;
104 2 }
105 1 _nop_();//延时
106 1 for (i=0;i<8;i++)
107 1 {
108 2 sel=sel<<1; ds=CY; sh=1; sh=0;
109 2 }
110 1 _nop_();//延时
111 1 for (i=0;i<8;i++)
112 1 {
113 2 seg=seg<<1; ds=CY; sh=1; sh=0;
114 2 }
115 1
116 1 //SER=1;//释放数据总线
117 1 //以下3条指令若在多字节时,应该移入多字节全发送完后在执行此3条指令
C51 COMPILER V7.50 TOP 08/22/2008 20:40:12 PAGE 3
118 1 st=0;
119 1 // #asm("nop");//延时
120 1 //delay(2);
121 1 st=1;//打入并行数据
122 1 }
123
124 dac1_tlc5620(unsigned char send_char)
125 {
126 1 uchar i;
127 1 load=1;
128 1 sclk=1;sdata=0;sclk=0;
129 1 sclk=1;sdata=0;sclk=0;
130 1 sclk=1;sdata=0;sclk=0;
131 1
132 1 for(i=0;i<8;i++)
133 1 {
134 2 sclk=1;
135 2 if(send_char&0x80) sdata=1;
136 2 else sdata=0;
137 2 sclk=0;
138 2 send_char=send_char<<1;
139 2 }
140 1 load=0;
141 1 load=1;
142 1
143 1 }
144
145 dac2_tlc5620(unsigned char send_char)
146 {
147 1 uchar i;
148 1 //ldac=1;
149 1 load=0;//load=1;
150 1 sclk=0;sdata=0;sclk=1;//sclk=1;sdata=1;sclk=0;
151 1 sclk=0;sdata=0;sclk=1;//sclk=1;sdata=1;sclk=0;
152 1 sclk=0;sdata=1;sclk=1;//sclk=1;sdata=1;sclk=0;
153 1
154 1 for(i=0;i<8;i++)
155 1 {
156 2 sclk=0;//sclk=1;
157 2 if(send_char&0x80) sdata=0;//sdata=1;
158 2 else //sdata=0;
159 2 sclk=1;//sclk=0;
160 2 send_char=send_char<<1;
161 2 }
162 1 load=1;//load=0;
163 1 load=0;//load=1;
164 1
165 1 }
166
167 main()
168 {
169 1 //unsigned char xdata str[]="freq:1K ";
170 1 //unsigned char xdata str2[]="KeyValue:";
171 1 //unsigned int v;
172 1 ad9850init();
173 1 AD9850(1000);//AD9850输出1KHZ的正弦波
174 1 WriteSIOByte(1,0,0);//防止蜂鸣器乱叫
175 1 InitSerial();
176 1 Timer0Init();
177 1 InitSerialBuffer();//初始化串口波特率:9600bps
178 1 init_lcd ();//LCD12864测试程序
179 1 chn_disp (tab1);
C51 COMPILER V7.50 TOP 08/22/2008 20:40:12 PAGE 4
180 1 while(1)
181 1 {
182 2 }
183 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 418 ----
CONSTANT SIZE = 233 ----
XDATA SIZE = ---- 13
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -