亚洲电影av-亚洲第一综合网站-亚洲第一在线-亚洲第一影院-成年人视频在线免费-成年人视频在线观看免费

電子方案開發供應鏈平臺
一鍵發布任務
獲取驗證碼
返回

發布成功


贊賞作者

贊賞金額:

  • ¥2
  • ¥5
  • ¥10
  • ¥50
  • ¥100
  • ¥200

支付金額:5

支付方式:

微信支付

贊賞成功!
你的贊賞是對作者最大的肯定~?

當前位置 : 首頁 > 方案訊 > 方案訊詳情
軟件開發第二講 - LED閃爍(定時器、面向對象程序結構)——用戶劉工程師撰稿
發布時間:2020-03-23 閱讀量:1642 來源:我愛方案網 作者:劉杰

【編者按】設計PCB,單片機語言,通過結構體Hardware_Init的函數指針調用系統初始化函數,完成GPIO的初始化,接著進入主循環,延時500ms將運行指示燈翻轉,實現LED閃爍功能。可應用在實現交通燈、熒光棒、燈牌等產品,實現技術產品化。


一、工具鏈接


1、Keil c51 UV4

https://yunpan.360.cn/surl_yrIfYYmeRFk

2、STC-ISP下載軟件

https://yunpan.360.cn/surl_yxH4CuUUvI3

 

二、學習板獲取方式


方法1:自己設計PCB,自行打板焊接;

方法2:用作者設計的PCB,自行打板焊接。


1.png



三、程序功能


1、將通過Delay延時實現LED閃爍的代碼結構調整為面向對象結構;

2、用定時器實現LED閃爍。

 

四、硬件部分


2.png


五、面向對象知識


面向對象是軟件開發方法,是相對于面向過程來講的。通過把數據與方法組織為一個整體來看待,從更高的層次來進行系統建模,更貼近事物的自然運行模式;


單片機C語言的面向對象編程,是利用結構體,將變量、指針、函數等進行封裝,達到編程更加方便、程序可讀性更好、方便移植等目的。

 

1、結構體

結構體是由一系列具有相同類型或不同類型的數據構成的數據集合。


常用的定義方法:

typedef struct

{

  變量;

  指針;

  函數指針;

} 結構體名稱_t;

 

2、指針

指針是地址,指向內存中的變量。

常用的定義方法:數據類型 * 指針名;


3、函數指針

函數指針是指向函數的指針變量。

常用的定義方法:返回值類型 ( * 指針變量名) ([形參列表]);

 

六、編程說明 - 面向對象程序結構


1、文件結構如下:

 

3.png


main.c  -> 主函數文件,包含main函數等;

Public.c -> 公共函數文件,包含Delay延時函數等;

Sys_init -> 系統初始化函數,包含GPIO初始化函數等;

LED.c    -> LED外設函數,包含LED打開、關閉函數等。

 

2、主函數如下:

 

 4.png

 

 

 

運行流程:

通過結構體Hardware_Init的函數指針調用系統初始化函數,完成GPIO的初始化,接著進入主循環,延時500ms將運行指示燈翻轉,實現LED閃爍功能。

 

3、源代碼

版權需要,這部分內容,請在微信公眾號閱讀。

 

七、定時器


5.png


工作流程:通過寄存器配置定時器的工作模式。設定定時值。定時器啟動后,定時器在時鐘源的驅動下向下計數,當計數到0時,中斷標志位TF0置位,觸發定時器中斷,此時可以重新設定時值或自動重裝定時值,重新計數,周而復始。 如果定時器中斷開啟了,CPU會停下手頭的工作,轉而去運行定時器中斷函數,中斷函數運行完之后,CPU繼續干手頭的工作。

 

八、中斷概念

     

1、中斷存在的意義

為了提高CPU快速處理緊急事件的能力,比如按鍵中斷、定時任務、故障報警、接口通信等。


2、中斷概念

舉例:碼農A在全神貫注的擼代碼,突然,手機鈴聲響起,追求已久的女神竟然打電話過來了,然后快速的接聽了電話,接聽完電話,碼農A繼續擼代碼。

  

主循環     -> 碼農A擼代碼

手機鈴聲   -> 中斷標志位

接聽電話   -> 中斷處理

中斷返回   - >碼農A繼續擼代碼

     

 

九、編程說明 - 定時器


1、文件結構如下:

 6.png

 

main.c  -> 主函數文件,包含main函數等;

Public.c -> 公共函數文件,包含Delay延時函數等;

Sys_init -> 系統初始化函數,包含GPIO初始化函數等;

LED.c    -> LED外設函數,包含LED打開、關閉函數等。

Timer0.c -> 定時器函數,包含定時器初始化,中斷函數等

 

2、主函數如下:


7.png


運行流程:


通過結構體Hardware_Init的函數指針調用系統初始化函數,完成GPIO與定時器0的初始化,接著進入主循環,CPU閑著。間隔一定時間進入定時器中斷處理函數,實現LED閃爍功能。

 

3、定時器中斷函數

版權需要,這部分內容,請在微信公眾號閱讀。


4、源代碼

版權需要,這部分內容,請在微信公眾號閱讀。

      

十、觀看視頻


地址: https://live.bilibili.com/21988510

 

別具一格的單片機實戰項目免費教學,以產品為導向,一起做項目的形式,加qq 1273755275拉入學習交流群。
開源項目,開發工具,技術資料以及更多原創技術文章,請關注微信公眾號:硬件家園 yjjy168168168

 

作者:劉杰,在軟硬件技術上有10年的經驗,在單片機的經驗更是突出,解決過多個單片機難題,可接單片機和軟件開發等項目。目前在開講單片機的教學,教程會在我愛方案網更新,敬請期待!


文章評論

您需要登錄才可以對文章進行評論。

沒有賬號?立即注冊

最新活動
意見反饋
取消