久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

搜索
查看: 1480|回復(fù): 0
收起左側(cè)

求大神教一下單片機(jī)信號(hào)發(fā)生器程序的問題 數(shù)組相關(guān)

[復(fù)制鏈接]
ID:547495 發(fā)表于 2019-5-27 13:21 | 顯示全部樓層 |閱讀模式
3黑幣
我想在目前程序中加一下幅值可調(diào)的功能,s2、s3分別用來增加和減小。如果用查表法改變幅值的話是要乘一個(gè)系數(shù),我寫了一個(gè)系數(shù)數(shù)組不知道對(duì)不對(duì),如果可以的話,具體乘上去的程序應(yīng)該是什么,就是數(shù)組應(yīng)該用什么表示,此外有關(guān)s2、s3鍵應(yīng)該加在主程序的哪里。

下面是我的程序;

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrw=P3^3;
sbit lcdrs=P3^2;
sbit lcde=P3^4;
sbit s1=P2^0; //波形
sbit s2=P2^1; //幅值+
sbit s3=P2^2; //幅值-
sbit s4=P2^3; //頻率+
sbit s5=P2^4; //頻率-
sbit cs=P3^5;
sbit wr=P3^6;
uchar xdata amplitude[9]={51,77,102,128,154,179,205,230,255};
uchar data index_amp=0;
uchar slnum,a,ys,j,z,i,slnun;
uint fre;
uint amp;
uchar code tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,
                       0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,
                                           0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,
                                           0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,
                                           0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,
                                           0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,
                                           0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,
                                           0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,
                                           0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,
                                           0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,
                                           0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,
                                           0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,
                                           0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,
                                           0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,
                                           0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,
                                           0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
                                           0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,
                                           0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,
                                           0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,
                                           0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,
                                           0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,
                                           0x76,0x79,0x7c,0x80};

void delay(uint_z)                                //延時(shí)
{
   uchar i,j;
   for(i=z;i>0;i--)
     for(j=110;j>0;j--);
}
void delay1(uint_y)
{
   uchar i,y;
   for(i=y;i>0;i--)          ;
}
void write_com(uchar com)                          //1602指令
{
  lcdrs=0;
  P1=com;
  delay(5);
  lcde=1;
  delay(5);
  lcde=0;
}
void write_data(uchar date)                                //1602數(shù)據(jù)
{
    lcdrs=1;
        P1=date;
        delay(5);
        lcde=1;
        delay(5);
        lcde=0;
}
void init()                                                         //lcd初始化
{
  lcdrw=0;
  lcde=0;
  wr=0;
  cs=0;
  write_com(0x38);
  write_com(0x0c);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80+0x00);                //wave
  write_data(0x77);
  write_data(0x61);
  write_data(0x76);
  write_data(0x65);
  write_data(0x3a);
  write_com(0x80+0x40);                 //f
  write_data(0x66);
  write_data(0x3a);
  write_com(0x80+0x00);                //wave
  write_data(0x77);
  write_data(0x61);
}
void write_f(uchar date)                //頻率
{
   uchar qian,bai,shi,ge;
   qian=date/1000;
   bai=date/100%10;
   shi=date/10&10;
   ge=date%10;
   write_com(0x80+0x42);
   write_data(0x30+qian);
   write_data(0x30+bai);
   write_data(0x30+shi);
   write_data(0x30+ge);
   write_data(0x48);
   write_data(0x5a);
}
void xsf()                                         //顯示頻率
{   
   if(slnum==1)
   {
     fre=(1000/(9+3*ys)) ;
         write_f(fre);
   }
   if(slnum==2)
   {
     fre=(100000/(3*ys));
         write_f(fre);
   }
   if(slnum==3)
   {
     fre=(1000/(15+3*ys));
         write_f(fre);
        }
}
void keyscanf()                                        //鍵
{

   if(s1==0)
   {
      delay(5);
          if(s1==0)
   {
      slnum++;
          while(!s1);         
          if(slnum==1)
          {
      ys=0;
          write_com(0x80+0x05);
          write_data(0x73);
          write_data(0x69);
          write_data(0x6e);
          write_data(0x65);
          write_data(0x20);
          write_data(0x20);
   }
          if(slnum==2)
          {
             ys=10;
                 write_com(0x80+0x05);
                 write_data(0x73);
                 write_data(0x71);
                 write_data(0x75);
                 write_data(0x61);
                 write_data(0x72);
                 write_data(0x65);
          }
          if(slnum==3)
          {
             ys=0;
                 write_com(0x80+0x05);
                 write_data(0x74);
                 write_data(0x72);
                 write_data(0x61);
                 write_data(0x69);
                 write_data(0x6e);
                 write_data(0x20);
           }
           if(slnum==4)
           {
             slnum=0;
                 P1=0;
                 write_com(0x80+0x05);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                 write_com(0x80+0x42);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                 write_data(0x20);
                }
         }
  }

if(s4==0)
  {
     delay(5);
         if(s4==0)
         {
             ys++;
                 while(!s4);
                 
         }
   }
   if(s5==0)
   {
      delay(5);
          if(s5==0)
           {
            
                   ys--;
                 while(!s5);
               
           }
        }
}

void main()
{
   init();
   while(1)
   {
      keyscanf();
          if(slnum==1)
          {
            for(j=0;j<255;j++)
                {
                   P0=am*tosin[j];
                   delay1(ys);
                }
          }
          if(slnum==2)
          {
            P0=0xff;
                delay1(ys);
                P0=0;
                delay1(ys);
          }
          if(slnum==3)
          {
            if(a<128)
                  {                  
                    P0=a;
                        delay1(ys);
                  }
                  else
                   {
                     P0=(255-a);
                         delay1(ys);
                   }
                   a++;
           }

if(s1&s2&s3&s4&s5)
           {
           xsf();
           }
        }
}

QQ圖片20190527131418.png
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产激情 | 国产成人网 | 米奇狠狠鲁| 日韩一区二区在线视频 | 亚洲视频免费在线观看 | 久视频在线 | 美女黄网站视频免费 | 成人免费视频观看视频 | 国产在线观看一区 | 成人精品在线视频 | 久久久国产亚洲精品 | 91精品国产91久久久久久密臀 | 91一区二区 | 午夜寂寞网站 | 国产精品美女久久久久aⅴ国产馆 | 国产精品毛片无码 | 91av在线电影 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | a级免费视频 | 日本天堂视频在线观看 | 亚洲人精品 | 黄色一级片在线播放 | 欧美在线视频免费 | 日韩av电影在线观看 | 成人黄在线观看 | 狠狠干影院 | 黄瓜av | 久久久久国产精品 | 精品人伦一区二区三区蜜桃网站 | 亚洲精品丝袜日韩 | 欧美久久久久 | 男女羞羞视频免费看 | 免费看a| 91久操视频| 久久久久久999 | 亚洲色在线视频 | 成人小视频在线观看 | 香蕉久久av | 亚洲成人精品久久久 | 国产一级毛片精品完整视频版 | 国产一在线观看 |