基于单片机的坐姿提醒系统设计(#0475)
功能描述
1、采用51/52單片機(jī)(通用)作為主控芯片;
2、采用超聲波傳感器檢測人員距離,精度1毫米;
3、采用LCD1602顯示"當(dāng)前人員距離"和"合理距離";
4、可通過按鍵設(shè)置合理距離的上限H和下限L;
5、當(dāng)距離大于H值或小于L值,開啟蜂鳴器。?
電路設(shè)計(jì)
采用Altium?Designer作為電路設(shè)計(jì)工具。Altium?Designer通過把原理圖設(shè)計(jì)、PCB繪制編輯、拓?fù)溥壿嬜詣硬季€、信號完整性分析和設(shè)計(jì)輸出等技術(shù)的完美融合,為設(shè)計(jì)者提供了全新的設(shè)計(jì)解決方案,使設(shè)計(jì)者可以輕松進(jìn)行設(shè)計(jì),熟練使用這一軟件必將使電路設(shè)計(jì)的質(zhì)量和效率大大提高。
單片機(jī)管腳說明:
P0端口(P0.0-P0.7):P0口為一個8位漏極開路雙向I/O口,每個引腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時,P0輸出原碼,此時P0外部必須被拉高。
P1端口(P1.0-P1.7):P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時,P1口作為第八位地址接收。
P2端口(P2.0-P2.7):P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口,用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時接收高八位地址信號和控制信號。
P3端口(P3.0-P3.7):P3口管腳是一個帶有內(nèi)部上拉電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入端時,由于外部下拉為低電平,P3口將輸出電流(ILL)。P3口同時為閃爍編程和編程校驗(yàn)接收一些控制信號。
仿真設(shè)計(jì)
采用Proteus作為仿真設(shè)計(jì)工具。Proteus是一款著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。
主程序設(shè)計(jì)
void main(void) //主函數(shù) {LCD1602_init();//液晶初始化//0123456789ABCDEFLCD1602_Disp_ZF(0x80," Now S: CM ",16);//0123456789ABCDEFLCD1602_Disp_ZF(0x80+0X40,"Set H L ",16);TMOD=0x11; //設(shè)T0為方式1,GATE=1;TH0=0; //定時器清零TL0=0; //定時器清零TH1=0xf8; //2MS定時TL1=0x30; //2MS定時ET0=1; //允許T0中斷ET1=1; //允許T1中斷TR1=1; //開啟定時器EA=1; //開啟總中斷EA=0;//關(guān)閉中斷//SET_H = ISP_READ(0x2c00)*256+ISP_READ(0x2c01);//讀取存儲的最大值//SET_L = ISP_READ(0x2c02)*256+ISP_READ(0x2c03);//讀取存儲的最小值EA=1; //開啟總中斷while(1)//函數(shù)循環(huán){while(!RX); //當(dāng)RX為零時等待TR0=1; //開啟計(jì)數(shù)while(RX); //當(dāng)RX為1計(jì)數(shù)并等待TR0=0; //關(guān)閉計(jì)數(shù)Conut(); //計(jì)算顯示距離函數(shù)/if((S>SET_H)||(S<SET_L)) //水位過低過高報(bào)警,{LED=0;SPEAK=0; //報(bào)警}else {LED=1;SPEAK=1; //不報(bào)警}if(!KEY1) //切換設(shè)置最大值和最小值{Delay_ms(10);//延時去抖動if(!KEY1)//切換設(shè)置最大值和最小值{KEY_flag++; //模式選擇//ISP_ERASE(0x2c00); //注意:字節(jié)編程時必須要先要擦除整個扇區(qū) //ISP_PROGRAM(0x2c00, SET_H/256); //記憶存儲//ISP_PROGRAM(0x2c01, SET_H);//記憶存儲//ISP_PROGRAM(0x2c02, SET_L/256);//記憶存儲//ISP_PROGRAM(0x2c03, SET_L); //記憶存儲}while(!KEY1);//等待按鍵抬起}源文件獲取
關(guān)注公眾號-電子開發(fā)圈,首頁發(fā)送?“坐姿” 獲取;
總結(jié)
以上是生活随笔為你收集整理的基于单片机的坐姿提醒系统设计(#0475)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.9. 相等的多项式
- 下一篇: 【人才盘点九宫格】你还不来学一学人才九宫