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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7937|回復: 1
收起左側

基于單片機與PWM的呼吸燈設計報告下載

[復制鏈接]
ID:301474 發表于 2018-4-3 14:48 | 顯示全部樓層 |閱讀模式
基于單片機與PWM的呼吸燈設計
本設計是基于單片機的原理與接口設計,采用單片機I/O口,加以C語言編程實現LED漸亮再漸暗類似人的呼吸一樣的效果。
關  鍵  詞
AT89C51,PWM(脈寬調制)
100403cp0chvvllyfiu2lc.gif
一、設計要求:
呼吸燈就是讓LED燈的閃爍像呼吸一樣,時呼時吸,時亮時暗,利用LED的余輝和人眼的暫留效應,看上去和人的呼吸一樣。
二、設計原理:
用C語言編程實現PWM(脈寬調制)輸出驅動LED,逐漸增加PWM的占空比從而實現LED模擬呼吸的過程,即漸亮再漸暗再漸亮再漸暗……如此往復,再利用LED的余輝和人眼的暫留效應,看上去就和人的呼吸一樣。
三、整體方案設計
8個LED按照順序逐個實現呼吸效果。加以其他閃爍花樣增加更炫彩的效果。
四、實驗元件及器材
(1)元件: LED(發光二極管)                            8個
                               1KΩ電阻                                                                                   8個
                               1nf電容                                                                                   2個
                               晶振                                                                                                 1個
                               AT89C51芯片                                                       1個
(2)器件:Atmega128開發板                                          1塊
                                                        計算機                                                                                   1臺
  • 硬件原理
  • 主電路:8個LED分別連接AT89C51的P1口,使用共陽方式,并加以1kΩ的電阻接入電源。

主電路

主電路
(2)時鐘電路:外部時鐘方式是使用外部振蕩脈沖信號。
  • 軟件設計及系統仿真調試
  • 調試方法:利用keil軟件進行C語言程序編寫及調試,利用Proteus仿真軟件進行仿真實驗。
  • 調試過程所遇問題:

1、由于呼吸燈的程序在仿真軟件Proteus中實現的效果不明顯,很難辨別LED是否具有呼吸的效果。所以邊用keil調試程序邊用STC燒寫軟件直接寫入開發板,從而很明顯看出LED是否具有呼吸效果;

2、程序運行時,出現LED閃爍過快,由于人眼的暫留效應看似LED全部一直亮著,經調試,修改延時時間,實現呼吸效果。
七、結論與心得
在本次設計中,C語言程序在開發板中得以實現應有的功能。在調試過程中,發現很多問題都是由于不細心導致的,因此在以后的設計方案中,要集中精力,莫粗心大意。再者就是知識量的不足,雖然是一個小小的設計方案,但是查閱了很多相關資料,在日后,要多充足自己的知識量,保證C程序的編寫質量。
參考文獻
[1]郭天祥,《新概念51單片機C語言教程》,電子工業出版社,2009年1月
[2]徐愛鈞,《單片機高級語言C51應用程序設計》,電子工業出版社,2000年5月
附件A:呼吸燈設計電路圖


附件B:C語言程序清單
  1. #include<reg51.h>
  2. /*-----------定義單片機引腳-----*/
  3. sbit LED0=P1^0;
  4. sbit LED1=P1^1;
  5. sbit LED2=P1^2;
  6. sbit LED3=P1^3;
  7. sbit LED4=P1^4;
  8. sbit LED5=P1^5;
  9. sbit LED6=P1^6;
  10. sbit LED7=P1^7;

  11. void Delay(unsigned int t); //函數聲明
  12. unsigned int z,y;
  13. void main (void)//主函數
  14. {
  15.               unsigned int CYCLE=500,PWM_LOW=0;//定義周期并賦值
  16.               while (1)         //主循環
  17.               {

  18. /*--------整排LED燈呼吸---------*/
  19.                             P1=0x00;
  20.                             Delay(500);                                                                                                                 //加延時,可以看到熄滅的過程(下面程序同理)
  21.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)                 //PWM_LOW表示低
  22.                                           {
  23.                                                         P1=0x00;                                                               
  24.                                                         Delay(PWM_LOW);
  25.                                                         P1=0xff;
  26.                                                         Delay(CYCLE-PWM_LOW);
  27.                                           }
  28.                             P1=0xff;                                                                                                                                          
  29.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)               //與逐漸變亮相反的過程
  30.                                           {
  31.                                                            P1=0x00;                                                                                                  //點亮LED
  32.                                                            Delay(PWM_LOW);
  33.                                                            P1=0xff;                                                                                                  //熄滅LED
  34.                                                           Delay(CYCLE-PWM_LOW);                                                        //主循環中添加其他需要一直工作的程序,延時長度,600次循環中從599減至1
  35.                                           }


  36. /*--------第一顆LED燈呼吸---------*/
  37.                             LED0=1;
  38.                             Delay(500);        
  39.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)               
  40.                                           {
  41.                                                         LED0=0;                                                                                          
  42.                                                         Delay(PWM_LOW);
  43.                                                         LED0=1;                                                                                          
  44.                                                         Delay(CYCLE-PWM_LOW);
  45.                                           }
  46.                             LED0=0;                                                                                                                                          
  47.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)   
  48.                                           {
  49.                                                            LED0=0;
  50.                                                            Delay(PWM_LOW);
  51.                                                            LED0=1;
  52.                                                           Delay(CYCLE-PWM_LOW);                                            
  53.                                           }


  54. /*--------第二顆LED燈呼吸----------*/
  55.                             LED1=1;
  56.                             Delay(500);      
  57.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)   
  58.                                           {
  59.                                                            LED1=0;
  60.                                                            Delay(PWM_LOW);
  61.                                                            LED1=1;      
  62.                                                           Delay(CYCLE-PWM_LOW);
  63.                                           }
  64.                             LED1=0;
  65.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  66.                                           {
  67.                                                         LED1=0;
  68.                                                         Delay(PWM_LOW);
  69.                                                         LED1=1;
  70.                                                         Delay(CYCLE-PWM_LOW);
  71.                                           }


  72. /*--------第三顆LED燈呼吸----------*/
  73.                             LED2=1;
  74.                             Delay(500);
  75.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  76.                                           {
  77.                                                            LED2=0;      
  78.                                                            Delay(PWM_LOW);
  79.                                                         LED2=1;   
  80.                                                         Delay(CYCLE-PWM_LOW);                  
  81.                                           }
  82.                             LED2=0;
  83.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  84.                                           {
  85.                                                            LED2=0;
  86.                                                            Delay(PWM_LOW);
  87.                                                            LED2=1;
  88.                                                 Delay(CYCLE-PWM_LOW);
  89.                                              }

  90. /*--------第四顆LED燈呼吸----------*/
  91.                             LED3=1;
  92.                             Delay(500);
  93.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  94.                                           {
  95.                                                           LED3=0;      
  96.                                                         Delay(PWM_LOW);
  97.                                                         LED3=1;
  98.                                               Delay(CYCLE-PWM_LOW);
  99.                                           }
  100.                             LED3=0;
  101.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  102.                                           {
  103.                                                            LED3=0;
  104.                                                            Delay(PWM_LOW);
  105.                                                            LED3=1;
  106.                                                 Delay(CYCLE-PWM_LOW);
  107.                                 }

  108. /*--------第五顆LED燈呼吸----------*/
  109.                             LED4=1;
  110.                             Delay(500);   
  111.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  112.                                           {
  113.                                                            LED4=0;      
  114.                                                            Delay(PWM_LOW);
  115.                                                            LED4=1;      
  116.                                                 Delay(CYCLE-PWM_LOW);
  117.                                 }
  118.                             LED4=0;
  119.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  120.                                           {
  121.                                                            LED4=0;
  122.                                                            Delay(PWM_LOW);
  123.                                                            LED4=1;
  124.                                                 Delay(CYCLE-PWM_LOW);
  125.                                 }

  126. /*--------第六顆LED燈呼吸----------*/
  127.                             LED5=1;
  128.                             Delay(500);     
  129.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  130.                                           {
  131.                                                            LED5=0;     
  132.                                                            Delay(PWM_LOW);
  133.                                                            LED5=1;      
  134.                                                 Delay(CYCLE-PWM_LOW);
  135.                                 }
  136.                             LED5=0;
  137.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  138.                                           {
  139.                                                            LED5=0;
  140.                                                            Delay(PWM_LOW);
  141.                                                            LED5=1;
  142.                                                 Delay(CYCLE-PWM_LOW);
  143.                                 }

  144. /*--------第七顆LED燈呼吸----------*/
  145.                             LED6=1;
  146.                             Delay(500);     
  147.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  148.                                           {
  149.                                                            LED6=0;  
  150.                                                            Delay(PWM_LOW);
  151.                                                            LED6=1;      
  152.                                                 Delay(CYCLE-PWM_LOW);
  153.                                 }
  154.                             LED6=0;
  155.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  156.                                           {
  157.                                                            LED6=0;
  158.                                                            Delay(PWM_LOW);
  159.                                                            LED6=1;
  160.                                                 Delay(CYCLE-PWM_LOW);
  161.                                 }

  162. /*--------第八顆LED燈呼吸----------*/
  163.                             LED7=1;
  164.                             Delay(500);   
  165.                             for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  166.                                           {
  167.                                                            LED7=0;   
  168.                                                            Delay(PWM_LOW);
  169.                                                            LED7=1;
  170.                                                 Delay(CYCLE-PWM_LOW);
  171.                                 }
  172.                             LED7=0;
  173.                             for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  174.                                           {
  175. ……………………

  176. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


完整的Word格式文檔51黑下載地址:
呼吸燈報告.doc (339 KB, 下載次數: 43)
回復

使用道具 舉報

ID:301752 發表于 2018-4-11 17:29 | 顯示全部樓層
用不了,沒啥用,連線之后一點反應都沒
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99在线观看视频 | 亚洲人在线观看视频 | 99精品在线 | 99国产精品久久久久老师 | 欧美不卡视频 | 久久久91精品国产一区二区三区 | 日韩小视频| 成人在线观看免费观看 | 亚洲91| 日韩精品在线播放 | 欧美日韩在线观看视频 | 国产亚洲www | 午夜在线视频一区二区三区 | 99精品欧美一区二区三区综合在线 | 国产高清精品一区二区三区 | 久久久青草婷婷精品综合日韩 | 一级免费a | 欧洲精品在线观看 | 欧美亚洲视频在线观看 | 国产欧美精品一区二区色综合 | 男人的天堂久久 | 成人高清视频在线观看 | 免费在线视频精品 | 波多野结衣二区 | 91在线看网站 | 久久精品网 | 久久国产传媒 | 仙人掌旅馆在线观看 | 国产精品久久久久久二区 | 91在线电影 | 久久亚洲国产精品日日av夜夜 | 欧美日韩精品区 | 91免费高清 | 免费欧美视频 | 九九九久久国产免费 | 日韩精品在线一区 | 国产精品久久久久久久久久久免费看 | 色呦呦在线 | 三级黄片毛片 | 91精品午夜窝窝看片 | 国产成人精品久久 |