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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5299|回復: 7
收起左側

通過按鍵調節PWM進而控制led亮度的proteus仿真達不到預期的效果

[復制鏈接]
ID:288202 發表于 2018-3-13 16:57 | 顯示全部樓層 |閱讀模式
各位大神,誰能幫我解答一下,為什么我的仿真達不到預期的效果,原代碼和圖像請參考
pwm.rar (80.14 KB, 下載次數: 50)
我所參考的鏈接:http://blog.163.com/asm_c/blog/static/2482031132012716860918/
我的結果截圖:

仿真狀態

仿真狀態


單片機源程序如下:
  1. #include<reg52.h>

  2. unsigned char a, b;

  3. sbit K1 = P3^2;     //定義兩個調整占空比的按鍵
  4. sbit K2 = P3^3;

  5. //------------------------------------------

  6. void  delay(unsigned int i)
  7. {
  8.     unsigned char j;
  9.     while(i--)  
  10.                 for(j = 0; j < 60; j++);
  11. }

  12. //------------------------------------------

  13. void main()
  14. {
  15.     TMOD = 0x01;               //T0定時方式1
  16.     TH0 = (65536 - 500) / 256; //500us@12MHz
  17.     TL0 = (65536 - 500) % 256;

  18.         EA = 1;
  19.     TR0 = 1;
  20.     ET0 = 1;   

  21.     a = 0;
  22.     b = 10;
  23.         P3^2=0;

  24.     while(1)  {
  25.       if(!K1)
  26.           {
  27.                   delay(20);
  28.                   if(!K1)
  29.                   {
  30.                           b++;
  31.                           if(b > 19)
  32.                                   b = 19;
  33.                           while(!K1);
  34.                   }
  35.           }
  36.       if(!K2)
  37.           {
  38.                   delay(20);
  39.                   if(!K2)
  40.                   {
  41.                           b--;
  42.                           if(b < 1)
  43.                           b = 1;
  44.                           while(!K2);
  45.                   }
  46.           }

  47.       //以上兩行是檢查按鍵、延時消抖、修改占空比、等待按鍵釋放,b = 1~19
  48.       P0 = ((b / 10) << 4) + b % 10; //顯示占空比等級
  49.     }
  50. }

  51. //------------------------------------------

  52. void time0() interrupt 1
  53. {
  54.     TL0 = (65536 - 493) % 256; //補償中斷進入時間
  55.     TH0 = (65536 - 493) / 256; //500us@12MHz

  56.     a--;                       //a = 1~20

  57.     if(a == 0)  
  58.         {
  59.                 a = 20;
  60.                 P2 = 0;
  61.         } //周期=20*500us

  62.     if(a <= b)  
  63.                 P2 = 255;      //輸出到示波器

  64.     P1 = ~P2;   //輸出到LED,低電平發光
  65. }

  66. //------------------------------------------
復制代碼


回復

使用道具 舉報

ID:222948 發表于 2018-3-13 21:30 | 顯示全部樓層
把31行的P3^2=0;改為K1=0;就可以了
回復

使用道具 舉報

ID:288202 發表于 2018-3-14 10:33 | 顯示全部樓層
999333 發表于 2018-3-13 21:30
把31行的P3^2=0;改為K1=0;就可以了

您好,謝謝您的解答。我已經解決了我之前說的問題。31行那個代碼應該是不存在的,也就是可能是我稀里糊涂的不知道怎么加上去的。不管怎樣,還是謝謝您!

但是我現在又發現了一個問題,就是當pwm調節在10-14的時候,LED會出現閃爍的情況,在15-19的時候,LED不會出現閃爍。但當我在D2(LED)再并聯一個LED之后,只有在19的時候,LED才不會出現閃爍,請問這是為什么呢?是電壓的問題嗎?可是一般用proteus仿真,對于電阻、電容等器件的值的大小不是沒有什么影響的嗎(難道是我一直以來的錯誤觀點?)?況且并聯電壓都一樣的呀?那是電流大小的問題嗎?
回復

使用道具 舉報

ID:288202 發表于 2018-3-14 13:33 | 顯示全部樓層
999333 發表于 2018-3-13 21:30
把31行的P3^2=0;改為K1=0;就可以了

隨后我用proteus仿真電壓表測量D2(led)兩端的電壓,發現跟電壓有關系,但是如果加入穩壓電路在D2(led)之前的話,就會導致無法實現pwm控制LED的亮度了,這該怎么解決呢?
回復

使用道具 舉報

ID:291802 發表于 2018-3-14 14:41 來自手機 | 顯示全部樓層
proteus無法打開
回復

使用道具 舉報

ID:287155 發表于 2018-3-15 08:03 來自手機 | 顯示全部樓層
Proteus只是做51程序仿真的,在做模擬仿真是不理想的,根本達不到預期效果,最好還動手實際操作!
回復

使用道具 舉報

ID:288202 發表于 2018-3-15 11:41 | 顯示全部樓層

可能是我用的proteus版本太高了,是8.6版的好像
回復

使用道具 舉報

ID:288202 發表于 2018-3-15 11:43 | 顯示全部樓層
ASDL 發表于 2018-3-15 08:03
Proteus只是做51程序仿真的,在做模擬仿真是不理想的,根本達不到預期效果,最好還動手實際操作!

因為在外面實習,身邊沒實物,也沒開發板
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜影院操 | 黄色一级大片在线免费看产 | 久久精品毛片 | 国产免费又黄又爽又刺激蜜月al | 日本成人中文字幕 | 亚洲国产成人精品女人久久久 | 精品视频免费 | 黄色av网站在线免费观看 | 亚洲男人天堂 | 久久精品欧美一区二区三区麻豆 | 国产精品有限公司 | 国产欧美日韩精品一区 | 国产精品一区一区 | 毛片网站在线观看视频 | 亚洲日韩中文字幕一区 | 亚洲视频在线播放 | 看a网站| 国产激情网站 | 国产在线视频三区 | h视频免费观看 | 日本在线视频中文字幕 | 国产网站在线播放 | 久久亚洲国产 | 天堂精品 | 久久久久久久电影 | 91精品久久 | 亚洲激情在线 | 国产高清视频一区二区 | 国产视频黄色 | 国产农村妇女精品一区 | 91 视频网站 | 一级毛片在线播放 | 国产在线一区二区 | 亚洲女优在线播放 | 视频一区在线 | 欧美在线视频网站 | 国产成人精品一区二区三区视频 | 99久久婷婷 | 不卡在线视频 | 欧美一级二级三级视频 | 久久男人 |