顯示頻率,幅度可調,可産生四種波形,正弦波,方波,鋸齒波,三角波,希望你能喜歡,給你發了一張效果圖,喜歡的話别忘了采納我的回答啊
#include
#define uchar unsigned char
#define uint unsigned int
#define DAdata P0 //DA資料端口
sbit DA_S1= P2^0; // 控制DAC0832的8位輸入寄存器,僅當都為0時,可以輸出資料(處于直通狀态),否則,輸出将被鎖存
sbit DA_S2= P2^1; // 控制DAC0832的8位DAC寄存器,僅當都為0時,可以輸出資料(處于直通狀态),否則,輸出将被鎖存
sbit key= P3^2;
uchar wavecount; //'抽點'計數
uchar THtemp,TLtemp;//傳遞頻率的中間變量
uchar judge=1; //在方波輸出函數中用于簡單判别作用
uchar waveform; //當其為0、1、2時,分别代表三種波
uchar code freq_unit[3]={10,50,200}; //三種波的頻率機關
uchar idata wavefreq[3]={1,1,1}; //給每種波定義一個數組單元,用于存放機關頻率的個數
uchar code lcd_hang1[]={"Sine Wave " "Triangle Wave " "Square Wave " "Select Wave: " "press No.1 key! "};
uchar idata lcd_hang2[16]={"f= Hz "};
uchar code waveTH[]={
0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe};
uchar code waveTL[]={
0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, //正弦波頻率調整中間值
0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde, //三角波頻率調整中間值
0x88,0x50,0x90,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c};
uchar code triangle_tab[]={ //每隔數字8,采取一次
0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x 60,0x68,0x70,0x78,
0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0x e0,0xe8,0xf0,0xf8,0xff,
0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x9 8,0x90,0x88,0x80,
0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x 18,0x10,0x08,0x00};