基于单片机的自动喂食仿真设计(#0051)
功能描述
1、采用51/52單片機作為主控芯片;
2、采用2003芯片驅動步進電機,正轉模擬投食,結束后反轉;
3、采用DS1302作為時鐘芯片;
4、1602液晶顯示:工作模式、喂食時間、當前時間、電機狀態;
5、分為自動/手動喂食模式;
6、自動模式下,到喂食時間自動工作,按鍵可對喂食時間和當前時間進行修改;
7、手動模式下,按鍵手動喂食開,手動喂食關;
仿真設計
采用Proteus作為仿真設計工具。Proteus是一款著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。
單片機管腳說明:
P0端口(P0.0-P0.7):P0口為一個8位漏極開路雙向I/O口,每個引腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1端口(P1.0-P1.7):P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2端口(P2.0-P2.7):P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口,用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3端口(P3.0-P3.7):P3口管腳是一個帶有內部上拉電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入端時,由于外部下拉為低電平,P3口將輸出電流(ILL)。P3口同時為閃爍編程和編程校驗接收一些控制信號。
VCC(40):供電電壓,其工作電壓為5V。
GND(20):接地。
RST(9):復位輸入。在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現在此引腳時,將使單片機復位,只要這個引腳保持高電平,51芯片便循環復位。復位后P3.0-P3.7口均置1,引腳表現為高電平,程序計數器和特殊功能寄存器SFR全部清零。當復位腳由高電平變為低電平時,芯片為ROM的00H處開始運行程序。復位操作不會對內部RAM有所影響。
ALE/PROG (30):當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地低位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如果想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,則置位無效。
PSEN(29):外部程序存儲器的選通信號。在由外部程序存儲器取指令期間,每個機器周期兩次PSEN有效。但在訪問外部數據存儲器時,這兩次有效的PSEN信號將不出現。
XTAL1(19):來自反向振蕩放大器的輸入及內部時鐘工作電路的輸入。
XTAL2(18):來自反向振蕩器的輸出。
EA/VPP(31):當EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,EA將內部鎖定為RESET;當EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V的編程電源(VPP)。
主程序設計
void main(){xiezhilin(0x01); //顯示清屏xiezhilin(0x38); //顯示模式設置xiezhilin(0x0c); //光標設置TH1 = 0xFD; //晶振11.0592mhz 波特率設為9600 TL1 = 0xFD; TMOD = 0x21; //定時器1方式2 SCON = 0x50; //串口接收使能 ES = 0; //串口中斷使能 //使用外中斷函數必須ES為0TR1 = 1; //定時器1使能 TI = 0; //發送中斷標記位,必須設置 EA = 1; xianshi(0x80+0,'m');xianshi(0x80+1,'o');xianshi(0x80+2,'s');xianshi(0x80+14,'D');xianshi(0x80+15,'Y');dushi();shijian=1; while(1){ ms++;if(ms>=5){aa=~aa;ms=0;dushi();} if(shu=='Z')z_zhuan(); if(shu=='F')f_zhuan();shu=0; key();xian(); if((shi==shi_n)&&(fen==fen_n)&&(miao==miao_n)){shijian=1; } ......源文件獲取
關注公眾號-電子開發圈,首頁發送?“喂食” 獲取;
總結
以上是生活随笔為你收集整理的基于单片机的自动喂食仿真设计(#0051)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: checksum校验
- 下一篇: 一款集成化红队渗透工具箱