一、系統方案 1、本設計采用這51單片機作為主控器。 2、病房呼叫,液晶1602顯示。 3、護士站按鍵取消。 4、蜂鳴器報警。
1.png (5.92 KB, 下載次數: 21)
下載附件
2023-11-27 21:24 上傳
二、硬件設計 原理圖如下:
2.png (56.4 KB, 下載次數: 29)
下載附件
2023-11-27 21:24 上傳
三、單片機軟件設計 1、首先是系統初始化
void init() //初始化函數
{
bg_1602=0; //開啟背光
TMOD=0x01; //定時器0工作方式1
TH0=0x4b;
TL0=0xff; //賦初值
EA=1; //開總中斷
ET0=1; //定時器中斷開
TR0=1; //定時器0中斷開
D0=0;
D1=0;
D2=0;
D3=0; //清零床號引腳
}
2、液晶顯示程序
/******LCD1602******/
void com_1602(uc com) //寫命令
{
RS=0;
P0=com;
delay(1);
E=1;
delay(1);
E=0;
RS=1;
}
void data_1602(uc date) //寫數據
{
RS=1;
P0=date;
delay(1);
E=1;
delay(1);
E=0;
RS=0;
}
3、按鍵程序
if(key==0) //檢測按鍵
{
delay(5);
if(key==0)
{
if((num_D0!=0)||(num_D1!=0)||(num_D2!=0)||(num_D3!=0))//如果有呼叫時
{
bg_1602=0; //打開背光
Beep=1; //關閉蜂鳴器
flag=0; //標志位清零
num_D0=0;num_D1=0;num_D2=0;num_D3=0;
fu_D0=D0;fu_D1=D1;fu_D2=D2;fu_D3=D3;//將床位清零,并記錄當前引腳狀態
com_1602(0x01); //清屏
dis_1602(7,1,4,2,0); //顯示I Know
}
else //如果沒有呼叫時
bg_1602=0; //只點亮背光
}
while(!key); //按鍵釋放
delay(2000);
com_1602(0x01);//清屏
}
4、核心算法程序
void display() //顯示函數
{
if((num_D0==0)&&(num_D1==0)&&(num_D2==0)&&(num_D3==0)) //當沒有床位呼叫時
dis_1602(16,0,0,3,0); //顯示Happy
else //有床位呼叫時
{
if(flag==0)
{
flag=1;
com_1602(0x01);//清屏
}
if(num_D0==1)
{
dis_1602(1,0,2,0,num_D0);
dis_1602(1,0,3,0,10);
}
if(num_D1==2)
{
dis_1602(1,0,5,0,num_D1);
dis_1602(1,0,6,0,10);
}
if(num_D2==3)
{
dis_1602(1,0,8,0,num_D2);
dis_1602(1,0,9,0,10);
}
if(num_D3==4)
{
dis_1602(1,0,11,0,num_D3);
dis_1602(1,0,12,0,10);
}
dis_1602(10,1,3,1,0); //在對應床位顯示床位號
}
}
四、 proteus仿真設計 Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。 |