衡阳派盒市场营销有限公司

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

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

3天內不再提示

一文解析蜂鳴器驅動及LED驅動編寫

454398 ? 來源:博客園 ? 作者:z572089387 ? 2020-09-23 15:30 ? 次閱讀

一:LED驅動編寫

要編寫LED驅動,首先的知道開發板的構造;開發板分為核心板與底板;編寫驅動的第一步就是要看開發板,找到LED燈在開發板上的位置及所對應的名字;第一步就要查看核心板電路圖,以及底板電路圖;最后就是查看開發板手冊,然后進行程序編寫:

通過看開發板我們可以知道LED燈的位置的核心板上,在核心板上找到LED的電路圖,Ctrl+F可以在文檔中快捷查找:

通過電路圖我們可以看出:LED燈的一端已經接高電平,只要給另一端加低電平LED就會被點亮。

然后查看LED在核心板上的引腳:

一文解析蜂鳴器驅動及LED驅動編寫

由上圖我們可以看出,LED1對應的是GPM4_0

然后通過芯片數據手冊可以查到它的具體用法:

通過手冊我們可以看出:GPM4CON 置一輸出,表示控制,置零輸入,表示檢測,GPM4DAT表示它的值和引腳的電壓狀態對于,值為一時表示高電平,值為零時表示底電平,下面貼出代碼:

 1     .global main
 2 main:
 3     mov ip, sp
 4     sub sp, sp, #12
 5     stmdb sp!, {fp, ip, lr}
 6     add fp, sp, #8
 7 
 8     ldr r3, gpmcon
 9     ldr r0, =0x1
10     str r0, [r3]
11 
12     ldr r3, gpmdat
13     ldr r0, =0x0
14     str r0, [r3]
15 
16     add sp, fp, #4
17     ldmdb sp, {fp, sp, pc}    
18 
19 gpmcon:
20     .word 0x110002e0
21 
22 gpmdat:
23     .word 0x110002e4

下面的用C語言代碼是實現四個LED燈的閃爍

 1 #define GPM4CON (*(unsigned long *)0x110002e0)//宏定義
 2 #define GPM4DAT (*(unsigned long *)0x110002e4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 int main()
 6 {
 7     GPM4CON &= ~0xffff;
 8     GPM4CON |= 0x1111;
 9     
10     while(1) {
11         GPM4DAT |= 0xf;//led off
12         udelay(250000);
13         GPM4DAT &= ~0xf;
14         udelay(250000);//led on
15     }    
16 }

跑馬燈:

 1 #define GPM4CON (*(unsigned long *)0x110002e0)
 2 #define GPM4DAT (*(unsigned long *)0x110002e4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 
 6 int main()
 7 {
 8     
 9     GPM4CON &= ~0xffff;
10     GPM4CON |= 0x1111;
11     unsigned long tmp = 0xf;
12 
13     while(1) {
14 
15         if((tmp & 0xf) == 0) {
16             tmp = 0xf;
17         }
18 
19         GPM4DAT = tmp << 1;
20         tmp = GPM4DAT;
21         udelay(250000);
22 
23     }
24 
25 }

流水燈:

 1 #define GPM4CON (*(unsigned long *)0x110002e0)
 2 #define GPM4DAT (*(unsigned long *)0x110002e4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 
 6 int main()
 7 {
 8     
 9     GPM4CON &= ~0xffff;
10     GPM4CON |= 0x1111;
11     unsigned long i = 0;
12     while(1) {
13         GPM4DAT = 0xf;
14         GPM4DAT &= ~(1 << i);//流水
15         udelay(500000);//延時
16         i++;
17         if(i == 4) {
18             i = 0;
19         } 
20     }
21 
22 }

上面程序總用到的延時函數udelay(),由于U-Boot作為嵌入式Linux系統的引導,不具有標準C庫中的內容。要使用像printf函數,延時函數udelay(),就需要u-boot中提供的。u-boot函數內容在u-boot源碼文件中就需要u-boot中提供的。u-boot函數內容在u-boot源碼文件中的System.map文件中。System.map文件是被內核所使用的符號表。符號表是一個在符號名稱與它們的存儲器位置間的查詢表格。符號名稱可能是變量的名稱或是函數名稱。當要查詢符號名稱的位置或是特定位置的符號名稱時,就會需要System.map。找到函數的對應地址,就可以對它進行使用了;

二:蜂鳴器驅動編寫:

通過開發板我們可以看出蜂鳴器位于底板:

查看電路圖:

通過查看底板手冊可知,當XpwmTOUT0處于高電平是蜂鳴器就會響起;通過XpwmTOUT0我們在核心板上找到它的引腳

然后查看芯片手冊:

由圖我們可以看出GPD0CON為0x1時控制控制:GPD0DAT為1為高電平:下面貼出匯編代碼:

 1     .global main
 2 main:
 3     mov ip, sp
 4     sub sp, sp, #12
 5     stmdb sp!, {fp, ip, lr}
 6     add fp, sp, #8
 7 
 8     ldr r3, gpdcon
 9     ldr r0, =0x1
10     str r0, [r3]
11 
12     ldr r3, gpmdat
13     ldr r0, =0x1
14     str r0, [r3]
15 
16     add sp, fp, #4
17     ldmdb sp, {fp, sp, pc}    
18 
19 gpdcon:
20     .word 0x114000a0
21 
22 gpmdat:
23     .word 0x114000a4

C語言的代碼:

 1 #define GPD0CON (*(volatile unsigned long*)0x114000a0)
 2 #define GPD0DAT (*(volatile unsigned long*)0x114000a4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 int main(void)
 6 {   
 7     GPD0CON =  0x0001;
 8     while(1){
 9         GPD0DAT = 0x1;
10         udelay(250000);
11         GPD0DAT = 0x0;
12         udelay(250000);//延時
13     }
14     
15     return 0;
16 }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23361

    瀏覽量

    663217
  • 存儲器
    +關注

    關注

    38

    文章

    7528

    瀏覽量

    164345
  • LED驅動
    +關注

    關注

    72

    文章

    1007

    瀏覽量

    138186
  • 蜂鳴器
    +關注

    關注

    12

    文章

    893

    瀏覽量

    46096
收藏 人收藏

    評論

    相關推薦

    讀懂:LED 驅動電路二極管挑選要點

    讀懂:LED 驅動電路二極管挑選要點
    的頭像 發表于 02-06 14:47 ?47次閱讀

    LED驅動板是如何工作的

    ? 市面上LED產品百花齊放,應用場景非常多樣化。很多LED產品需要個核心部件,就是LED驅動板,本期主要講解它是如何工作的。
    的頭像 發表于 12-22 14:23 ?690次閱讀
    <b class='flag-5'>LED</b><b class='flag-5'>驅動</b>板是如何工作的

    LED驅動電源設計四大問題匯總

    LED驅動電源的質量好壞將會直接影響LED的壽命,因此如何做好LED驅動電源是
    的頭像 發表于 11-28 17:14 ?585次閱讀
    <b class='flag-5'>LED</b><b class='flag-5'>驅動</b>電源設計四大問題匯總

    LED驅動器常見故障解決

    LED驅動器是LED照明系統中的關鍵組件,負責將電源電壓轉換為適合LED發光的電壓和電流。LED驅動
    的頭像 發表于 10-14 17:39 ?2631次閱讀

    led驅動電源怎么測量好壞

    LED驅動電源是LED燈具中非常重要的組成部分,它負責將輸入的交流電或直流電轉換為LED所需的恒定電流或恒定電壓。個良好的
    的頭像 發表于 10-14 17:27 ?1190次閱讀

    功率led用pwm驅動和恒流驅動樣嗎?

    功率LED使用PWM(脈沖寬度調制)驅動和恒流驅動在本質上是不同的兩種驅動方式,它們各自具有不同的工作原理、特點和適用場景。
    的頭像 發表于 10-01 14:53 ?1132次閱讀

    有源蜂鳴器驅動電路制作方法

    有源蜂鳴器驅動電路的制作方法主要包括準備工具與材料、焊接電路元件以及測試電路等步驟。以下是個制作方法: 、準備工具與材料 工具 :壓線鉗、熱風槍焊臺(或普通電烙鐵)、萬用表(用于測
    的頭像 發表于 08-09 10:58 ?956次閱讀

    multisim蜂鳴器驅動程序詳解

    以下是關于Multisim蜂鳴器驅動程序的詳解: 蜂鳴器簡介 蜂鳴器種電子設備,用于發出聲音信號。它廣泛應用于各種電子設備中,如電話、鬧
    的頭像 發表于 08-09 10:18 ?1103次閱讀

    無源蜂鳴器怎么才會響 蜂鳴器驅動電路原理圖

    無源蜂鳴器種常見的電子元件,廣泛應用于各種電子設備中,如手機、電腦、家用電器等。它通過電磁感應原理產生聲音,具有體積小、功耗低、響應速度快等優點。 、無源蜂鳴器的工作原理 1.1
    的頭像 發表于 07-02 18:08 ?8949次閱讀
    無源<b class='flag-5'>蜂鳴器</b>怎么才會響 <b class='flag-5'>蜂鳴器</b><b class='flag-5'>驅動</b>電路原理圖

    LED照明恒流驅動芯片特點解析與SM16306推薦

    LED照明恒流驅動芯片是種電子芯片,用于控制和驅動LED燈,以保持電流恒定,從而使LED燈能夠
    的頭像 發表于 03-05 16:51 ?1416次閱讀
    <b class='flag-5'>LED</b>照明恒流<b class='flag-5'>驅動</b>芯片特點<b class='flag-5'>解析</b>與SM16306推薦

    led驅動電源如何調整電流大小的方法

    LED(Light Emitting Diode)是種半導體器件,經常被用作照明、顯示和指示燈。為了驅動LED,需要使用LED
    的頭像 發表于 02-27 17:50 ?7323次閱讀

    led驅動器輸出電流大有什么影響

    LED驅動器是將電源電壓轉換為適合LED工作的電流的設備。LED驅動器的輸出電流大小對LED的工
    的頭像 發表于 02-27 17:37 ?3400次閱讀

    led驅動電源輸出電壓大小有區別嗎?

    LED驅動電源輸出電壓大小有區別嗎?這是個常見且重要的問題。 首先,讓我們來了解什么是LED驅動電源。簡單來說,
    的頭像 發表于 02-27 17:30 ?5686次閱讀

    LED驅動電路圖分享

    LED驅動電路是種用于驅動LED發光的電子電路。LED(發光二極管)是
    的頭像 發表于 02-18 16:55 ?4351次閱讀
    <b class='flag-5'>LED</b><b class='flag-5'>驅動</b>電路圖分享

    典型LED驅動電路圖分享

    LED驅動電路是種電源電路,用于將輸入的電源電壓轉換為適合LED的直流電壓,以驅動LED正常工
    的頭像 發表于 02-07 18:29 ?1.3w次閱讀
    典型<b class='flag-5'>LED</b><b class='flag-5'>驅動</b>電路圖分享
    皇室百家乐官网的玩法技巧和规则| 大发888娱乐城手机| 新濠百家乐的玩法技巧和规则| 百家乐倍投工具| 大发888游戏平台88| 网上现金赌博游戏| 百家乐官网真钱路怎么看| 百威百家乐官网的玩法技巧和规则 | 金堂县| 最新百家乐官网双面数字筹码| 做生意大门方位风水| 百家乐扎金花斗地主| 大发888娱乐城下载英皇国际 | 玩百家乐官网掉房| 新锦江百家乐娱乐网| 大发888破解老虎机| 百家乐官网官网下载| 百家乐官网gamble| 赙彩百家乐游戏规则| 太阳城大酒店| 平博百家乐官网游戏| 百家乐官网如何切牌好| 百家乐视频游戏世界| 威尼斯人娱乐城怎么样| 永寿县| 百家乐官网怎么稳赢| 玩百家乐输澳门百家乐现场| 大发888是什么游戏| 百家乐官网平台要多少钱| 百家乐五式缆投法| 大发888赢钱最多的| 真人百家乐体验金| 百家乐官网代理占成| 火命与金命做生意 | 大众百家乐的玩法技巧和规则| 百家乐官网下载游戏| 免费百家乐官网统计软件| 威尼斯人娱乐城现金开户| 百家乐官网视频双扣| 百家乐趋势图怎么看| 六合彩生肖表|