在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

跑馬燈程序控制發光二極管設計方案

454398 ? 來源:博客園 ? 作者:Christal_R ? 2020-10-20 14:18 ? 次閱讀

1. I/O 口的結構及特點

Atmega8 有23 個I/O 引腳,分成3 個8 位的端口B、C 和D,其中C 口只有7 位

Atmega8 采用3個8位寄存器來控制I/O端口,它們分別是:方向寄存器DDRx、數據寄存器PORTx、輸入引腳寄存器PINx

x為B或C 或D,分別代表B口、C口或D 口;

n為0~7,代表寄存器中的位置;

其中DDRx 和PORTx 是可讀寫寄存器,而PINx 為只讀寄存器;

每個I/O引腳內部都有獨立的上拉電阻電路,可通過程序設置內部上拉電阻是否有效。

方向寄存器DDRx中的每個位用于控制I/O口一個引腳的輸入輸出方向,即控制I/O口的工作模式為輸出模式還是輸入模式。

當DDRxn=1 時,I/O 的Pxn 引腳處于輸出模式。此時

若PORTxn=1時,I/O引腳呈高電平,同時可提供輸出20mA 的電流

若PORTxn=0時,I/O引腳呈低電平,同時可吸收20mA 的電流。

當 DDRxn=0 時,I/O 的Pxn 引腳處于輸入模式。此時

引腳寄存器PINxn 中的數據就是外部引腳的實際電平;

此時可通過PORTxn 的設置可控制內部的上拉電阻使用或不使用。

注意事項:

使用AVR的I/O 口,首先應正確設置其工作模式(輸入模式還是輸出模式),設置DDRx;

當I/O工作在輸入模式(DDRxn=0)時,讀取引腳上的電平應取PINxn的值,而不是PORTxn的值;

當I/O口工作在輸入模式(DDRxn=0)時,應根據實際情況設置內部上拉電阻,利用內部上拉電阻可以節省外部上拉電阻;

將I/O空工作模式由輸出模式設置為輸入模式后,必須等待一個時鐘周期后才能正確的讀到外部引腳的值

2. 跑馬燈程序控制發光二極管

我們選擇用PD0~PD7來控制8個發光二極管循環點亮,從而實現“跑馬燈”

所以電路圖如圖所示:

問:如果改變 delay_ms 的時間會變的怎樣呢?

=> 跑馬燈的變換速度改變。

問:如果直接讓 PORTD = ( 1<

=>PORTD = ~( 1<

=>PORTD = ( 1<

問:能不能添加或修改程序,改變燈亮的順序和時間呢?

=> 改變循環條件就可以改變亮燈的順序,如把i++改為i+=2,即可實現隔一盞燈亮一個;

=> 亮燈時間改變延遲時間delay_ms()的傳入參數即可。

3. 單個LED數碼管練習

數碼管的a、b、c、d、e、f、g七個發光二極管加不同的電平,二極管顯示不同亮暗的組合就可以顯示不同的字形;

以1為高電平,0為低電平,給出字形碼表:

即0x3F表示的就是字型‘0’,0x06表示的就是字型‘1’......;

所以直接把這種對應關系存到一個Char型數組里(一個Char型是8位);

想要對應的a、b、c、d、e、f、g七個發光二極管展示亮與暗,我們選用PD0~7這8位來控制;

如:想要展示字型‘0’=>‘0’對應字形碼是0x3F=>其中發光二極管的a~f均為亮狀態=>PD0~5均為低電平(低電平亮燈)。

我們用一個LED數碼管顯示數字0~9,仍然使用PD口控制,循環顯示數字

電路圖如圖所示:

了解理論知識后便可以開始編程:(延時函數與上面相同)

單個LED數碼管

問:想顯示A~F 怎么辦呢?

=> num[] 數組再添加多幾個元素,分別是A~F對應的字形碼。

問:能不能顯示像H,L 一類的字母呢?

=> 能,想要顯示字母H,只需要二極管的b、c、e、f、g亮即可;

=> 想要顯示字母L,只需要二極管的d、e、f亮即可。

問:改變了delay_ms 函數的延時時間會怎樣呢?

=> 數字之間的顯示間隔邊長。

問:要顯示小數點我們應該怎么辦呢?

=> 在字形碼表中可以看出,最高位h是沒有作用的,所以可以用h位來控制小數點,當最高位為1時小數點亮,為0時不亮;

=> 如0x5B表示‘2’,那么0x5B + 0x80表示‘2.’。

4.多個LED數碼管實驗

靜態顯示:3小節的內容便是靜態展示

動態顯示:采用各數碼管循環輪流的顯示的方法,當循環頻率較高時,利用人眼的暫留特性,感覺不到數碼管的閃爍,就像看到數碼管在同時發光一樣,類似電影的原理。

兩者對比:動態顯示比靜態顯示占用資源少,耗電少;但是穩定性卻差,程序設計也更為復雜,MCU負擔重。

動態顯示需要一個接口完成字形碼的輸出,另外一個接口完成各數碼管的輪流顯示;

我們要實現從“000.0”到“999.9”的數字變化顯示過程;

用PB口做字形碼的輸出口,用PC0~PC3控制數碼管的輪轉流顯示;

從左數起,其中PC0表示第0個數,PC1表示第1個數,PC2表示第3個數(該數顯示小數點),PC3表示第4個數;所以只有第三個數是特殊的;

參考原理圖如下:

編程實現代碼

1 void main()
2 {
3 //PB口做字形碼的輸出口,PC0~PC3控制數碼管的輪流顯示
4 unsigned char i,j;
5 static unsigned char LedNum[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
6 //顯示小數點要加0x80
7 unsigned char CountNum[4] = {0,0,0,0}; //計數的百、十、個位和十分位
8 DDRB = 0xFF; //設置B口為輸出模式
9 PORTB = 0xFF; //置高電平
10 DDRC = 0x0F;
11 PORTC = 0xFF;
12
13 while(1)
14 {
15 i=0; //用于PC0~PC3的輪轉
16 for(j=0;j<10;j++) //依次顯示4S"000.0"
17 {
18 i = ++i%4;
19 PORTC&=~(1<
20 if(2==i) //如果是第三個數字則加個小數點顯示
21 PORTB = LedNum[0] + 0x80;
22 else //其余情況都沒有小數點顯示
23 PORTB = LedNum[0];
24 delay_ms(10);
25 PORTC|= 0xFF;//復位,切換到下一個輸出口
26 }
27 CountNum[0] = CountNum[1] = CountNum[2] = CountNum[3] = 0; //用于實現4位數的加一變化
28 while(1)
29 {
30 //計數加1,滿9進位、后置0
31 if(CountNum[3]++==9)
32 {
33 CountNum[3] = 0;
34 if(9 == CountNum[2]++)
35 {
36 CountNum[2] = 0;
37 if(9 == CountNum[1]++)
38 {
39 CountNum[1] = 0;
40 CountNum[0]++;
41 }
42 }
43 }
44 //顯示計數值
45 for(i=0;i<4;i++)
46 {
47 PORTC&=~(1<
48 if(2 == i)
49 PORTB = LedNum[CountNum[i]] + 0x80;
50 else
51 PORTB = LedNum[CountNum[i]];
52 delay_ms(10);
53 PORTC|=0xFF;
54 }
55 //999.9的時候退出
56 if(CountNum[0]==9 && CountNum[1]==9 && CountNum[2]==9 && CountNum[3]==9)
57 break;
58 }
59 }
60 }
多個LED數碼管


編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 發光二極管
    +關注

    關注

    13

    文章

    1202

    瀏覽量

    66406
  • led數碼管
    +關注

    關注

    2

    文章

    73

    瀏覽量

    22111
收藏 人收藏

    評論

    相關推薦

    基于51單片機的多模式音樂跑馬燈

    具體實現功能 1、16個發光二極管跑馬燈跑馬燈有10種模式。 2、按鍵可以切換跑馬燈模式,且跑馬燈速度可以用按鍵進行
    的頭像 發表于 10-22 14:10 ?468次閱讀
    基于51單片機的多模式音樂<b class='flag-5'>跑馬燈</b>

    觸發二極管發光二極管的區別

    觸發二極管(也稱為雙向觸發二極管或DIAC)與發光二極管(LED)在多個方面存在顯著差異,包括工作原理、結構、性能特點以及應用領域等。
    的頭像 發表于 09-23 18:21 ?327次閱讀

    發光二極管的特點和應用

    發光二極管(LED)是一種能將電能轉化為光能的半導體電子元件。
    的頭像 發表于 08-29 18:21 ?1161次閱讀

    貼片發光二極管怎么測量好壞

    貼片發光二極管(SMD LED)是一種常見的電子元件,廣泛應用于各種電子產品和照明設備中。在實際應用過程中,我們經常需要對貼片發光二極管進行檢測和測量,以確保其性能和質量。 貼片發光二極管的基本知識
    的頭像 發表于 07-10 11:29 ?1193次閱讀

    開關二極管發光二極管的區別

    在電子領域中,二極管是一種基礎的半導體器件,廣泛應用于各種電路中。其中,開關二極管發光二極管是兩種常見的二極管類型,它們在功能、結構、工作原理以及應用上都存在著顯著的區別。本文將詳細
    的頭像 發表于 05-31 17:55 ?1249次閱讀

    發光二極管封裝件的散熱 發光二極管的原理圖繪制

    發光二極管,簡稱為LED,是一種常用的發光器件,通過電子與空穴復合釋放能量發光,它在照明領域應用廣泛。
    的頭像 發表于 03-07 15:15 ?2646次閱讀
    <b class='flag-5'>發光二極管</b>封裝件的散熱 <b class='flag-5'>發光二極管</b>的原理圖繪制

    紫外發光二極管發光原理 紫外發光二極管的結構

    紫外發光二極管是指可發出波長約400nm的近紫外光的發光二極管(led)。
    的頭像 發表于 02-26 16:03 ?2789次閱讀
    紫外<b class='flag-5'>發光二極管</b>的<b class='flag-5'>發光</b>原理 紫外<b class='flag-5'>發光二極管</b>的結構

    發光二極管的結構 發光二極管串聯電阻的計算方法

    發光二極管,簡稱為**LED,是一種常用的發光器件,通過電子與空穴復合釋放能量發光,它在照明領域應用廣泛。
    的頭像 發表于 02-20 13:56 ?2047次閱讀
    <b class='flag-5'>發光二極管</b>的結構 <b class='flag-5'>發光二極管</b>串聯電阻的計算方法

    發光二極管是由什么材料制成的 發光二極管是半導體嗎

    發光二極管(Light Emitting Diode,LED)是一種電子器件,可以將電能轉化為可見光。它由半導體材料制成,是一種先進的光電器件。本文將詳細介紹發光二極管的制作材料以及其性質
    的頭像 發表于 02-19 17:37 ?3016次閱讀

    發光二極管正負極接反是短路還是斷路 貼片發光二極管正負極判斷

    發光二極管正負極接反會導致斷路。 發光二極管(Light Emitting Diode, LED)是一種特殊的二極管,它可以將電能轉化為可見光或其他形式的光。它的正負極是非常重要的,接反會使其正常
    的頭像 發表于 02-18 11:12 ?3357次閱讀

    led發光二極管是半導體嗎 led發光二極管怎么測量好壞

    是的,LED發光二極管是半導體器件。它是一種能夠將電能轉化為光能的設備,具有高效、長壽命和環保的特點。在現代生活中,LED發光二極管已經廣泛應用于照明、顯示、通信等領域。 為了測量LED發光二極管
    的頭像 發表于 02-02 16:55 ?1130次閱讀

    什么是紅外二極管發光二極管?紅外二極管發光二極管的區別

    什么是紅外二極管發光二極管又是什么呢?紅外二極管發光二極管的區別? 紅外二極管發光二極管
    的頭像 發表于 01-26 15:42 ?1991次閱讀

    基于有機半導體的有機發光二極管設計

    有機發光二極管 (Organic Light Emitting Diode, OLED)是一種基于有機半導體的發光二極管器件。
    的頭像 發表于 01-26 10:22 ?930次閱讀
    基于有機半導體的有機<b class='flag-5'>發光二極管</b>設計

    發光二極管正負極判斷 發光二極管的工作原理

    發光二極管(Light Emitting Diode, LED)是一種能夠將電能轉化為光能的電子器件。它具有使用方便、壽命長、能效高、響應速度快等優點,因此廣泛應用于照明、指示、顯示等領域。本文將
    的頭像 發表于 01-25 14:26 ?4395次閱讀

    發光二極管工作原理 發光二極管正負極判斷

    發光二極管(Light Emitting Diode,簡稱LED)是一種通過電流作用下發光的電子元件。它在現代電子設備中被廣泛應用,如指示燈、顯示屏、汽車照明等。本文將詳細介紹發光二極管的工作原理
    的頭像 發表于 01-23 14:23 ?1986次閱讀
    主站蜘蛛池模板: vip免费观看| www.色妞| 一区卡二区卡三区卡视频| 手机看片福利在线| 国产精品久久婷婷六月丁香| 色版视频| 在线观看网站国产| 天天干天天插天天操| 97蜜桃| 国产色婷婷免费视频| 美女网站视频一区| 免费一级欧美在线观看视频片| 色多多在线观看播放| 日本成本人三级在线观看2018| 特级生活片| 午夜欧美成人久久久久久| 亚洲综合啪啪| 亚洲国产欧美精品一区二区三区| 正在播放91| 亚洲婷婷六月| 性夜影院午夜看片| 五月婷婷综合激情| 日本黄色大片免费观看| 国模大胆一区二区三区| 精品色综合| 国产欧美综合在线| 国产精品毛片一区二区三区| 一级高清| 天天爱天天做天天爽夜夜揉| 久久久久久国产精品免费免| 看黄免费在线| 成人影院在线观看视频| www.天天操.com| 色中色资源| 99久久精品费精品国产一区二| 男人的j桶女人的j视频| 激情五月社区| 亚洲综合狠狠| 你懂在线| 成人在线91| 午夜一区二区在线观看|