標(biāo)題: 51單片機(jī)怎么通過鍵盤來給DA設(shè)置模擬電壓 在線等求助 [打印本頁]

作者: haohaoxue51    時間: 2018-6-8 12:49
標(biāo)題: 51單片機(jī)怎么通過鍵盤來給DA設(shè)置模擬電壓 在線等求助
怎么通過鍵盤來給DA設(shè)置模擬電壓,這是原理圖


  1. /**************************************************************************************
  2. *                DA-PWM輸出實驗              *
  3. 實現(xiàn)現(xiàn)象: 具體接線操作請參考視頻
  4.    下載程序后DA模塊上的指示燈呈呼吸燈效果,由暗變亮再由亮變暗
  5. 注意事項:要將AD/DA模塊上的短接片將OUT和LED短接,板子絲印上有。                     
  6. ***************************************************************************************/
  7. #include "reg52.h"    //此文件中定義了單片機(jī)的一些特殊功能寄存器
  8. typedef unsigned int u16;   //對數(shù)據(jù)類型進(jìn)行聲明定義
  9. typedef unsigned char u8;
  10. //--定義使用的IO口--//
  11. sbit PWM=P2^1;
  12. bit DIR;
  13. //--定義一個全局變量--//
  14. u16 count,value,timer1;
  15. /*******************************************************************************
  16. * 函 數(shù) 名         : Timer1Init
  17. * 函數(shù)功能     : 定時器1初始化
  18. * 輸    入         : 無
  19. * 輸    出         : 無
  20. *******************************************************************************/
  21. void Timer1Init()
  22. {
  23. TMOD|=0X10;//選擇為定時器1模式,工作方式1,僅用TR1打開啟動。
  24. TH1 = 0xFF;
  25. TL1 = 0xff;   //1us
  26.   
  27. ET1=1;//打開定時器1中斷允許
  28. EA=1;//打開總中斷
  29. TR1=1;//打開定時器   
  30. }

  31. /*******************************************************************************
  32. * 函 數(shù) 名       : main
  33. * 函數(shù)功能   : 主函數(shù)
  34. * 輸    入       : 無
  35. * 輸    出      : 無
  36. *******************************************************************************/
  37. void main()
  38. {
  39. Timer1Init();  //定時器1初始化
  40. while(1)
  41. {
  42.   if(count>100)      
  43.   {  
  44.    count=0;
  45.    if(DIR==1)        //DIR控制增加或減小
  46.    {
  47.      value++;
  48.    }   
  49.    if(DIR==0)
  50.    {
  51.      value--;
  52.    }
  53.    
  54.   }
  55.   if(value==1000)
  56.   {
  57.     DIR=0;
  58.   }
  59.   if(value==0)
  60.   {
  61.     DIR=1;
  62.   }
  63.    
  64.   if(timer1>1000)  //PWM周期為1000*1us
  65.   {
  66.    timer1=0;
  67.   }
  68.   if(timer1 <value)
  69.   {
  70.    PWM=1;
  71.   }
  72.   else
  73.   {
  74.    PWM=0;
  75.   }  
  76. }  
  77. }
  78. /*******************************************************************************
  79. * 函 數(shù) 名       : Time1
  80. * 函數(shù)功能   : 定時器1的中斷函數(shù)
  81. * 輸    入       : 無
  82. * 輸    出       : 無
  83. *******************************************************************************/
  84. void Time1(void) interrupt 3    //3 為定時器1的中斷號  1 定時器0的中斷號 0 外部中斷1 2 外部中斷2  4 串口中斷
  85. {
  86. TH1 = 0xFF;
  87. TL1 = 0xff;   //1us
  88. timer1++;
  89.     count++;

  90. }
復(fù)制代碼







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