當前位置:首頁 > 芯聞號 > 充電吧
[導讀]——以“單片機89C2051 輸出口的正弦波輸出設計”為例 摘要:以學習單片機為目的,為在沒有仿真器和目標板的情況下對單片機內(nèi)部程序運行時有感性的認識,以常用的89C2051 單片機為核心,利用Proteus 仿真軟件的硬件仿

——以“單片機89C2051 輸出口的正弦波輸出設計”為例

摘要:以學習單片機為目的,為在沒有仿真器和目標板的情況下對單片機內(nèi)部程序運行時有感性的認識,以常用的89C2051 單片機為核心,利用Proteus 仿真軟件的硬件仿真模塊建立一個正弦波發(fā)生電路,并運用C 語言編寫相應程序,結合所設計電路在Proteus 仿真軟件的軟件仿真功能進行了綜合仿真,并把仿真結果和實際電路與程序運行的結果進行了比較。據(jù)此,通過從實踐出發(fā)來,把實踐與理論結合在一起的學習方法來達到入門單片機知識。

1 引言

       對于單片機的學習,由于其比較抽象,特別是在編寫程序時,完全只是憑借程序員周密的邏輯思維來進行程序設計,為了讓程序設計員更好的理解和調(diào)試其所設計的程序,所有單片機生產(chǎn)廠家都針對他們的單片機系列設計生產(chǎn)了相應的仿真器。然而這些仿真器的價格卻不菲,無凝這是初次學習單片機時重要考慮的因素。而目前隨著我國電子技術的飛速發(fā)展,我們所有生活上所用到、見到的電子產(chǎn)品都離不開單片機的身影,這也愈加激起我們對單片機的學習熱情。然而在具體學習這門技術時,特別是高校教學時,因為實驗設備不夠和教學課時少等原因,往往都是采用純理論性的或集體性的實驗。而通過這種學習之后,以我個人在校學習時的經(jīng)歷和對一些高校學生的了解,大部分學習者最終都是知識考試過了關,卻什么都不會。針對這一現(xiàn)象,在此本文提倡運用仿真的方法結合具體的設計來學習單片機知識。

目前國外很多軟件設計公司都針對單片機的學習而設計了許多仿真軟件,這使得單片機學習者只需要一臺個人電腦就可以完成單片機程序的設計和調(diào)試,大大降低了我們的學習成本,方便了我們的學習。其中,Proteus[1]是由英國Labcenter 公司開發(fā)的具有硬件電路分析、實物仿真軟件和程序仿真功能的仿真軟件。通過軟件安裝在個人電腦后,可以實現(xiàn)了單片機和SPICE 電路相結合的仿真。在此運用該仿真軟件,設計以AT89C2051[2]的P1 口輸出正弦波為目的的硬件電路和相應程序,通過這一具體的項目設計,把理論與實踐結合起來,以期引導入門單片機學習。

2設計Proteus里的仿真電路

為了對單片機內(nèi)部程序運行時有感性上的理解,在此利用Proteus7 Professional 下的ISIS7 Professional 仿真電路設計軟件設計了如下圖1 所示的電路,該電路所預達到的功能是通過單片機AM89C2051 的P10-P17 口輸出準正弦波并通過虛擬示波器顯示出來,為了避免可能由電路元器件引起后面的調(diào)試工作,電路所有采用的元器件都采用軟件自帶的標準庫里的元器件。


 
圖1 Proteus 中基于AT89C2051 單片機的準正弦波電路[!--empirenews.page--]

圖1 所示電路的核心部件是信號處理器U1,雙擊它時可對它進行相應的設定,完成相應的設定后其功能就完全可以用來履行已燒入程序代碼的CPU 的功能;時鐘電路有晶體振蕩器Y1 和瓷片電容C7、C8 組成;信號由U1 的P10-P17 這8 個輸出口輸出,信號再經(jīng)過上來電阻RP1、R1-R8 分壓輸出和通過電壓跟隨器電路轉化成近似于正弦波信號。

電阻R1 至R8 滿足如下方程:


于是得出S0-S8 分別約為:0、0.0381、0.1464、0.3087、0.5、0.6913、0.8536、0.7619和1。S(n)值確定后,作出S(n)的值在EXCEL 里折線圖如圖2 所示,從圖表中可以看出其形狀類似于正弦信號在-90°到+90°象限內(nèi)的波形。再依據(jù)以上結果,由式(3)可計算出R1-R8 的阻值關系,并按照常用電阻阻值規(guī)則,可取定如圖1 電路圖所示電阻阻值。


 
圖2 S(n)的在Excel 里的折線圖

3 設計相應程序

參照前面所設計電路,利用時間中斷程序來產(chǎn)生頻率為1KHz 的正弦波,所設計程序源代碼及相關注釋如下:

3.1定義P1端口的輸出值

首先定義P1 端口的輸出,P1 端口將按照數(shù)組P1_out[ ]給出的值不停的輸出,也類似于P1 端口的P10 置“1”其他端口置“0”后不停的左移和右移。之所以該數(shù)組的大小為16是因為將輸出正弦波周期在時域上分成16 等分。

code char P1_out[16]=
{0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x06,0x10,0x20,0x40,0x80};

3.2初始化時鐘中斷0和1

在此程序中主要是初始化有關時鐘中斷寄存器。

void int_init(void)
{ EA=0;//關閉所有中斷,以保證在調(diào)用此子程序時中斷不會發(fā)生
TMOD=0x11; //#00000001B ;定義時鐘中斷0 為16 位時鐘發(fā)生器
TCON=0x50; //#00010000B ; 使能時鐘中斷0
IE=0x0a; //#00000010B ; 運行時鐘中斷0
IP=0x02; //#00000010B ; 時鐘中斷0 優(yōu)先
TL0= (65535-1000/16);
TH0= ((65535-1000/16)>>8); /*初始化時鐘中斷0 的計數(shù)寄存器,系統(tǒng)時鐘12MHz, 所以中斷計數(shù)時間為1us,中斷發(fā)生時間為1000/16X1us=1/16ms, 頻率為16KHz,除以16 是因為一個周期被分成16 等分*/

EA=1; //允許中斷發(fā)生
} [!--empirenews.page--]

3.3主程序

#include
#include
#include
void main(void)
{
static short P1_out_cnt=0; //定義對P1 口輸出時計數(shù)
int_init(); //調(diào)用中斷初始化子程序
while(1) //下面為一個無限循環(huán)
{
_nop_();
}
}

3.4時鐘中斷子程序

void timer_0 (void) interrupt 1 using 1
{ TL0= (65535-1000/16);
TH0= ((65535-1000/16)>>8); //重置時鐘中斷0 的時間計數(shù)寄存器值
P1=P1_out[P1_out_cnt]; //P1 口按數(shù)組給定值輸出
P1_out_cnt++; //指向數(shù)組中下一個值
P1_out_cnt&=0x0f; //00001111B,保證0≤P1_out_cnt≤15
}

4 仿真與實驗

在以上工作完成之后,通過仿真軟件Proteus7 professional 下面的ISIS7 Professional 菜單窗口里對一些參數(shù)進行設定,為了簡單完成仿真,在此只對必要的參數(shù)進行設定:首先對Design/Configure Power Rail 下的電源Vcc=5V 和GND=0 進行設定,其次是對Source/add or remove source code file 下的源程序代碼名和Code generation tool=ASEM51 進行設定,在次是對雙擊單片機U1 彈出的菜單進行Clock Frequency 和Program file 目標代碼(有源代碼編譯后產(chǎn)生的HEX 后綴名文件)的設定。最后點擊Debug/Execute 便開始仿真運行,在運行過程中可以看到電腦屏上電路圖中U1 輸出口的輸出狀態(tài),虛擬示波器上顯示如圖3 所示的波形。

為了對所仿真的結果做進一步的認證,在此設計了實際的電路來與之加以比較,如圖4所示是按照圖1 電路圖設計了實際電路板之后,用示波器對其輸出進行測試所得實際波形,實驗表明仿真的結果與實際的測試結果相一致。


圖3 仿真輸出波形

 
圖4 實際輸出波形

5 結束語

對所設計的C 語言程序結合硬件電路的進行了仿真,并通過虛擬示波器顯示了所設計程序運行的結果,并比較了仿真與實際電路運行輸出結果,表明了通過Proteus 仿真軟件可以達到與通過實際電路來學習單片機的效果。

完整的設計了一個項目的硬件電路和C 程序,通過真實具體的正弦波發(fā)生電路及其程序的設計來達到學習單片機引路作用,增強了學習者對單片機工作原理和應用設計的理解,為單片機初學者提供了一種切實可行的方法。
 
附圖實際測試電路板
注:實際電路板上包涵了文中圖1 的電路

 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉