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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3317|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

一個(gè)單片機(jī)定時(shí)器控制可調(diào)頻率和占空比的pwm波,仿真出來(lái)pwm端口一直處于高電平狀態(tài)

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 10 黑幣 回復(fù)本帖可獲得 1 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
程序自己模仿的  可是仿真出來(lái)pwm端口一直處于高電平狀態(tài) 想問(wèn)問(wèn)是什么問(wèn)題

電路原理圖如下:


單片機(jī)源程序:
  1. #include <reg52.h>
  2. #define  uchar unsigned char
  3. #define  uint unsigned int
  4. #define  ALL  65536     //定時(shí)器工作方式1時(shí),最大基數(shù)長(zhǎng)度 65536;
  5. #define  F_osc 12000000    //晶振頻率12M;
  6. sbit s1=P3^2;//上調(diào)頻率(500-9500hz)
  7. sbit s2=P3^3;
  8. sbit s3=P3^4;//上調(diào)占空比(0.1-0.9)
  9. sbit s4=P3^5;
  10. sbit pwm=P1^0;
  11. int  i=0,q=0.5,f=500;//設(shè)置初值占空比0.5 頻率0.5khz
  12. void delay(uchar t);          //延時(shí)函數(shù),用于按鍵去抖;
  13. void init();                  //初始化函數(shù),用于定時(shí)器的初始化;
  14. void key_scan();             //按鍵掃描函數(shù);
  15. void timer0;
  16. void delay(uchar t);
  17. void delay(uchar t)
  18. {
  19.      uchar a,b;
  20.      while(t--)             //每個(gè)脈沖為1us
  21.       {
  22.        for(a=0;a<100;a++)
  23.         for(b=0;b<100;b++);
  24.       }
  25.    }
  26. void key_scan()
  27.    {
  28.      delay(4);

  29.      if(!s1)   
  30.      {
  31.        f=f+500;;   
  32.        {
  33.                                  if(f>9500)
  34.          f=500;
  35.                          }
  36.       }

  37.     if(!s2)
  38.                 {
  39.                 f=f-500;
  40.                         {
  41.                         if(f<500)
  42.                                 f=9500;
  43.                         }
  44.                 }

  45.                 if(!s3)
  46.                 {
  47.                 q=q+0.1;
  48.                         {
  49.                                 if(q>0.9)
  50.                                 q=0.1;
  51.                         }
  52.                 }
  53.                 if(!s4)
  54.     {
  55.                         q=q-0.1;
  56.       {
  57.                         if(q<0.1)
  58.                                 q=0.9;
  59.                         }               
  60.                 }
  61.         }               
  62. void timer0() interrupt 1      
  63.     {  TR0=1;
  64.       TH0=(65536-(10000*(double (1/f)))/256;
  65.       TL0=(65536-(10000*(double (1/f)))%256;
  66.                         i++;
  67.                         if(i<=100*q)
  68.       pwm=1;
  69.                         if(100*q<i<=100)
  70.                         pwm=0;
  71.                         if(i>100)
  72.                         i=0;

  73. void init()
  74.     {
  75.       TMOD=0x01;   
  76.       ET0=1;
  77.       EA=1;
  78.       TR0=1;
  79.                 }

  80. void main()
  81. {
  82. init();
  83.         while(1)
  84. {
  85. key_scan();
  86. }
  87. }
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:354282 發(fā)表于 2018-9-5 08:45 | 只看該作者
pwm=0的部分你好像沒(méi)有寫。。。                                                                                                     看這個(gè) 對(duì)照一下#include   <reg51.h>      typedef   unsigned   char   uchar;      sbit   P0_0=P0^0;   sbit   P0_1=P0^1;    sbit   P0_2=P0^2;   sbit   P0_3=P0^3;   sbit   P0_4=P0^4;   sbit   P2_0=P2^0;   sbit   P2_1=P2^1;   sbit   P2_2=P2^2;   sbit   P2_3=P2^3;   sbit   P2_4=P2^4;   sbit   P3_4=P3^4;        uchar   time=0;      uchar   period=30;      uchar   high=10;    uchar   th0=0;   uchar   tl0=1;   bit    dir;           void dealy()   {    uchar i;    for(i=0;i<100;i++);    }        void   timer0()   interrupt   1   using   1      {                TH0=0xfc;     /*¶¨ê±Æ÷3õÖμÖØ×°ÔØ*/                TL0=0x18;                          time++;                          P3_4=~P3_4;         if(dir==1)           {                                                  if(time==high)   /*¸ßμçÆ½3ÖDøê±¼ä½áêø£¬±äμí*/                   P2_0=th0;                 /*¾-1y·′ÏàÆ÷·′Ïà*/                                                                       else   if(time==period)     /*ÖüÆúê±¼äμ½£¬±ä¸ß*/                          {   time=0;                              P2_0=tl0;                /*¾-1y·′ÏàÆ÷·′Ïà*/                                                                                                                              }                                           }                  else          if(time==high)   /*¸ßμçÆ½3ÖDøê±¼ä½áêø£¬±äμí*/                                            P2_1=th0;                 /*¾-1y·′ÏàÆ÷·′Ïà*/                                                                            else   if(time==period)     /*ÖüÆúê±¼äμ½£¬±ä¸ß*/                          {   time=0;                              P2_1=tl0;                /*¾-1y·′ÏàÆ÷·′Ïà*/                                                                          }                      }      void   main()      {                     P0=0x00;                 P2=0x00;          TMOD=0x01;   /*¶¨ê±Æ÷0·½ê½1*/            TH0=0xfc;     /*¶¨ê±Æ÷×°ÔØ3õÖ죬éèÖÃÂö3åDÅoÅμÄÕ¼¿Õ±èÎa1£ˉ5*/            TL0=0x18;                                     ET0=1;   /*¿a¶¨ê±Æ÷0ÖD¶Ï*/            TR0=1;    /*Æô¶ˉ¶¨ê±Æ÷0*/                                      while(1)             {                         if(P0_0==1)                 EA=1;     /*¿aCPUÖD¶Ï*/                           if(P0_1==1)                         EA=0;         /*1ØCPUÖD¶Ï*/                          if(P0_2==1)                         {                         dir=~dir;  /*×aÏò¿ØÖÆ*/                         while(P0_2!=0)                         {};                          }                          if(P0_3==1)                         {                           high++;                          if(high==30)                          high=0;                         while(P0_3!=0)                         {};                          }                  }          }            
回復(fù)

使用道具 舉報(bào)

板凳
ID:393736 發(fā)表于 2018-9-5 09:54 來(lái)自手機(jī) | 只看該作者
jefelee 發(fā)表于 2018-9-5 08:45
pwm=0的部分你好像沒(méi)有寫。。。                                                                        ...

pwm=0我放到中斷里面了 在后面。我是一個(gè)個(gè)定時(shí)器控制的頻率和占空比
回復(fù)

使用道具 舉報(bào)

地板
ID:393736 發(fā)表于 2018-9-5 14:14 | 只看該作者
急啊  有沒(méi)有人能回答一下
回復(fù)

使用道具 舉報(bào)

5#
ID:139455 發(fā)表于 2018-9-5 19:55 | 只看該作者
q變量設(shè)置的不對(duì),q變量在定義中設(shè)置成了int型,應(yīng)該設(shè)置成float 或 double型。改下試試

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

6#
ID:394504 發(fā)表于 2018-9-6 15:18 | 只看該作者
int  i=0,q=0.5,f=500;//設(shè)置初值占空比0.5 頻率0.5khz  這里 q為整型  所以 q一直為0  
回復(fù)

使用道具 舉報(bào)

7#
ID:394504 發(fā)表于 2018-9-6 15:29 | 只看該作者
  int  i=0,q=0.5,f=500;//設(shè)置初值占空比0.5 頻率0.5khz  //這里q為整型 所以 之后的q 一直為0

                      if(100*q<i<=100)  //這里有 語(yǔ)法錯(cuò)誤  應(yīng)該 是 if (100*q<i && i<=100)
給樓主個(gè)建議  按鍵 消抖 別用延時(shí) 用幾毫秒查鍵判斷按鍵是否按下 如果連續(xù)多次判定檢測(cè)為按下則按鍵確認(rèn)為按下  
回復(fù)

使用道具 舉報(bào)

8#
ID:398692 發(fā)表于 2018-9-16 16:38 | 只看該作者
q變量設(shè)置的不對(duì),q變量在定義中設(shè)置成了int型,應(yīng)該設(shè)置成float 或 double型。
回復(fù)

使用道具 舉報(bào)

9#
ID:398736 發(fā)表于 2018-9-16 19:25 | 只看該作者
q設(shè)置的不對(duì)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜午夜精品一区二区三区文 | 在线免费观看黄色av | 国产91久久精品一区二区 | 精品国产欧美 | 精品99久久久久久 | 成人免费小视频 | av网站观看 | 黄色91在线 | 国产视频一区二区 | 亚洲高清网 | 欧美一区二区三区在线视频 | 日韩一级欧美一级 | 亚洲va国产日韩欧美精品色婷婷 | 久久久精品 | 中文字幕在线观看成人 | 一区二区三区在线免费观看 | 亚洲 精品 综合 精品 自拍 | 野狼在线社区2017入口 | 手机看片在线播放 | 精品国产鲁一鲁一区二区张丽 | 99精品久久| 欧美成人久久 | 欧美freesex黑人又粗又大 | 国产精品国产精品国产专区不片 | 国产精品一区二区免费 | 精品国产乱码久久久久久丨区2区 | 精品一区国产 | 人人干人人超 | 国产精品乱码一二三区的特点 | 中文亚洲视频 | 国产视频一视频二 | 羞羞视频在线网站观看 | 一级黄色毛片免费 | 久久午夜国产精品www忘忧草 | 国产精品久久久久久久久免费相片 | 免费一看一级毛片 | 国产精品夜夜夜一区二区三区尤 | 99久久免费精品国产男女高不卡 | 久久久久久99 | 美女视频黄色的 | 91福利网 |