標題:
模數轉換芯片DAC0832產生鋸齒波 三角波發(fā)生器 proteus仿真及源碼
[打印本頁]
作者:
51黑ff
時間:
2016-10-10 16:16
標題:
模數轉換芯片DAC0832產生鋸齒波 三角波發(fā)生器 proteus仿真及源碼
51單片機驅動模數轉換芯片DAC0832產生鋸齒波 三角波的proteus仿真原理圖:
0.png
(31.08 KB, 下載次數: 107)
下載附件
2016-10-10 16:13 上傳
單片機源程序:
/********************************************************************
51黑電子論壇
*********************************************************************/
#include<reg52.h> //庫文件
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int //宏定義無符號整型
/********************************************************************
初始定義
*********************************************************************/
sbit P3_2=P3^2;
sbit P3_3=P3^3;
unsigned char keycnt=0;
unsigned char tcnt=0; //鍵值判斷
bit sjz=0; //產生三角波時用到的標志
void delayl() //延時子程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void KEY() //按鍵掃描程序
{
if(P3_2==0)
{
delayl(); //延時跳過按下時的抖動
if(P3_2==0)
{
keycnt=0; //定時器產生鋸齒波標志
TR0=0; //暫時停止波形輸出
TH0=0x256-40; //對TH0 TL0 賦值
TL0=0x256-40;
TR0=1; //開始定時,產生鋸齒波
while(P3_2==0); //如果一直按著鍵,則等待松鍵開
delayl(); //延時跳過松開后的抖動
}
}
if(P3_3==0)
{
delayl(); //延時跳過按下時的抖動
if(P3_3==0)
{
keycnt=1; //定時器產生三角波標志
TR0=0; //暫時停止波形輸出
TH0=0x256-40; //對TH0 TL0 賦值
TL0=0x256-40;
TR0=1; //開始定時 產生三角波
}
while(P3_2==0); //如果一直按著鍵,則等待松鍵開
delayl(); //延時跳過松開后的抖動
}
}
void t0(void) interrupt 1 using 0 //定時中斷服務函數
{
if(keycnt==0) //產生鋸齒波
{
P0=tcnt;
tcnt=+0x0a; //步進0.2V/一次中斷
if(tcnt==0xfb)
tcnt=0;
}
if(keycnt==1) //產生三角波
{
if(sjz==0)
{
P0=tcnt;
tcnt=+0x0a;//步進0.2V/一次中斷
if(tcnt==0xfa)
sjz=1;
}
if(sjz==1)
{
P0=tcnt;
tcnt=-0x0a;
if(tcnt==0)
sjz=0;
}
}
}
void main(void)
{
TMOD=0x02; //定時器工作在方式2
ET0=1;
EA=1;
while(1)
KEY();
}
復制代碼
0.png
(63.64 KB, 下載次數: 97)
下載附件
2016-10-10 16:16 上傳
仿真工程文件及所有完整程序等資料下載地址(壓縮包一共有45個單片機仿真,全部下載后找到第013個項目即可):
http://www.torrancerestoration.com/bbs/dpj-56298-1.html
作者:
亙黑鹿
時間:
2016-11-2 22:44
示波器呢?
作者:
stt980516
時間:
2018-11-12 23:00
可以使用嗎
作者:
MyWifeKotori
時間:
2020-3-13 13:58
示波器呢。。?
作者:
hh002
時間:
2023-5-28 01:22
示波器:沒我也可以有波?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1