欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機智能視力保護儀設計 原理圖分享 但是程序不完整 求幫助
[打印本頁]
作者:
51hei32等等
時間:
2021-6-8 16:42
標題:
單片機智能視力保護儀設計 原理圖分享 但是程序不完整 求幫助
這是一款智能視力保護儀基單片機的設計
包含了多個模塊。有:電源模塊、超聲波模塊、單片機主控模塊、蜂鳴器報警模塊、光線強度檢測模塊。
具有時間倒計時、超聲波測距、光線強弱測量等功能,以上部分均可調節(jié)閾值以及達到閾值后蜂鳴器報警
但是程序不完整 求幫助
電路原理圖如下:
51hei.png
(45.31 KB, 下載次數(shù): 50)
下載附件
2021-6-8 21:11 上傳
本設計是以單片機為核心的主體電路,實現(xiàn)定時、坐姿糾正、光線強度檢測和報警功能。首先是對各單元電路進行設計,并選擇合適的元器件。在選擇元器件時,要注意所選芯片的性價比,對于電阻、電容等常用元件要先進行參數(shù)計算后再選擇;其次是設計整個電路,并在計算機上對各單元電路進行相應功能的調試仿真。其中單片機選用較為普遍的STC89C52,坐姿傳感器選用超聲波傳感器,光線報警選用光敏電阻來實現(xiàn),報警發(fā)聲選用蜂鳴器發(fā)聲硬件電路。
它具備以下功能和特點:
(1)當使用者臉部與讀物之間的距離小于設定距離時,電路將發(fā)出聲音提示;
(2)當讀寫環(huán)境光線強度低于設定值時,電路將發(fā)出聲音提示;
(3)當使用時間達到45分鐘時,電路自動發(fā)出提示,提醒使用者注意休息;
(4)電路可靠,做出實物能夠實現(xiàn)相應的功能。真正幫助學生做到規(guī)定:學生在讀寫時,應在一定亮度下,眼離讀物一尺,身離書桌一拳。
2 總體方案設計
系統(tǒng)采用STC89C52單片機作為多功能視力保護器的核心控制單元,本系統(tǒng)通過光敏電阻采集光線信號,通過AD采集光線信號的強弱,把光線強度等級化,通過設定報警等級來實現(xiàn)報警;利用超聲波測距傳感器測出人臉部與桌面的距離,當小于設定距離時發(fā)出報警聲提醒;通過單片機內部定時器計時,當使用達到45分鐘時電路自動發(fā)出聲音提示,提醒使用者注意休息;系統(tǒng)采用的報警電路由三極管驅動蜂鳴器組成。系統(tǒng)總體的設計方框圖如圖2.1所示。
光強檢測系統(tǒng)采用光敏電阻。光敏電阻的工作原理是當有光線照射時,電阻內原本處于穩(wěn)定狀態(tài)的電子受到激發(fā),成為自由電子,所以光線越強,產生的自由電子也就越多,電阻就會越小。光敏電阻的優(yōu)點有內部的光電效應和電極無關,即可以使用直流電源。靈敏度和半導體材料、以及入射光的波長有關,價格低廉,性價比高。
2.1.4 報警提示模塊
報警系統(tǒng)采用蜂鳴器報警。蜂鳴器,體積小,重量輕,裝配簡單,使用方便。價格實惠,對推動視力保護器的普及有很好的優(yōu)勢,能夠較好的滿足設計的要求。
2.1.5 坐姿檢測模塊
坐姿檢測系統(tǒng)采用超聲波傳感器測距,通過測量人臉與桌面的距離來確定坐姿。當距離小于設定距離時就發(fā)出警報提醒。超聲波傳感器體積小,重量輕,使用方便。價格實惠,是一種較為理想的方案。
2.1.6 顯示模塊
顯示界面采用LCD1602液晶進行顯示。LCD1602由于其顯示清晰,顯示內容豐富、清晰,顯示信息量大,使用方便,顯示快速而得到了廣泛的應用。在本設計中很好的發(fā)揮其優(yōu)勢。
2.2 最終方案
經過反復論證,我們最終確定了如下方案:
(1)電源采用6節(jié)5號電池。
(2)采用STC89C52單片機作為主控制器。
(3)用光敏電阻檢測光照強度。
(4)用超聲波傳感器檢測坐姿。
(5)用LCD1602液晶顯示。
(6)用蜂鳴器實現(xiàn)報警。
單片機源程序如下:
#include <reg52.h>
#define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
#define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
#include <intrins.h>
#include "eepom52.h"
sbit SCL=P2^6; //SCL定義,連接ADC0832SCL腳
sbit DO=P2^5; //DO定義,連接ADC0832DO腳
sbit CS=P2^4; //CS定義,連接ADC0832CS腳
sbit beep = P2^7;
//這三個引腳參考資料
sbit rs=P3^2; //1602數(shù)據(jù)/命令選擇引腳 H:數(shù)據(jù) L:命令
sbit rw=P3^3; //1602讀寫引腳 H:數(shù)據(jù)寄存器 L:指令寄存器
sbit e =P3^4; //1602使能引腳 下降沿觸發(fā)
sbit c_send = P3^7; //超聲波發(fā)射
sbit c_recive = P3^6; //超聲波接收
uchar flag_hc_value; //超聲波中間變量
long distance; //距離
uint set_d; //距離
bit flag_csb_juli; //超聲波超出量程
uint flag_time0; //用來保存定時器0的時候的
bit flag_200ms = 1 ;
uchar guangxian; //光線的顯示變量
uchar set_gx; //設置光線的強弱的變量
uchar value;
uchar flag_alarm; //報警變量
uchar miao = 55,fen = 44,shi;
uchar xuexi_start; //開始學習標志位
uchar menu_1;
/******************把設置溫度數(shù)據(jù)保存到單片機內部eepom中******************/
void write_eepom_12()
{
SectorErase(0x2000);
byte_write(0x2000, set_d % 256);
byte_write(0x2001, set_d / 256);
byte_write(0x2002, set_gx);
byte_write(0x2057, value);
}
/******************把數(shù)據(jù)從單片機內部eepom中讀出來*****************/
void read_eepom12()
{
set_d = byte_read(0x2001);
set_d =set_d * 256 + byte_read(0x2000);
set_gx = byte_read(0x2002);
value = byte_read(0x2057);
}
/**************開機自檢eepom初始化*****************/
void init_eepom()
{
read_eepom12(); //先讀
if(value != 2) //新的單片機初始單片機內問EEPOM
{
set_d = 300;
value = 2;
set_gx = 50;
write_eepom_12();
}
}
/********************************************************************
* 名稱 : delay()
* 功能 : 延時,延時時間大概為5US。
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void delay_uint(uint q)
{
while(q--);
}
/********************************************************************
* 名稱 : bit Busy(void)
* 功能 : 這個是一個讀狀態(tài)函數(shù),讀出函數(shù)是否處在忙狀態(tài)
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
bit busy(void)
{
bit busy_flag = 0;
rs = 0;
rw = 1;
e = 1;
delay_uint(3);
busy_flag = (bit)(P1 & 0x80);
e = 0;
return busy_flag;
}
/********************************************************************
* 名稱 : write_com(uchar com)
* 功能 : 1602命令函數(shù)
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
void write_com(uchar com)
{
while(busy());
e=0;
rs=0;
rw=0;
P1=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
/********************************************************************
* 名稱 : write_data(uchar dat)
* 功能 : 1602寫數(shù)據(jù)函數(shù)
* 輸入 : 需要寫入1602的數(shù)據(jù)
* 輸出 : 無
***********************************************************************/
void write_data(uchar dat)
{
while(busy());
e=0;
rs=1;
rw=0;
P1=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
/***********************lcd1602上顯示兩位十進制數(shù)************************/
void write_sfm2(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/10%10);
write_data(0x30+date%10);
}
/***********************lcd1602上顯示超聲波距離************************/
void write_sfm_csb(uchar hang,uchar add,uint date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/100%10);
write_data('.');
write_data(0x30+date/10%10);
write_data(0x30+date%10);
}
/********************************************************************
* 名稱 : init_1602()
* 功能 : 1602初始化,請參考1602的資料
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void init_1602()
{
write_com(0x38); //
write_com(0x0c);
write_com(0x06);
}
/********************************************************************
* 名稱 : write_string(uchar hang,uchar lie,uchar *p)
* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調用該函數(shù)如下
write_string(1,5,"ab cd ef;")
* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)
* 輸出 : 無
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
while(1)
{
if(*p == '\0') break;
write_data(*p);
p++;
}
}
uchar key_can;
/********************獨立按鍵程序*****************/
void key()
{
static uchar key_new;
key_can = 20;
if((P2 & 0x0f) != 0x0f)
{
delay_uint(50);
if(((P2 & 0x0f) != 0x0f) && (key_new == 1))
{
key_new = 0;
switch(P2 & 0x0f)
{
case 0x0e: key_can = 1; break; //左邊第1個
case 0x0d: key_can = 2; break; //左邊第2個
case 0x0b: key_can = 3; break; //左邊第3個
case 0x07: key_can = 4; break; //左邊第4個
}
// write_sfm2(2,0,key_can);
}
}
else
key_new = 1;
}
復制代碼
以上內容word文檔51hei下載(程序不完整,大家能幫忙補全一下嗎):
智能視力保護器的設計終結稿.doc
(755.69 KB, 下載次數(shù): 11)
2021-6-8 16:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
原理圖.doc
(53 KB, 下載次數(shù): 10)
2021-6-8 16:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
123456tjh
時間:
2023-11-17 23:41
可以給一下源程序嗎
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1