显示频率,幅度可调,可产生四种波形,正弦波,方波,锯齿波,三角波,希望你能喜欢,给你发了一张效果图,喜欢的话别忘了采纳我的回答啊 #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,0x60,0x68,0x70,0x78, 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff, 0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80, 0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00}; uchar code sine_tab[256]={ //输出电压从0 到最大值(正弦波1/4 部分) 0x80,0x83,0x8...