由Proteus仿真入門單片機學(xué)習(xí)
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è)定,為了簡單完成仿真,在此只對必要的參數(shù)進行設(shè)定:首先對Design/Configure Power Rail 下的電源Vcc=5V 和GND=0 進行設(shè)定,其次是對Source/add or remove source code file 下的源程序代碼名和Code generation tool=ASEM51 進行設(shè)定,在次是對雙擊單片機U1 彈出的菜單進行Clock Frequency 和Program file 目標代碼(有源代碼編譯后產(chǎn)生的HEX 后綴名文件)的設(shè)定。最后點擊Debug/Execute 便開始仿真運行,在運行過程中可以看到電腦屏上電路圖中U1 輸出口的輸出狀態(tài),虛擬示波器上顯示如圖3 所示的波形。
為了對所仿真的結(jié)果做進一步的認證,在此設(shè)計了實際的電路來與之加以比較,如圖4所示是按照圖1 電路圖設(shè)計了實際電路板之后,用示波器對其輸出進行測試所得實際波形,實驗表明仿真的結(jié)果與實際的測試結(jié)果相一致。
圖3 仿真輸出波形
圖4 實際輸出波形
5 結(jié)束語
對所設(shè)計的C 語言程序結(jié)合硬件電路的進行了仿真,并通過虛擬示波器顯示了所設(shè)計程序運行的結(jié)果,并比較了仿真與實際電路運行輸出結(jié)果,表明了通過Proteus 仿真軟件可以達到與通過實際電路來學(xué)習(xí)單片機的效果。
完整的設(shè)計了一個項目的硬件電路和C 程序,通過真實具體的正弦波發(fā)生電路及其程序的設(shè)計來達到學(xué)習(xí)單片機引路作用,增強了學(xué)習(xí)者對單片機工作原理和應(yīng)用設(shè)計的理解,為單片機初學(xué)者提供了一種切實可行的方法。
附圖實際測試電路板
注:實際電路板上包涵了文中圖1 的電路
51單片機相關(guān)文章:51單片機教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
評論