久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2343|回復: 1
打印 上一主題 下一主題
收起左側(cè)

單片機智能視力保護儀設(shè)計 原理圖分享 但是程序不完整 求幫助

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:934892 發(fā)表于 2021-6-8 16:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這是一款智能視力保護儀基單片機的設(shè)計
包含了多個模塊。有:電源模塊、超聲波模塊、單片機主控模塊、蜂鳴器報警模塊、光線強度檢測模塊。
具有時間倒計時、超聲波測距、光線強弱測量等功能,以上部分均可調(diào)節(jié)閾值以及達到閾值后蜂鳴器報警
但是程序不完整 求幫助

電路原理圖如下:

本設(shè)計是以單片機為核心的主體電路,實現(xiàn)定時、坐姿糾正、光線強度檢測和報警功能。首先是對各單元電路進行設(shè)計,并選擇合適的元器件。在選擇元器件時,要注意所選芯片的性價比,對于電阻、電容等常用元件要先進行參數(shù)計算后再選擇;其次是設(shè)計整個電路,并在計算機上對各單元電路進行相應(yīng)功能的調(diào)試仿真。其中單片機選用較為普遍的STC89C52,坐姿傳感器選用超聲波傳感器,光線報警選用光敏電阻來實現(xiàn),報警發(fā)聲選用蜂鳴器發(fā)聲硬件電路。

它具備以下功能和特點:
(1)當使用者臉部與讀物之間的距離小于設(shè)定距離時,電路將發(fā)出聲音提示;
(2)當讀寫環(huán)境光線強度低于設(shè)定值時,電路將發(fā)出聲音提示;
(3)當使用時間達到45分鐘時,電路自動發(fā)出提示,提醒使用者注意休息;
(4)電路可靠,做出實物能夠?qū)崿F(xiàn)相應(yīng)的功能。真正幫助學生做到規(guī)定:學生在讀寫時,應(yīng)在一定亮度下,眼離讀物一尺,身離書桌一拳。
2  總體方案設(shè)計
系統(tǒng)采用STC89C52單片機作為多功能視力保護器的核心控制單元,本系統(tǒng)通過光敏電阻采集光線信號,通過AD采集光線信號的強弱,把光線強度等級化,通過設(shè)定報警等級來實現(xiàn)報警;利用超聲波測距傳感器測出人臉部與桌面的距離,當小于設(shè)定距離時發(fā)出報警聲提醒;通過單片機內(nèi)部定時器計時,當使用達到45分鐘時電路自動發(fā)出聲音提示,提醒使用者注意休息;系統(tǒng)采用的報警電路由三極管驅(qū)動蜂鳴器組成。系統(tǒng)總體的設(shè)計方框圖如圖2.1所示。
  光強檢測系統(tǒng)采用光敏電阻。光敏電阻的工作原理是當有光線照射時,電阻內(nèi)原本處于穩(wěn)定狀態(tài)的電子受到激發(fā),成為自由電子,所以光線越強,產(chǎn)生的自由電子也就越多,電阻就會越小。光敏電阻的優(yōu)點有內(nèi)部的光電效應(yīng)和電極無關(guān),即可以使用直流電源。靈敏度和半導體材料、以及入射光的波長有關(guān),價格低廉,性價比高。  
2.1.4  報警提示模塊
    報警系統(tǒng)采用蜂鳴器報警。蜂鳴器,體積小,重量輕,裝配簡單,使用方便。價格實惠,對推動視力保護器的普及有很好的優(yōu)勢,能夠較好的滿足設(shè)計的要求。
2.1.5  坐姿檢測模塊
    坐姿檢測系統(tǒng)采用超聲波傳感器測距,通過測量人臉與桌面的距離來確定坐姿。當距離小于設(shè)定距離時就發(fā)出警報提醒。超聲波傳感器體積小,重量輕,使用方便。價格實惠,是一種較為理想的方案。
2.1.6  顯示模塊
顯示界面采用LCD1602液晶進行顯示。LCD1602由于其顯示清晰,顯示內(nèi)容豐富、清晰,顯示信息量大,使用方便,顯示快速而得到了廣泛的應(yīng)用。在本設(shè)計中很好的發(fā)揮其優(yōu)勢。
2.2  最終方案
經(jīng)過反復論證,我們最終確定了如下方案:
(1)電源采用6節(jié)5號電池。
(2)采用STC89C52單片機作為主控制器。
(3)用光敏電阻檢測光照強度。
(4)用超聲波傳感器檢測坐姿。
(5)用LCD1602液晶顯示。
(6)用蜂鳴器實現(xiàn)報警。

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
  3. #define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535
  4. #include <intrins.h>

  5. #include "eepom52.h"

  6. sbit SCL=P2^6;                //SCL定義,連接ADC0832SCL腳
  7. sbit DO=P2^5;                //DO定義,連接ADC0832DO腳
  8. sbit CS=P2^4;                //CS定義,連接ADC0832CS腳
  9. sbit beep = P2^7;


  10. //這三個引腳參考資料
  11. sbit rs=P3^2;         //1602數(shù)據(jù)/命令選擇引腳 H:數(shù)據(jù)              L:命令
  12. sbit rw=P3^3;         //1602讀寫引腳                 H:數(shù)據(jù)寄存器          L:指令寄存器
  13. sbit e =P3^4;         //1602使能引腳          下降沿觸發(fā)

  14. sbit c_send   = P3^7;                //超聲波發(fā)射
  15. sbit c_recive = P3^6;                //超聲波接收
  16. uchar flag_hc_value;        //超聲波中間變量
  17. long distance;                    //距離
  18. uint set_d;                        //距離
  19. bit flag_csb_juli;          //超聲波超出量程
  20. uint  flag_time0;           //用來保存定時器0的時候的
  21. bit flag_200ms = 1 ;

  22. uchar guangxian;            //光線的顯示變量
  23. uchar set_gx;                                        //設(shè)置光線的強弱的變量
  24. uchar value;
  25. uchar flag_alarm;       //報警變量

  26. uchar miao = 55,fen = 44,shi;
  27. uchar xuexi_start;   //開始學習標志位
  28. uchar menu_1;

  29. /******************把設(shè)置溫度數(shù)據(jù)保存到單片機內(nèi)部eepom中******************/
  30. void write_eepom_12()
  31. {
  32.         SectorErase(0x2000);
  33.         byte_write(0x2000, set_d % 256);
  34.         byte_write(0x2001, set_d / 256);
  35.         byte_write(0x2002, set_gx);
  36.         byte_write(0x2057, value);        
  37. }

  38. /******************把數(shù)據(jù)從單片機內(nèi)部eepom中讀出來*****************/
  39. void read_eepom12()
  40. {
  41.         set_d = byte_read(0x2001);
  42.         set_d  =set_d * 256 + byte_read(0x2000);  
  43.         set_gx = byte_read(0x2002);
  44.         value    = byte_read(0x2057);
  45. }

  46. /**************開機自檢eepom初始化*****************/
  47. void init_eepom()
  48. {
  49.         read_eepom12();                //先讀
  50.         if(value != 2)                //新的單片機初始單片機內(nèi)問EEPOM
  51.         {
  52.                 set_d = 300;
  53.                 value = 2;
  54.                 set_gx = 50;
  55.                 write_eepom_12();
  56.         }        
  57. }


  58. /********************************************************************
  59. * 名稱 : delay()
  60. * 功能 : 延時,延時時間大概為5US。
  61. * 輸入 : 無
  62. * 輸出 : 無
  63. ***********************************************************************/
  64. void delay_uint(uint q)
  65. {
  66.         while(q--);
  67. }

  68. /********************************************************************
  69. * 名稱 : bit Busy(void)
  70. * 功能 : 這個是一個讀狀態(tài)函數(shù),讀出函數(shù)是否處在忙狀態(tài)
  71. * 輸入 : 輸入的命令值
  72. * 輸出 : 無
  73. ***********************************************************************/
  74. bit busy(void)
  75. {
  76.         bit busy_flag = 0;
  77.         rs = 0;
  78.         rw = 1;
  79.         e = 1;
  80.         delay_uint(3);
  81.         busy_flag = (bit)(P1 & 0x80);
  82.         e = 0;
  83.         return busy_flag;
  84. }
  85. /********************************************************************
  86. * 名稱 : write_com(uchar com)
  87. * 功能 : 1602命令函數(shù)
  88. * 輸入 : 輸入的命令值
  89. * 輸出 : 無
  90. ***********************************************************************/
  91. void write_com(uchar com)
  92. {
  93.         while(busy());
  94.         e=0;
  95.         rs=0;
  96.         rw=0;
  97.         P1=com;
  98.         delay_uint(3);
  99.         e=1;
  100.         delay_uint(25);
  101.         e=0;
  102. }

  103. /********************************************************************
  104. * 名稱 : write_data(uchar dat)
  105. * 功能 : 1602寫數(shù)據(jù)函數(shù)
  106. * 輸入 : 需要寫入1602的數(shù)據(jù)
  107. * 輸出 : 無
  108. ***********************************************************************/
  109. void write_data(uchar dat)
  110. {
  111.         while(busy());
  112.         e=0;
  113.         rs=1;
  114.         rw=0;
  115.         P1=dat;
  116.         delay_uint(3);
  117.         e=1;
  118.         delay_uint(25);
  119.         e=0;        
  120. }

  121. /***********************lcd1602上顯示兩位十進制數(shù)************************/
  122. void write_sfm2(uchar hang,uchar add,uchar date)
  123. {
  124.         if(hang==1)   
  125.                 write_com(0x80+add);
  126.         else
  127.                 write_com(0x80+0x40+add);                  
  128.         write_data(0x30+date/10%10);
  129.         write_data(0x30+date%10);        
  130. }

  131. /***********************lcd1602上顯示超聲波距離************************/
  132. void write_sfm_csb(uchar hang,uchar add,uint date)
  133. {
  134.         if(hang==1)   
  135.                 write_com(0x80+add);
  136.         else
  137.                 write_com(0x80+0x40+add);                  
  138.         write_data(0x30+date/100%10);
  139.         write_data('.');
  140.         write_data(0x30+date/10%10);
  141.         write_data(0x30+date%10);        
  142. }


  143. /********************************************************************
  144. * 名稱 : init_1602()
  145. * 功能 : 1602初始化,請參考1602的資料
  146. * 輸入 : 無
  147. * 輸出 : 無
  148. ***********************************************************************/
  149. void init_1602()
  150. {
  151.         write_com(0x38);        //
  152.         write_com(0x0c);
  153.         write_com(0x06);
  154. }

  155. /********************************************************************
  156. * 名稱 : write_string(uchar hang,uchar lie,uchar *p)
  157. * 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調(diào)用該函數(shù)如下
  158.                   write_string(1,5,"ab cd ef;")
  159. * 輸入 : 行,列,需要輸入1602的數(shù)據(jù)
  160. * 輸出 : 無
  161. ***********************************************************************/
  162. void write_string(uchar hang,uchar add,uchar *p)
  163. {
  164.         if(hang==1)   
  165.                 write_com(0x80+add);
  166.         else
  167.                 write_com(0x80+0x40+add);
  168.                 while(1)                                                                                                                 
  169.                 {
  170.                         if(*p == '\0')  break;
  171.                         write_data(*p);
  172.                         p++;
  173.                 }        
  174. }

  175. uchar key_can;
  176. /********************獨立按鍵程序*****************/
  177. void key()
  178. {
  179.         static uchar key_new;
  180.         key_can = 20;
  181.         if((P2 & 0x0f) != 0x0f)
  182.         {
  183.                 delay_uint(50);
  184.                 if(((P2 & 0x0f) != 0x0f) && (key_new == 1))
  185.                 {
  186.                         key_new = 0;
  187.                         switch(P2 & 0x0f)
  188.                         {
  189.                                 case 0x0e:  key_can = 1;  break;         //左邊第1個
  190.                                 case 0x0d:  key_can = 2;  break;         //左邊第2個
  191.                                 case 0x0b:  key_can = 3;  break;         //左邊第3個
  192.                                 case 0x07:  key_can = 4;  break;         //左邊第4個
  193.                         }
  194. //                        write_sfm2(2,0,key_can);                                
  195.                 }
  196.         }
  197.         else
  198.                 key_new = 1;        
  199. }
復制代碼
以上內(nèi)容word文檔51hei下載(程序不完整,大家能幫忙補全一下嗎): 智能視力保護器的設(shè)計終結(jié)稿.doc (755.69 KB, 下載次數(shù): 11)
原理圖.doc (53 KB, 下載次數(shù): 10)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1097513 發(fā)表于 2023-11-17 23:41 | 只看該作者
可以給一下源程序嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合色丁香婷婷六月图片 | 天天综合天天 | 国产98色在线 | 日韩 | 91久久精品一区二区二区 | 久久久久国产精品免费免费搜索 | 久草99 | 国产精品自产拍在线观看蜜 | 日韩伦理一区二区 | 国产一区二区三区色淫影院 | 91精品国产综合久久久久久丝袜 | 欧美福利 | 91xxx在线观看| 韩国精品在线观看 | 华人黄网站大全 | 欧美国产日韩精品 | 成人精品鲁一区一区二区 | av在线免费不卡 | 久久99精品国产 | 久久蜜桃资源一区二区老牛 | 亚洲午夜三级 | www.伊人.com| 日韩在线不卡视频 | 国产精品高清一区二区三区 | 国产高清一区二区 | 亚洲精品一二三 | 黄在线| 国产欧美二区 | 欧美最猛黑人xxxx黑人 | 国产精品成人一区二区 | 欧美福利视频 | 日韩一区二区在线视频 | 91久久国产综合久久91精品网站 | 欧美一级一 | 一区二区三区精品 | 成人免费在线视频 | 黄a网站 | 亚洲男人网 | 成人av观看 | 欧美乱码精品一区二区三区 | 久久精品国产一区老色匹 | 欧美中文字幕在线 |