新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用PROTEUS對單片機進行仿真的方法與實例

        用PROTEUS對單片機進行仿真的方法與實例

        作者: 時間:2016-11-25 來源:網絡 收藏

        5.編輯元件的屬性
        右擊選元件后再左擊即可編輯元件的屬性,也可以右擊后在快捷菜單中選擇命令Edit Prorerties。如R1的屬性窗口如圖6。



        在對AT89C51的屬性進行編輯時要加入仿真文件,在Program File中單擊出現文件瀏覽對話框,找出LED.hex文件,單擊確定完成添加文件,單擊OK退出。
        6.連線
        在要連線的一個點左擊,移動鼠標到到另一個點再左擊即可畫好一條連線,按 放置導線連接結點,畫好連線的仿真電路圖見圖7。



        AT89C51的VSS、VDD不需要連線,默認VSS=0V、VDD=+5V、GND=0V。
        7.仿真
        單擊仿真進程控制按鈕中的開始仿真,我們可看到發光二極管分別按兩個方向依次點亮。輸出端的小方點紅色代表高點平,藍色代表低電平,灰色代表不確定電平。
        在仿真時單片機的晶振電路和復位電路可以省略不畫,時鐘頻率可以在AT89C51的屬性中設置,默認值為12MHz。
        對于設計好的文件可以保存以便下次調用。
        二、單片機仿真實例
        上面通過一個簡單的例子介紹了Proteus ISIS的基本使用方法,下面再通過筆者設計的幾個實例進一步介紹Proteus ISIS的使用方法和技巧,同時也能夠使大家看到幾個單片機應用的實例。
        1.電感測試儀
        電感測試儀以電感加上電壓后電流增加的規律作為測量依據,因為電感加上電壓后電流增加的速度與電感量相關,通過測量電流達到某一預定值所花的時間就能測量出電感的電感量。單片機使用AT89C2051,測量電路如圖8所示,A為



        AT89C2051內部構造的電壓比較器,利用電壓比較器測量電感中電流的變化,合上開關后電源電壓E+ 加在電感LX和電阻R的串聯回路上,這時回路中電流IL由零開始逐漸增加,在電阻R兩端電壓從0升到0.632E+的過程中,P3.6口輸出為0,當電阻R兩端電壓一旦超過0.632E+后,P3.6口輸出電平即變為1。以P3.6口的輸出狀態為依據,用AT89C2051內部的定時器T0對時間進行計數,再將計數結果顯示出來即得出測量結果。量程可分為多檔,采用兩位半數碼管顯示,單位為mH。我們只要仿真其中的一檔即可,這里取×10檔進行仿真,即讀數乘以10為實際電感量。
        電感測試儀的源程序如下:
        #include
        unsigned char j,m,n,t,DispBuf[3];
        unsigned int L;
        unsigned char code
        BitTab[3]={0xdf,0xef,0xf7};//位驅動碼
        unsigned char code
        DispTab[11]={0x41,0xcf,0x52,0x46,0xcc,0x64,0x60,0x4f,0x40,0x44,0xff};//字形碼
        sbit P1_2=P1^2;
        sbit P3_6=P3^6;
        void Delay1ms(unsigned int count) //延時程序
        {
        for(n=0;n for(m=0;m<250;m++);
        }
        void main() //主程序
        { TMOD=0x01;//定時器T0方式1
        while(1) //無限循環
        {
        t=BitTab[j];//取位值
        P1=P1|0x38;//P1.3-P1.5送1
        P1=P1&t; //P1.3-P1.5輸出取出的位值
        t=DispBuf[j];//取出待顯示的數
        t=DispTab[t];//取字形碼
        P3=t; //字型碼由P3輸出顯示
        Delay1ms(5);
        j++; //j作為數碼管的計數器,取值0-2,顯示程序通過它確認顯示哪個數碼管
        if(j==3)
        j=0;
        TH0=0;
        TL0=0;
        P1_2=0;//測試開始
        TR0=1; //開定時器T0
        for(;P3_6==0;);//判斷電阻上的電壓上升到參考電壓否
        TR0=0;//電壓達到參考電壓,關定時器T0
        P1_2=1;
        L=TL0|(TH0<<8);//取定時器T0中的數值
        L=L-3;
        if(L>=200)
        {
        DispBuf[2]=10;
        DispBuf[1]=10;
        DispBuf[0]=1; //超量程,百位數顯示1,個位、十位不顯示(滅)
        }
        else //不超量程,取各位數值
        {
        DispBuf[2]=L;//取個位數
        L=L/10;
        DispBuf[1]=L;//取十位數
        DispBuf[0]=L/10;//取百位數
        }
        }
        }
        用Keil uVision將上述程序編譯生成目標文件DGZS.hex。
        電路中所使用的元件見表2。
        表2

        名稱元件種類(Category)子種類(Sub-category)
        單片機AT89C2051Microprocessor ICs8051 Family
        電阻器RESResistorsGeneric
        可變電阻器POT-LINResistorsVariable
        三極管2N2905TransistorsBipolar
        電感器IND-AIRInductorsGeneric
        4位共陰數碼管7SEG-MPX4-CAOptoelectronics7-Segment Displays

        繪制好的仿真電路圖如圖9。圖中添加示波器時,先左鍵選擇模型選擇工具



        欄中的 圖標,再選擇OSCILLOSCOPE,并在原理圖編輯窗口中左擊,這樣示波器就被放置到原理圖中了。
        由于AT89C2051的P1.0和P1.1是復用端口,除了作I/O口外,還有一個功能是作為電壓比較器的輸入端,P1.0為同相輸入端,P1.1為反相輸入端,這里作電壓比較器的輸入端使用,因此在設置AT89C2051的屬性時要將其設置電壓比較器的輸入端,即Ehable Comparator選擇Yes,如圖10。



        被測電感器的電感量定為1H。單擊開始仿真,可變電阻RP1是用來校準測量值的,按動RP1的+或-按鈕,調節RP1使數碼管顯示100。仿真結果見圖10。電阻R2為換擋電阻,改變它的值即可改變擋位。
        2. 充電器
        這是用PIC12F675單片機做的充電器,能對兩節鎳鎘或鎳氫電池充電,充電器采用電壓監測的方法判斷充電是否結束,充電結束后能自動停止充電。
        圖11是電路圖,圖中PIC12F675的7腳作模擬信號輸入端AN0使用。單片



        機使用內部時鐘振蕩器,引腳3作充電控制電壓輸出端GP4使用。S為復位開關,復位開關主要在重新放上電池后使用。


        關鍵詞: PROTEUS單片機仿

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 孝感市| 二连浩特市| 杭州市| 榆树市| 乌拉特中旗| 遂川县| 永清县| 西和县| 晴隆县| 报价| 镇雄县| 永城市| 明溪县| 视频| 红桥区| 行唐县| 青海省| 张掖市| 呈贡县| 绵竹市| 周至县| 万源市| 丹阳市| 永靖县| 石河子市| 慈利县| 呼和浩特市| 保定市| 临澧县| 娱乐| 鹤壁市| 略阳县| 建德市| 揭西县| 浪卡子县| 营山县| 沙雅县| 北川| 洪洞县| 云梦县| 宜章县|