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

標題: 不帶ADC的OTP單片機實現電位計控制PWM程序 [打印本頁]

作者: amu_cpln    時間: 2021-12-9 01:20
標題: 不帶ADC的OTP單片機實現電位計控制PWM程序
這方案比 555 的便宜, 不用外接他和電阻電容
用兩個普通IO口實現讀電位器, 調試輸出波形
可以達到任何頻率
附件的程序用了12F509 做的, 可以直接用在 0.3元的OTP單片機上

單片機源程序如下:
  1. #include <12F509.h>
  2. #fuses INTRC,NOWDT,NOPROTECT, NOMCLR
  3. #use delay(clock=4000000)
  4. #define GP0 PIN_B0
  5. #define GP1 PIN_B1
  6. #define GP2 PIN_B2
  7. #define GP3 PIN_B3
  8. #define GP4 PIN_B4
  9. #define GP5 PIN_B5

  10. #define set_options(value)   {#ASM         \
  11.                               MOVLW  value \
  12.                               OPTION       \
  13.                               #ENDASM}

  14. #define UART_TX_HI() output_high(GP2)
  15. #define UART_TX_LO() output_low(GP2)
  16. #define BitTime 40

  17. void GP5_In()
  18. {
  19.         output_low (GP5);
  20.         set_tris_b(0xfa);

  21. }

  22. void GP5_Out()
  23. {

  24.         set_tris_b(0xda);
  25.         output_high (GP5);
  26. }

  27. unsigned char duty;
  28. unsigned char i;

  29. void cycle_backward (void)
  30. {
  31.    output_low (GP2);
  32.    delay_us (70);
  33.    output_high (GP2);
  34.    delay_us (70);
  35. }

  36. void Get_Pos()
  37. {

  38.         set_tris_b(0xfa); //GP5 input
  39.         while(input(GP5) == 0)
  40.         {
  41.                 duty++;
  42.         }
  43.         set_tris_b(0xda); //GP5 output
  44. }

  45. void GetAdc()
  46. {
  47.         duty = 0;
  48.         output_high(GP4);    //Activate Pullup
  49.        
  50.         while(input(GP5) == 0)
  51.         {
  52.                 duty++;
  53.                 if(duty==255)
  54.                 {
  55.                         output_low(GP4);
  56.                         return;
  57.                 }
  58.         }
  59.         output_low(GP4);   // No pullup
  60. }

  61. void UART_Transmit(unsigned char DataValue)
  62. {
  63.        
  64.         /* Basic Logic
  65.        
  66.         TX pin is usually high. A high to low bit is the starting bit and
  67.         a low to high bit is the ending bit. No parity bit. No flow control.
  68.         BitCount is the number of bits to transmit. Data is transmitted LSB first.
  69.         */
  70.         // Send Start Bit
  71.         UART_TX_LO();
  72.         delay_us(BitTime);   //delay_us(33); //
  73.         for ( i = 0; i < 8; i++ )
  74.         {
  75.         // Set Data pin according to the DataValue
  76.                 if( ((DataValue>>i)&0x1) == 0x1 ) // If Bit is high
  77.                 {
  78.                         UART_TX_HI();
  79.                 }
  80.                 else // If Bit is low
  81.                 {
  82.                         UART_TX_LO();
  83.                 }
  84.                 delay_us(BitTime);  //delay_us(33); //
  85.         }
  86.         // Send Stop Bit
  87.         UART_TX_HI();
  88.         delay_us(BitTime);  //delay_us(33); //
  89. }


  90. /*
  91. REVERT THE HARDWARE TO USING 2 PINS FOR POTENTIOMETER MEASUREMENT
  92. USE A CAPACITOR OF 22PF TO 100PF
  93. USE A TIMER TO HAVE THE PULSE CONTROL

  94. >SETUP TIMER0 SO THAT 256 COUNTS = PULSE PERIOD(1 MSEC)
  95. RUN TIMER 0
  96. WHILE LOOP
  97. >GETADC
  98. >IF DUTY MORE THAN MAX VALUE, ALWAYS ON
  99. >ELSE IF DUTY = 0, ALWAYS OFF
  100. >ELSE IF TIMER COUNT = DUTY, OUTPUT ON
  101.       IF TIMER COUNT = 255, OUTPUT OFF

  102. */


  103. void main()
  104. {
  105.         set_options(0x07);
  106.         set_tris_b(0xfa);                //GP2 and GP0 are outputs
  107.     setup_counters (RTCC_INTERNAL,RTCC_DIV_2);
  108.         output_low(GP5); //no pullup for GP5

  109.    while (TRUE)
  110.         {
  111.                 //UART_Transmit(0);
  112.                 //GetAdc();
  113.                 //Get_Pos();
  114.                 //UART_Transmit(duty>>8);
  115.                
  116.                 set_tris_b(0xfa); //GP5 input
  117.                 set_timer0(0);
  118.                 while(input(GP5) == 0)
  119.                 {

  120.                 }
  121.                 duty = get_timer0();
  122.                 set_tris_b(0xda); //GP5 output

  123.                 //UART_Transmit(0);
  124.                 //UART_Transmit(duty);
  125.                 //delay_us(BitTime);

  126.                 if(duty<95)
  127.                 {
  128.                         if(duty < 4)
  129.                         {
  130.                                 output_high(GP0);
  131.                                 delay_ms(1);
  132.                         }
  133.                         else
  134.                         {
  135.                                 output_low(GP0);
  136.                                 for(i=0;i<duty;i++)
  137.                                 {
  138.                                         delay_us(50);
  139.                                 }
  140.                                 duty = 100 - duty;
  141.                                 output_high(GP0);
  142.                                 for(i=0;i<duty;i++)
  143.                                 {
  144.                                         delay_us(50);
  145.                                 }
  146.                         }
  147.                 }
  148.                 else
  149.                 {
  150.                         output_low(GP0);
  151.                         delay_ms(1);
  152.                 }
  153.     }
  154. }

復制代碼



作者: hjx5548    時間: 2021-12-16 15:47
能不能提供一下原理圖




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久久国产视频 | 91精品国产乱码久久久久久久久 | 成人a在线观看 | 国产成人精品视频在线观看 | 国产美女视频黄a视频免费 国产精品福利视频 | 不卡一区二区三区四区 | 国产久 | 精品1区 | 成人精品国产 | 亚洲精品久久久一区二区三区 | 亚洲福利在线观看 | 亚洲社区在线 | 亚洲九色 | 美女在线视频一区二区三区 | 亚洲精品中文字幕在线观看 | 一区二区av在线 | 免费在线观看黄视频 | 中文在线a在线 | www.中文字幕| 亚洲精品9999| 欧美日韩专区 | 日韩精品视频在线 | 性高湖久久久久久久久3小时 | 国产精品伦一区二区三级视频 | 久久国产精品99久久久久 | 91色视频在线观看 | 97久久精品午夜一区二区 | 黄色在线免费观看视频网站 | 99久久精品免费看国产四区 | 四虎在线观看 | 日韩一二区 | 国产一级淫片免费视频 | 欧美综合久久 | 成人av一区二区三区 | 国产精品国产a | 日韩一二区 | 午夜久久久久久久久久一区二区 | 久久久免费观看视频 | 日本免费黄色 | 一区二区日韩精品 | 亚洲伦理自拍 |