|
|
仿真電路:
51hei.png (125.46 KB, 下載次數(shù): 102)
下載附件
2020-6-12 22:16 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #include <math.h>
- #define DAC_PORT P2 //如圖,DAC0832連接端口
- //兩種波
- #define W_TRI 0
- #define W_SAW 1
- #define PI 3.1415926f //圓周率
- //簡(jiǎn)化類型符寫法
- typedef unsigned char u8;
- typedef unsigned int u16;
- typedef unsigned long u32;
- sbit DAC_WR=P3^6; //DAC0832使能口
- sbit DAC_CS=P1^7;
- //全局變量
- u8 mode;//模式:鋸齒波,三角波
- u16 freq;//頻率
- u8 time;//計(jì)次參數(shù)
- u8 AM;//調(diào)幅
- void Timer0Init(void);
- void sys_init(void);
- void tri_wave(u8 location);//三……
- void saw_wave(u8 location);//鋸……
- void Timer0Init(void) //100微秒@12.000MHz
- {
- TMOD &= 0xF0; //設(shè)置定時(shí)器模式
- TMOD |= 0x02; //設(shè)置定時(shí)器模式
- TL0 = 0x9C; //設(shè)置定時(shí)初值
- TH0 = 0x9C; //設(shè)置定時(shí)重載值
- TF0 = 0; //清除TF0標(biāo)志
- TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí)
- EA = 1; //開(kāi)總中斷
- ET0 = 1; //開(kāi)定時(shí)器0中斷
- }
- void sys_init(void)//系統(tǒng)初始化
- {
- time=0;
- DAC_WR=0;
- DAC_CS=0;
- DAC_PORT=0;
- mode=0;//默認(rèn)輸出三角波,mode=1;輸出鋸齒波
- freq=100;//默認(rèn)頻率100Hz
- AM=255;//最大幅度
- }
- void tri_wave(u8 location)//三……
- {
- //為了簡(jiǎn)化,在單周期輸出V字形
- u8 y;
- if(location<50)
- y=(50-location)*AM/50;
- else
- y=(location-50)*AM/50;
- DAC_PORT=y;
-
- }
- void saw_wave(u8 location)//鋸……
- {
- DAC_PORT=location*AM/100;
- //用(100-location)也以變成反向鋸齒
- }
- void Timer0Work() interrupt 1 //中斷服務(wù)函數(shù)
- {
- switch(mode)
- {
-
- case W_TRI:tri_wave((u8)((time*freq/100)%100));break;
- case W_SAW:saw_wave((u8)((time*freq/100)%100));break;
- }
- time++;
- if(time>=100)//計(jì)數(shù)100次
- time=0;
- }
- int main(void)
- {
- sys_init();
- Timer0Init();
- while(1)
- {
- ;
- }
- }
復(fù)制代碼 仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
所有資料51hei提供下載:
DAC0832.rar
(52.33 KB, 下載次數(shù): 19)
2020-6-12 20:47 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
其他波形參考:http://www.raoushi.com/bbs/dpj-100216-1.html
|
評(píng)分
-
查看全部評(píng)分
|