亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 基于STC89C52RC單片機制作的頻率及占空比均可調程序 [打印本頁]

作者: zhangxinchun    時間: 2019-11-5 22:37
標題: 基于STC89C52RC單片機制作的頻率及占空比均可調程序
注意  單片機必須是52rc不能用60s2


*/

#include"main.h"
#include"peizhi.h"
#include"smg.h"
#include"eeprom.h"
sfr WDT_CONTR=0XE1;
unsigned char HighRH = 0;  //高電平重載值的高字節
unsigned char HighRL = 0;  //高電平重載值的低字節
unsigned char LowRH  = 0;  //低電平重載值的高字節
unsigned char LowRL  = 0;  //低電平重載值的低字節
/***********************按鍵定義**********************************/
bit d1 = 1;
bit d2 = 1;
bit d3 = 1;

uint8 ci;
uint8 ca = 0;
uint8 ca1 = 0;
uint16 cb = 0;

void key();                 //按鍵函數聲明
void ConfigPWM(unsigned int fr, unsigned char dc);  //頻率和占空比調節函數

void main()
{
   bit q1 = 1;
   bit q2 = 1;
   bit q3 = 1;
   ca = EEPROMReadByte(0);
   cb = EEPROMReadByte(1)*255+EEPROMReadByte(2);

   EA = 1;       //開總中斷
   peizhit1(1);  //配置T0定時2ms

   while(1)
   {       
                  ConfigPWM(cb, ca);    //頻率100Hz,占空比10%

                  if(d1 != q1)
                  {
                          q1 = d1;
                        if(d1 == 0)
                        {

                                ca1++;
                                if(ca1 >= 2)
                                {
                                          ca1 = 0;
                                }

                        }
                  }

           if(ca1 == 1)
           {
                  if(d2 != q2)
                  {
                                  q2 = d2;
                                if(d2 == 0)
                                {
                                  
                                        ca++;
                                        EEPROMSectorErase(0);
                                        EEPROMWriteByte(0,ca);
                                        EEPROMWriteByte(2,cb);
                                        EEPROMWriteByte(1,cb>>8);
                                        if(ca >= 99)
                                        {
                                                ca = 99;
                                       
                                        }
                                       
                                }
                          }
                       
                          if(d3 != q3)
                          {
                                  q3 = d3;
                                if(d3 == 0)
                                {
                                        if(ca>0)
                                        {
                                                ca--;
                                                EEPROMSectorErase(0);
                                            EEPROMWriteByte(0,ca);
                                                EEPROMWriteByte(2,cb);
                                                EEPROMWriteByte(1,cb>>8);
                                         }
                                }
                          }
                  }
                 
                if(ca1 == 0)
                {   
                          if(d2 == 0)
                          {
                                 
                                  cb++;
                                  EEPROMSectorErase(0);
                                   EEPROMWriteByte(0,ca);
                                  EEPROMWriteByte(2,cb);
                                  EEPROMWriteByte(1,cb>>8);
                                  if(cb >= 200)
                                        {
                                                cb = 200;
                                       
                                        }
                               
                          }
                          
                          if(d3 == 0)
                          {
                                 
                                        if(cb>0)
                                        {
                                                cb--;
                                                EEPROMSectorErase(0);
                                                EEPROMWriteByte(0,ca);
                                        EEPROMWriteByte(2,cb);                       
                                                EEPROMWriteByte(1,cb>>8);               
                                         }                       
                          }

          }
                xianshi1(cb);  
                xianshi2(ca);  

   }
}

void key()
{
        static uint8 saomiaozhi[] = {1,1,1,1};
        saomiaozhi[0] = (saomiaozhi[0]<<1) | in1;
        saomiaozhi[1] = (saomiaozhi[1]<<1) | in2;
        saomiaozhi[2] = (saomiaozhi[2]<<1) | in3;
       
       
        if(saomiaozhi[0] == 0x00)
        {
                d1 = 0;
        }
        if(saomiaozhi[0] == 0xff)
        {
                d1 = 1;
        }
        if(saomiaozhi[1] == 0x00)
        {
                d2 = 0;
        }
        if(saomiaozhi[1] == 0xff)
        {
                d2 = 1;
        }
        if(saomiaozhi[2] == 0x00)
        {
                d3 = 0;
        }
        if(saomiaozhi[2] == 0xff)
        {
                d3 = 1;
        }
       
}

/* 配置并啟動PWM,fr-頻率,dc-占空比 */
void ConfigPWM(unsigned int fr, unsigned char dc)
{
    unsigned int  high, low;
    unsigned long tmp;

    tmp  = (11059200/12) / fr;  //計算一個周期所需的計數值
    high = (tmp*dc) / 100;      //計算高電平所需的計數值
    low  = tmp - high;          //計算低電平所需的計數值
    high = 65536 - high + 12;   //計算高電平的重載值并補償中斷延時
    low  = 65536 - low  + 12;   //計算低電平的重載值并補償中斷延時
    HighRH = (unsigned char)(high>>8); //高電平重載值拆分為高低字節
    HighRL = (unsigned char)high;
    LowRH  = (unsigned char)(low>>8);  //低電平重載值拆分為高低字節
    LowRL  = (unsigned char)low;
    TMOD &= 0xF0;   //清零T0的控制位
    TMOD |= 0x01;   //配置T0為模式1
    TH0 = HighRH;   //加載T0重載值
    TL0 = HighRL;
    ET0 = 1;        //使能T0中斷
    TR0 = 1;        //啟動T0
    PWMOUT = 1;     //輸出高電平
}

/* T0中斷服務函數,產生PWM輸出 */                  
void InterruptTimer0() interrupt 1
{
    if (PWMOUT == 1)  //當前輸出為高電平時,裝載低電平值并輸出低電平
    {
        TH0 = LowRH;
        TL0 = LowRL;
        PWMOUT = 0;
    }
    else              //當前輸出為低電平時,裝載高電平值并輸出高電平
    {
        TH0 = HighRH;
        TL0 = HighRL;
        PWMOUT = 1;
    }
}

/* T0中斷服務函數,完成數碼管、按鍵掃描與秒表計數 */
void t1() interrupt 3
{
       
    TH1 = T1RH;  //重新加載重載值
    TL1 = T1RL;
        ci++;
        ssmg();                 //數碼管掃描

                 
        if(ci>=2)
    {
                ci = 0;
                key();
    }
}

應用舉例2.JPG (125.21 KB, 下載次數: 102)

應用舉例2.JPG

操作說明.JPG (102.23 KB, 下載次數: 84)

操作說明.JPG

接線說明.JPG (107.82 KB, 下載次數: 87)

接線說明.JPG

頻率及占空比均可調帶數碼管模塊完整程序.rar

198.16 KB, 下載次數: 108, 下載積分: 黑幣 -5

頻率及占空比均可調帶數碼管模塊DXP資料.rar

931.35 KB, 下載次數: 79, 下載積分: 黑幣 -5


作者: shenyuqiu    時間: 2019-11-6 11:45
這個占空比與頻率都可調,真是好資料,謝謝分享,
作者: spwlm    時間: 2019-11-6 13:12
可以用來做LED燈光調節,不錯的資料。
作者: 這一生只為你    時間: 2019-11-6 16:01
非常好的資料,感謝樓主分享!
作者: zrb5688    時間: 2022-2-8 20:17
這個程序值得學習,謝謝作者分享。
作者: chenglcd123    時間: 2022-2-9 10:18
程序值得學習,謝謝作者分享
作者: ziba108    時間: 2022-2-28 16:41
這個占空比與頻率都可調,真是好資料,謝謝分享,
作者: fjzzclc    時間: 2023-7-15 09:59
不錯,不錯, 很好學習,參考的資料
作者: 張廣磊    時間: 2025-6-4 22:23
謝謝分享,太好了
作者: nulfdyrs    時間: 2025-6-6 09:27
vss是多少
作者: changchieh    時間: 2025-9-26 10:35
請問大佬,pcbdoc文件如何打開?謝謝
作者: man1234567    時間: 2025-9-26 22:04
好資料,感謝樓主分享!
作者: changchieh    時間: 2026-3-9 09:25
很好的學習,參考的資料,謝謝




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