女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

跑馬燈程序控制發(fā)光二極管設(shè)計方案

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

1. I/O 口的結(jié)構(gòu)及特點

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

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

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

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

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

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

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

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

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

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

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

引腳寄存器PINxn 中的數(shù)據(jù)就是外部引腳的實際電平;

此時可通過PORTxn 的設(shè)置可控制內(nèi)部的上拉電阻使用或不使用。

注意事項:

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

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

當(dāng)I/O口工作在輸入模式(DDRxn=0)時,應(yīng)根據(jù)實際情況設(shè)置內(nèi)部上拉電阻,利用內(nèi)部上拉電阻可以節(jié)省外部上拉電阻;

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

2. 跑馬燈程序控制發(fā)光二極管

我們選擇用PD0~PD7來控制8個發(fā)光二極管循環(huán)點亮,從而實現(xiàn)“跑馬燈”

所以電路圖如圖所示:

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

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

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

=>PORTD = ~( 1<

=>PORTD = ( 1<

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

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

=> 亮燈時間改變延遲時間delay_ms()的傳入?yún)?shù)即可。

3. 單個LED數(shù)碼管練習(xí)

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

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

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

所以直接把這種對應(yīng)關(guān)系存到一個Char型數(shù)組里(一個Char型是8位);

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

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

我們用一個LED數(shù)碼管顯示數(shù)字0~9,仍然使用PD口控制,循環(huán)顯示數(shù)字

電路圖如圖所示:

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

單個LED數(shù)碼管

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

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

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

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

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

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

=> 數(shù)字之間的顯示間隔邊長。

問:要顯示小數(shù)點我們應(yīng)該怎么辦呢?

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

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

4.多個LED數(shù)碼管實驗

靜態(tài)顯示:3小節(jié)的內(nèi)容便是靜態(tài)展示

動態(tài)顯示:采用各數(shù)碼管循環(huán)輪流的顯示的方法,當(dāng)循環(huán)頻率較高時,利用人眼的暫留特性,感覺不到數(shù)碼管的閃爍,就像看到數(shù)碼管在同時發(fā)光一樣,類似電影的原理。

兩者對比:動態(tài)顯示比靜態(tài)顯示占用資源少,耗電少;但是穩(wěn)定性卻差,程序設(shè)計也更為復(fù)雜,MCU負(fù)擔(dān)重。

動態(tài)顯示需要一個接口完成字形碼的輸出,另外一個接口完成各數(shù)碼管的輪流顯示;

我們要實現(xiàn)從“000.0”到“999.9”的數(shù)字變化顯示過程;

用PB口做字形碼的輸出口,用PC0~PC3控制數(shù)碼管的輪轉(zhuǎn)流顯示;

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

參考原理圖如下:

編程實現(xiàn)代碼

1 void main()
2 {
3 //PB口做字形碼的輸出口,PC0~PC3控制數(shù)碼管的輪流顯示
4 unsigned char i,j;
5 static unsigned char LedNum[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
6 //顯示小數(shù)點要加0x80
7 unsigned char CountNum[4] = {0,0,0,0}; //計數(shù)的百、十、個位和十分位
8 DDRB = 0xFF; //設(shè)置B口為輸出模式
9 PORTB = 0xFF; //置高電平
10 DDRC = 0x0F;
11 PORTC = 0xFF;
12
13 while(1)
14 {
15 i=0; //用于PC0~PC3的輪轉(zhuǎn)
16 for(j=0;j<10;j++) //依次顯示4S"000.0"
17 {
18 i = ++i%4;
19 PORTC&=~(1<
20 if(2==i) //如果是第三個數(shù)字則加個小數(shù)點顯示
21 PORTB = LedNum[0] + 0x80;
22 else //其余情況都沒有小數(shù)點顯示
23 PORTB = LedNum[0];
24 delay_ms(10);
25 PORTC|= 0xFF;//復(fù)位,切換到下一個輸出口
26 }
27 CountNum[0] = CountNum[1] = CountNum[2] = CountNum[3] = 0; //用于實現(xiàn)4位數(shù)的加一變化
28 while(1)
29 {
30 //計數(shù)加1,滿9進(jìn)位、后置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 //顯示計數(shù)值
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數(shù)碼管


編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 發(fā)光二極管
    +關(guān)注

    關(guān)注

    13

    文章

    1213

    瀏覽量

    67238
  • led數(shù)碼管
    +關(guān)注

    關(guān)注

    2

    文章

    73

    瀏覽量

    22448
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    二極管種類及應(yīng)用

    二極管有多種類型:按材料分,有鍺二極管、硅二極管、砷化鎵二極管等;按制作工藝可分為面接觸二極管和點接觸
    發(fā)表于 03-08 16:39

    發(fā)光二極管的問題(有償問答)

    各位大佬,本人小白一個,想請大佬指導(dǎo)一下。 一個12v電源,點亮三顆5mm940發(fā)光二極管,要讓二極管達(dá)到最亮還不傷害燈珠,需要什么元件,怎么連接?(手上有:18650電池,220歐0.25瓦電阻
    發(fā)表于 01-06 14:44

    1310 nm和1550 nm超輻射發(fā)光二極管SLD

    SLD 二極管(超級發(fā)光二極管)是 OCT(光學(xué)相干斷層掃描)、FOG(光纖陀螺儀)以及任何其他需要低相干性和高亮度的研發(fā)應(yīng)用的理想解決方案。當(dāng)訂購以下任意4種交鑰匙 SLED 二極管
    的頭像 發(fā)表于 01-03 06:25 ?535次閱讀
    1310 nm和1550 nm超輻射<b class='flag-5'>發(fā)光二極管</b>SLD

    Aigtek功率放大器應(yīng)用:驅(qū)動線圈點亮發(fā)光二極管

    發(fā)光二極管,簡稱為LED,是一種常用的發(fā)光器件,通過電子與空穴復(fù)合釋放能量發(fā)光,它在照明領(lǐng)域應(yīng)用廣泛。它可高效地將電能轉(zhuǎn)化為光能,在現(xiàn)代社會具有廣泛的用途,如照明、平板顯示、醫(yī)療器件等。今天
    的頭像 發(fā)表于 12-04 11:51 ?467次閱讀
    Aigtek功率放大器應(yīng)用:驅(qū)動線圈點亮<b class='flag-5'>發(fā)光二極管</b>

    二極管發(fā)光二極管的工作原理和有什么區(qū)別

     二極管是半導(dǎo)體二極管的簡稱,是由半導(dǎo)體材料制成的。它有兩根引線(圖15-1),一根叫正極,一根叫負(fù)極。二極管的導(dǎo)電性質(zhì)很特殊。它只允許用流從它的正極流向負(fù)極。這很像自行車的氣門芯只允許氣流從氣筒流向車胎一樣。
    發(fā)表于 10-24 17:22 ?2次下載
    <b class='flag-5'>二極管</b>和<b class='flag-5'>發(fā)光二極管</b>的工作原理和有什么區(qū)別

    基于51單片機(jī)的多模式音樂跑馬燈

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

    光電三極管發(fā)光二極管的區(qū)別

    光電三極管(也稱為光敏三極管)與發(fā)光二極管在性質(zhì)、工作原理、應(yīng)用領(lǐng)域以及結(jié)構(gòu)特征等方面存在顯著的區(qū)別。以下是對兩者區(qū)別的詳細(xì)分析:
    的頭像 發(fā)表于 09-24 11:10 ?1351次閱讀

    觸發(fā)二極管發(fā)光二極管的區(qū)別

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

    發(fā)光二極管的特點和應(yīng)用

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

    發(fā)光二極管的工作原理、特性及應(yīng)用

    發(fā)光二極管(Light Emitting Diode,簡稱LED)是一種半導(dǎo)體發(fā)光器件,具有體積小、壽命長、能耗低、響應(yīng)速度快等優(yōu)點,廣泛應(yīng)用于照明、顯示、通信等領(lǐng)域。 一、發(fā)光二極管的工作原理
    的頭像 發(fā)表于 07-31 11:28 ?5185次閱讀

    貼片發(fā)光二極管怎么測量好壞

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

    貼片發(fā)光二極管正負(fù)極判斷方法

    貼片發(fā)光二極管(SMD LED)是一種廣泛應(yīng)用于電子設(shè)備中的小型發(fā)光元件。正確地識別和連接發(fā)光二極管的正負(fù)極對于確保其正常工作至關(guān)重要。本文將介紹貼片發(fā)光二極管正負(fù)極的判斷方法。 引腳
    的頭像 發(fā)表于 07-10 11:25 ?5857次閱讀

    發(fā)光二極管主要材料是導(dǎo)體嗎

    發(fā)光二極管(LED)是一種半導(dǎo)體器件,其主要材料是半導(dǎo)體材料,而不是導(dǎo)體。 一、引言 發(fā)光二極管(Light Emitting Diode,簡稱LED)是一種半導(dǎo)體器件,能夠?qū)㈦娔苻D(zhuǎn)換為光能。自20
    的頭像 發(fā)表于 07-10 11:21 ?2132次閱讀

    發(fā)光二極管側(cè)并聯(lián)一個電阻的作用

    一個光耦原邊信號傳輸過來,副邊光敏三極管輸出端有一個下拉電阻,三極管集電極直接接5V電源,現(xiàn)在問題是三極管輸出電平不穩(wěn)定,解決辦法是在原邊發(fā)光二極管側(cè)并聯(lián)一個電阻,請問這是什么原理?當(dāng)
    發(fā)表于 06-16 22:27

    閃爍發(fā)光二極管的工作原理及應(yīng)用電路

    閃爍發(fā)光二極管,簡稱閃爍LED,是一種能夠自主發(fā)出閃爍光線的LED。它的工作原理與普通LED相似,都是基于半導(dǎo)體材料的電致發(fā)光效應(yīng)。但閃爍LED在內(nèi)部集成了閃爍控制電路,使得LED能夠按照一定的頻率和模式進(jìn)行閃爍。
    的頭像 發(fā)表于 06-08 11:39 ?4305次閱讀
    閃爍<b class='flag-5'>發(fā)光二極管</b>的工作原理及應(yīng)用電路