由Proteus仿真入門單片機(jī)學(xué)習(xí)
圖1 所示電路的核心部件是信號(hào)處理器U1,雙擊它時(shí)可對(duì)它進(jìn)行相應(yīng)的設(shè)定,完成相應(yīng)的設(shè)定后其功能就完全可以用來履行已燒入程序代碼的CPU 的功能;時(shí)鐘電路有晶體振蕩器Y1 和瓷片電容C7、C8 組成;信號(hào)由U1 的P10-P17 這8 個(gè)輸出口輸出,信號(hào)再經(jīng)過上來電阻RP1、R1-R8 分壓輸出和通過電壓跟隨器電路轉(zhuǎn)化成近似于正弦波信號(hào)。
電阻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 所示,從圖表中可以看出其形狀類似于正弦信號(hào)在-90°到+90°象限內(nèi)的波形。再依據(jù)以上結(jié)果,由式(3)可計(jì)算出R1-R8 的阻值關(guān)系,并按照常用電阻阻值規(guī)則,可取定如圖1 電路圖所示電阻阻值。
圖2 S(n)的在Excel 里的折線圖
3 設(shè)計(jì)相應(yīng)程序
參照前面所設(shè)計(jì)電路,利用時(shí)間中斷程序來產(chǎn)生頻率為1KHz 的正弦波,所設(shè)計(jì)程序源代碼及相關(guān)注釋如下:
3.1定義P1端口的輸出值
首先定義P1 端口的輸出,P1 端口將按照數(shù)組P1_out[ ]給出的值不停的輸出,也類似于P1 端口的P10 置“1”其他端口置“0”后不停的左移和右移。之所以該數(shù)組的大小為16是因?yàn)閷⑤敵稣也ㄖ芷谠跁r(shí)域上分成16 等分。
code char P1_out[16]=
{0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x06,0x10,0x20,0x40,0x80};
3.2初始化時(shí)鐘中斷0和1
在此程序中主要是初始化有關(guān)時(shí)鐘中斷寄存器。
void int_init(void)
{ EA=0;//關(guān)閉所有中斷,以保證在調(diào)用此子程序時(shí)中斷不會(huì)發(fā)生
TMOD=0x11; //#00000001B ;定義時(shí)鐘中斷0 為16 位時(shí)鐘發(fā)生器
TCON=0x50; //#00010000B ; 使能時(shí)鐘中斷0
IE=0x0a; //#00000010B ; 運(yùn)行時(shí)鐘中斷0
IP=0x02; //#00000010B ; 時(shí)鐘中斷0 優(yōu)先
TL0= (65535-1000/16);
TH0= ((65535-1000/16)>>8); /*初始化時(shí)鐘中斷0 的計(jì)數(shù)寄存器,系統(tǒng)時(shí)鐘12MHz, 所以中斷計(jì)數(shù)時(shí)間為1us,中斷發(fā)生時(shí)間為1000/16X1us=1/16ms, 頻率為16KHz,除以16 是因?yàn)橐粋€(gè)周期被分成16 等分*/
EA=1; //允許中斷發(fā)生
}
51單片機(jī)相關(guān)文章:51單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評(píng)論