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

標題: 用ADC0808實現的PWM信號 [打印本頁]

作者: csmyldl    時間: 2019-8-2 19:25
標題: 用ADC0808實現的PWM信號
2019年電子設計競賽即將進行,其中電機和舵機的控制需需要用到PWM,我編寫了一個電位器調節PWM的仿真程序,希望能對你有所幫助。#include <regx52.h>//#include "ADC0809.h"
#define uchar unsigned char
#define uint unsigned int
sbit  CLOCK=P2^4;
sbit  START=P2^5;
sbit  EOC= P2^6;
sbit  OE=P2^7;

uchar addata,k;
uint tmp,high;
void adc0809();
void delay(uchar t)
  {
    uchar i,j;
    for (i=0;i<t;i++)
     for (j=0;j<123;j++);

    }

main()
{
   TMOD=0x11;              //定時計數器1設置方式1
   TH0=(65536-500)/256;               //初值0.5ms
   TL0=(65536-500)%256;
         TH1=0xff;
   TL1=0xf0;
   EA=1;
         ET0=1;
   ET1=1;                  //允許定時計數器1中斷以便產生CLOCK時鐘
         TR0=1;
         TR1=1;
   while(1)
   {
   START=0;
   OE=0;
   START=1;          //啟動ADC轉換
   START=0;
    while (!EOC)
    {
      adc0809();             //ADC轉換
      tmp=addata*196;        //數據處理,1個單位代表19.6mV  測出電壓在0-50000mv間
                  high=tmp/500;
    }
   }
}

void adc0809()       //讀ADC0809子程序
{
   P1=0xff;          //P1全部置一準備讀數據
   OE=1;
   addata=P1;        //讀出轉換數據賦與addata
   OE=0;             //讀數完畢
}

DS1() interrupt 1
{
        k++;               //中斷1次為0.5ms
        if (k<high)
                P3_0=1;          //輸出高電平
         else
                 P3_0=0;         //輸出低電平
        if (k==100)
                k=0;             //PWM周期為0.5*100ms
        TH0=(65536-500)/256;               //初值0.5ms
  TL0=(65536-500)%256;
}

void time1() interrupt 3
{
   CLOCK=~CLOCK;
   TH1=0xff;
   TL1=0xf0;
  }

ADC0808實現的PWM.rar

53.15 KB, 下載次數: 25, 下載積分: 黑幣 -5






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