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

專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

單片機的延時閃爍

作者:韓原123   來源:轉自韓原123   點擊數(shù):  更新時間:2014年07月28日   【字體:

 

 
 
我剛剛看了一些關于單片機的知識,第一個就是關于led燈閃爍的,led燈的發(fā)光原理就是加電壓,它有一個限流電阻,一個二極管,接地。不同的板子led之間的不同就是改變家的電壓還是改變接地。我使用的led燈改變的是接地,即板子上已經(jīng)給了電壓,而我則可以改變接地電壓,所以如果我給接地電壓高的話,二極管就不會亮,我給低,二極管就亮。
 
         而要想實現(xiàn)閃爍,那就是不斷的給led的接地口賦高電平,低電平,這樣不斷循環(huán),就實現(xiàn)了閃爍。
 
         現(xiàn)在的關鍵就是停頓時間的實現(xiàn),比如我想實現(xiàn)1s內的閃爍,就是有0.5s亮,有0.5s滅。這時就要延時函數(shù)了,因為你一閃一滅是很快的,必須加延時才能,實現(xiàn)這種功能。
 
         延時函數(shù)可以分為好幾類,比如你自己寫個延時函數(shù)如
 
void delay_long(unsigned int uiDelayLong)
 
    {
 
       unsigned int i;
 
       unsigned int j;
 
       for(i=0;i
 
       {
 
          for(j=0;j<500;j++)  //內嵌循環(huán)的空指令數(shù)量
 
              {
 
                 ; //一個分號相當于執(zhí)行一條空語句
 
              }
 
       }
 
    }
 
這就是一個延時函數(shù),然后在主程序中你運行這個函數(shù),就會延時了。看起來好像很不錯的實現(xiàn)了目標。可是這樣會有一個后果,在執(zhí)行延時函數(shù)的過程中,別的任務就不能處理了,就只能完成這一個任務,這當然就不好了。
 
         下面就有了另外一種方法,這種方法是利用主程序中的循環(huán)次數(shù)來實現(xiàn)延時。原理很簡單,因為單片機永遠是出于死循環(huán)中的,那你實現(xiàn)一個循環(huán)需要一定的時間吧,而且基本每次你實現(xiàn)循環(huán)的時間也差不了多少,那這樣我就可以利用了,我統(tǒng)計你運行的次數(shù),再乘上你每次運行的時間,這樣不就能得到一段時間了嗎?然后利用這段時間進行延時,不就能達到目標了嗎?這種方法的確很棒。
 
         但真的完美嗎?不足的就是每次循環(huán)究竟需要多長時間,這個需要你不斷的估計,你只要往程序中加點內容,那循環(huán)時間就好變化,然后就要修改統(tǒng)計次數(shù),這個過程需要一遍一遍的做,效率不高,很煩,對于后期很不好。
 
         人總是最求完美的,雖然永遠做不到。下面就有人有了更好的方法了,非常完美。
 
         這個方法跟上面的原理有點類似,也是通過知道運行時間,然后通過統(tǒng)計運行次數(shù)來得到一段時間用于循環(huán)。想想單片機中有一個部分它的運行時間是固定的,想到了嗎?沒錯,定時器啊!
 
         我們可以通過設置定時器來設定我們所說的運行時間,而且比較不錯。TMOD的工作方式設為0X01,就是定時器1模式下的工作方式1。然后高八位TH0=0xf8,低八位TL0=0x2f,其實就是計數(shù)值為2000,65535-2000=63535,63535的十六進制值就是f82f。這樣利用上面的原理,定時器每隔一段時間就會產(chǎn)生中斷,然后在服務程序中設置一個變量,每次中斷都自加一次,當達到我們設定的值時,就實現(xiàn)燈亮還是燈滅,然后變量清0,再繼續(xù)下去,就能實現(xiàn)led燈的閃爍了。
 
         以上就是關于led燈閃爍的知識,硬件上原理很簡單,軟件上給出了三種方法實現(xiàn)閃爍。三種方法是不斷推進的,原理或相同或不同,我是有所悟了。
 
         原理抽象為主動實現(xiàn),被動實現(xiàn)。后面兩個可以認為是接力打力,但第一種方法其實也是,cpu每運行一個指令是多長時間,然后我讓它運行多少次,這兩個相乘就得到我要的時間。而到了第二個時,也是每次運行時間相乘運行次數(shù)得到我要的時間,只是這次它的每次運行時間沒有刻意去得到,而是利用了程序中的死循環(huán)。到了第三個,也是這樣,每次運行時間利用了定時器,這樣更加精確了,這到和第一種方法有點像了,只是沒浪費cpu,看來不浪費cpu就是好方法了。本質上延時都是運行時間相乘運行次數(shù)。
 
關閉窗口

相關文章

主站蜘蛛池模板: 日韩欧美成人一区二区三区 | 午夜视频网站 | 91久久精品日日躁夜夜躁欧美 | 91色视频在线观看 | 成人久久久 | 特级丰满少妇一级aaaa爱毛片 | 免费成人高清 | 亚洲福利网 | 国产乱码精品一区二区三区五月婷 | 久久网亚洲 | 黄色免费网址大全 | 久久久www成人免费无遮挡大片 | 亚洲国产精品久久人人爱 | 羞羞的视频在线 | 一区视频| 精品毛片 | www.国产视频 | 亚洲精品成人网 | 成人欧美一区二区三区 | 一呦二呦三呦国产精品 | 视频一区在线播放 | 欧美一级在线观看 | 狠狠久 | 97精品超碰一区二区三区 | 成人久久久 | 操夜夜 | 国产日韩欧美二区 | 久久精品中文字幕 | 国产精品1区 | 91一区二区 | 久久在线| 视频在线一区 | 色吧综合 | 看真人视频一级毛片 | 日韩中文字幕在线观看 | 成人av网站在线观看 | 亚州中文字幕 | 蜜桃视频成人 | aaa级片| 性色视频| 国产精品99久久免费观看 |