標題:
求指導 用8051單片機,DAC0832和LCD1602實現(xiàn)函數(shù)發(fā)生器功能
[打印本頁]
作者:
愛學習的小菜
時間:
2023-5-9 21:49
標題:
求指導 用8051單片機,DAC0832和LCD1602實現(xiàn)函數(shù)發(fā)生器功能
用單片機實現(xiàn)函數(shù)發(fā)生器功能
硬件:單片機+LCD1602+N個按鍵+4個LED燈+DAC0832。
基本要求:
按下按鍵可使DAC輸出不同波形(正弦波、三角波、鋸齒波、方波),對應LED燈亮,且在LCD1602上顯示當前波形信息。
1.LCD顯示增加當前波形的頻率;
2.有按鍵可增加or減少頻率;
3.波形幅值可設定;
1.png
(67.45 KB, 下載次數(shù): 21)
下載附件
2023-5-9 22:05 上傳
作者:
huxiaolin
時間:
2023-5-10 16:52
https://zhuanlan.zhihu.com/p/438650177
作者:
huxiaolin
時間:
2023-5-10 16:54
https://blog.csdn.net/m0_62281625/article/details/122104086
作者:
huxiaolin
時間:
2023-5-10 16:57
我貼個代碼給你吧,用51的單片機來實現(xiàn),也有詳細鏈接自己可以看看
#include <reg52.h>
#include <intrins.h>
sbit OE=P3^0;
sbit EOC=P3^1;
sbit CLK=P3^4;
sbit ST=P3^2;
sbit K1=P1^4;
sbit K2=P1^5;
sbit K3=P1^6;
sbit K4=P1^7;
sbit LEDB=P1^0;
sbit LEDG=P1^1;
sbit LEDR=P1^2;
sbit LEDY=P1^3;
#define ADC P2
#define uchar unsigned char
#define uint unsigned int
uchar code sin[]={0,0,0,0,1,1,2,3,4,5,6,8,
9,11,13,15,17,19,22,24,
27,30,33,36,39,42,46,49,
53,56,60,64,68,72,76,80,
84,88,92,97,101,105,110,
114,119,123,128,132,136,
141,145,150,154,158,163,
167,171,175,179,183,187,
191,195,199,202,206,209,
213,216,219,222,225,228,
231,233,236,238,240,242,
244,246,247,249,250,251,
252,253,254,254,255,255,255};
void timer () interrupt 1 //用定時器來創(chuàng)造時鐘函數(shù)
{
CLK=~CLK;
}
uchar adc0808()
{
uchar t;
ST=0;
ST=1; //形成下跳脈沖信號,開啟ad
ST=0;
while(!EOC); //等待轉(zhuǎn)換完成
OE=1; //允許輸出
t=ADC; //獲取輸出
return (t);
}
/**********方波*********/
void square()
{
uchar a,b;
for(a=0;a<127;a++)
{
P0=0xff;
P2=0xff;
b=adc0808();
b=~b;
while(b--);
}
for(a=0;a<127;a++)
{
P0=0x00;
P2=0xff;
b=adc0808();
b=~b;
while(b--);
}
}
/********鋸齒波*******/
void sawtooth()
{
uchar a,b;
for(a=0;a<255;a++)
{
P0=a;
P2=0xff;
b=adc0808();
b=~b;
while(b--);
}
}
/*******三角波*******/
void triang()
{
uchar a,b;
for(a=0;a<254;a=a+2)
{
P0=a;
P2=0xff;
b=adc0808();
b=~b;
while(b--);
}
for(a;a>1;a=a-2)
{
P0=a;
P2=0xff;
b=adc0808();
b=~b;
while(b--);
}
}
/*******正弦波******/
void sinwave()
{
uchar a,b;
for(a=0;a<92;a++)
{
P0=sin[a];
P2=0xff;
b=adc0808();
b=~b;
while(b--);
}
for(a=a-1;a>0;a--)
{
P0=sin[a];
P2=0xff;
b=adc0808();
b=~b;
while(b--);
}
}
main()
{
EA=1; //開定時
ET0=1;
TMOD=0X02;
TH0=0Xff;
TL0=0Xff;
TR0=1;
while(1)
{
P0=0;
if(K1==0)
{
LEDB=0;
square(); //方波,藍燈
}
LEDB=1;
if(K2==0)
{
LEDG=0;
sawtooth(); //鋸齒波,綠燈
}
LEDG=1;
if(K3==0)
{
LEDR=0;
triang(); //三角波, 紅燈
}
LEDR=1;
if(K4==0)
{
LEDY=0;
sinwave(); //正弦波,黃燈
}
LEDY=1;
}
}
————————————————
版權聲明:本文為CSDN博主「森嶼~~」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:
https://blog.csdn.net/m0_62281625/article/details/122104086
作者:
愛學習的小菜
時間:
2023-5-15 20:49
謝謝各位的指導,已經(jīng)寫出來了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1