找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索

求指導(dǎo) 用8051單片機(jī),DAC0832和LCD1602實(shí)現(xiàn)函數(shù)發(fā)生器功能

查看數(shù): 1787 | 評(píng)論數(shù): 4 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2023-5-9 21:49

正文摘要:

用單片機(jī)實(shí)現(xiàn)函數(shù)發(fā)生器功能 硬件:單片機(jī)+LCD1602+N個(gè)按鍵+4個(gè)LED燈+DAC0832。 基本要求: 按下按鍵可使DAC輸出不同波形(正弦波、三角波、鋸齒波、方波),對(duì)應(yīng)LED燈亮,且在LCD1602上顯示當(dāng)前波形信息。 1.LC ...

回復(fù)

ID:1075678 發(fā)表于 2023-5-15 20:49
謝謝各位的指導(dǎo),已經(jīng)寫出來了
ID:1043290 發(fā)表于 2023-5-10 16:57
我貼個(gè)代碼給你吧,用51的單片機(jī)來實(shí)現(xiàn),也有詳細(xì)鏈接自己可以看看

#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                                //用定時(shí)器來創(chuàng)造時(shí)鐘函數(shù)
{
  CLK=~CLK;
}
uchar adc0808()
{
    uchar t;
    ST=0;
        ST=1;                                                   //形成下跳脈沖信號(hào),開啟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;                                                                        //開定時(shí)
  ET0=1;
  TMOD=0X02;
  TH0=0Xff;
  TL0=0Xff;
  TR0=1;

  while(1)
  {
  P0=0;
  if(K1==0)
  {
     LEDB=0;
         square();                                  //方波,藍(lán)燈
  }
  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;
   
  }
}
————————————————
版權(quán)聲明:本文為CSDN博主「森嶼~~」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/m0_62281625/article/details/122104086
ID:1043290 發(fā)表于 2023-5-10 16:54
ID:1043290 發(fā)表于 2023-5-10 16:52

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表