由Proteus仿真入門單片機學(xué)習(xí)
圖1 所示電路的核心部件是信號處理器U1,雙擊它時可對它進(jìn)行相應(yīng)的設(shè)定,完成相應(yīng)的設(shè)定后其功能就完全可以用來履行已燒入程序代碼的CPU 的功能;時鐘電路有晶體振蕩器Y1 和瓷片電容C7、C8 組成;信號由U1 的P10-P17 這8 個輸出口輸出,信號再經(jīng)過上來電阻RP1、R1-R8 分壓輸出和通過電壓跟隨器電路轉(zhuǎn)化成近似于正弦波信號。
電阻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ù)以上結(jié)果,由式(3)可計算出R1-R8 的阻值關(guān)系,并按照常用電阻阻值規(guī)則,可取定如圖1 電路圖所示電阻阻值。
圖2 S(n)的在Excel 里的折線圖
3 設(shè)計相應(yīng)程序
參照前面所設(shè)計電路,利用時間中斷程序來產(chǎn)生頻率為1KHz 的正弦波,所設(shè)計程序源代碼及相關(guān)注釋如下:
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
在此程序中主要是初始化有關(guān)時鐘中斷寄存器。
void int_init(void)
{ EA=0;//關(guān)閉所有中斷,以保證在調(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ā)生
}
51單片機相關(guān)文章:51單片機教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
評論