面的附件是两种AD芯片和51单片机而做出的信号发生器,幅度频率可以调整。芯片有PCF8591 和AD0832
按键1:设置/确定
按键2:在设置模式下,切换是频率调节还是幅度调节,
设置频率或者幅度时,对应的f/a闪烁;
在常态模式下,切换正弦波、三角波、锯齿波、
方波等波形;
按键3:频率/幅度增加
按键4:频率/幅度减少
单片机源程序如下:
/*信号发生器程序*/
#include
#include
#include
//1、IO口以及变量定义等
unsigned int pinlv;//频率值
unsigned char fudu;//幅度系数,1~10,表示5v的0.1 0.2 0.3~1的10倍
unsigned char boxing;//波形,0为正弦波,1为三角波,2为锯齿波,3方波
//bit zj_sj;//三角波符号,0增,1减
sbit WR1=P3^6;//0832写控制端
unsigned char index_sin;//正弦波指针
unsigned char index_sj;//三角波指针
unsigned char index_jc;//锯齿波指针
unsigned char index_fb;//方波波指针
unsigned char code tosin[256]={ //正弦波编码
128 ,
141 ,
153 ,
165 ,
177 ,
188 ,
199 ,
209 ,
219 ,
227 ,
234 ,
241 ,
246 ,
250 ,
254 ,
255 ,
255 ,
255 ,
254 ,
250 ,
246 ,
241 ,
234 ,
227 ,
219 ,
209 ,
199 ,
188 ,
177 ,
165 ,
153 ,
141 ,
128 ,
115 ,
103 ,
91 ,
79 ,
68 ,
57 ,
47 ,
37 ,
29 ,
22 ,
15 ,
10 ,
6 ,
2 ,
1 ,
0 ,
1 ,
2 ,
6 ,
10 ,
15 ,
22 ,
29 ,
37 ,
47 ,
57 ,
68 ,
79 ,
91 ,
103 ,
115 ,
};
unsigned char code pinlvtable[100][2]={
195 , 58 ,
225 , 191 ,
235 , 235 ,
241 , 1 ,
244 , 14 ,
246 , 23 ,
247 , 139 ,
248 , 162 ,
249 , 123 ,
250 , 41 ,
250 , 183 ,
251 , 45 ,
251 , 145 ,
251 , 231 ,
252 , 49 ,
252 , 114 ,
252 , 172 ,
252 , 223 ,
253 , 13 ,
253 , 54 ,
253 , 91 ,
253 , 125 ,
253 , 156 ,
253 , 184 ,
253 , 210 ,
253 , 234 ,
254 , 0 ,
254 , 21 ,
254 , 40 ,
254 , 58 ,
254 , 75 ,
254 , 91 ,
254 , 106 ,
254 , 119 ,
254 , 133 ,
254 , 145 ,
254 , 157 ,
254 , 168 ,
254 , 178 ,
254 , 188 ,
254 , 198 ,
254 , 207 ,
254 , 216 ,
254 , 224 ,
254 , 232 ,
254 , 239 ,
254 , 247 ,
254 , 253 ,
255 , 4 ,
255 , 11 ,
255 , 17 ,
255 , 23 ,
255 , 28 ,
255 , 34 ,
255 , 39 ,
255 , 44 ,
255 , 49 ,
255 , 54 ,
255 , 58 ,
255 , 63 ,
255 , 67 ,
255 , 71 ,
255 , 75 ,
255 , 79 ,
255 ,
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』