天天看點

c51單片機c語言顯示矩形波,51單片機和DAC0832輸出方波、矩形波和正弦波由液晶1602顯示的C語言程式...

顯示頻率,幅度可調,可産生四種波形,正弦波,方波,鋸齒波,三角波,希望你能喜歡,給你發了一張效果圖,喜歡的話别忘了采納我的回答啊

#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};