欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機A/D與D/A轉換程序 [打印本頁]

作者: 小史同學    時間: 2020-5-20 08:39
標題: 單片機A/D與D/A轉換程序
#include <reg51.h>
sbit wr=P3^6;
sbit rd=P3^2;
sbit key1=P1^1;                //定義P1.1腳的按鍵為方波鍵key1
sbit key2=P1^2;            //定義P1.2腳的按鍵為三角波鍵key2   
sbit key3=P1^3;            //定義P1.2腳的按鍵為鋸齒波鍵key3
unsigned char flag;                 //flag為1、2、3時對應方波、三角波、鋸齒波
unsigned char keyscan()                  //鍵盤掃描函數
{
unsigned char keyscan_num,temp;
  P1=0xff;                                 // P1口輸入
  temp=P1;                                //從P1口讀入鍵值,存入temp中
  if(~(temp&0xff))      //判是否有鍵按下,即鍵值不為0xff,則有鍵按下
{
   if(key1==0)                         //產生方波的按鍵按下
            {
        keyscan_num=1;                         //得到鍵值為1,表示產生方波
      }
        else if(key2==0)                //產生三角波的按鍵按下
        {
        keyscan_num=2;                         //得到的鍵值為2,表示產生三角波
        }
        else if(key3==0)                 //產生梯形波的按鍵按下
        {
    keyscan_num=3;                         //得到的鍵值為3,表示產生鋸齒波
        }
        else  
    {
        keyscan_num=0;                         //沒有按鍵按下,鍵值為0
        }                                         
               
   return(keyscan_num) ;                //得到的鍵值返回
}        
}

void delay(unsigned  int z)//當z=2時,延時1ms  
    { unsigned char a;
      unsigned  char  b;
      for(a=z;a>0;a--)
        {for(b=100;b>0;b--)
         {;;}
        }
     }
void init_DA0832()                  //DAC0832初始化函數
{
rd=0;
wr=0;
}
void Square()                          //方波函數
{
    P2=0x00;
    delay(50) ;
    P2=0xff;
    delay(50) ;
}
void Triangle()                        //三角波
{
P2=0x00;
do{
P2=P2+1;   
}while(P2<0xff);
P2=0xff;
do{
P2=P2-1;
}while(P2>0x00);
P2=0x00;
}
void Sawtooth()                        //鋸齒波
{
P2=0x00;
do{
P2=P2+1;  
}while(P2<0xff);

}
void main()                                        // 主函數
{
        init_DA0832();                // DA0832的初始化函數            
          while(1)
    {
           
          flag=keyscan();        
      switch(flag)
      {           
      case 1:
                          do{
                        flag=keyscan();
                        Square ();                       
                          }while(flag==1);                          
                          break;
                  case 2:
                           do{
                     flag=keyscan();
                      Triangle ();
                        }while(flag==2);
                            break;                  
                  case 3:
                 do{
                      flag=keyscan();
                      Sawtooth ();
                         }while(flag==3);
                break;
                  default:
                           flag=keyscan();
                    break;
            }        
     }
}







歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1