欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8438|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機自動感應(yīng)環(huán)境光的調(diào)光控制器程序+電路設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:559365 發(fā)表于 2019-6-12 14:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1)設(shè)計一個環(huán)境光亮度檢測電路,并根據(jù)環(huán)境亮度進行臺燈光照強度的自動調(diào)節(jié);
2)采用多只LED指示亮度等級,環(huán)境亮度達到最高時,自動關(guān)閉;
3)拓展部分:具有LED數(shù)碼顯示亮度等級功能;
4)安裝、調(diào)試電路,記錄調(diào)零、測試的數(shù)據(jù),進行測試、分析。

2.1 設(shè)計的總體方案
無論LED是經(jīng)由降壓、升壓、降壓/升壓或線性穩(wěn)壓器驅(qū)動,連接每一個驅(qū)動電路最常見的線程就是須要控制光的輸出。。目前,針對亮度控制方面,主要的兩種解決方案為線性調(diào)節(jié)LED的電流(模擬調(diào)光)或在肉眼無法察覺的高頻下,讓驅(qū)動電流從0到目標(biāo)電流值之間來回切換(數(shù)字調(diào)光)。利用脈沖寬度調(diào)變(PWM)來設(shè)定循環(huán)和工作周期可能是實現(xiàn)數(shù)字調(diào)光的最簡單的方法。
PWM方法的基本思想是利用單片機具有的PWM端口,在不改變PWM方波周期的前提下,通過軟件的方法調(diào)整單片機的PWM控制寄存器來調(diào)整PWM的占空比,從而控制充電電流。本方法把設(shè)定的充電電流與實際讀取到的充電電流進行比較,若實際電流偏小則向增加充電電流的方向調(diào)整PWM的占空比,LED燈光度變亮;若實際電流偏大則向減小充電電流的方向調(diào)整PWM的占空比,LED燈光度變暗。本文介紹了以STC12C5A60S2為控制核心,通過光敏電阻感應(yīng)光度,并利用PWM調(diào)光技術(shù)對LED進行光度的自動調(diào)節(jié)。
2.2 設(shè)計的總體構(gòu)思及框圖
基于STC單片機的PWM調(diào)光是以STC12C5A60S2作為主控芯片,設(shè)置了手動控制和自動控制。在手動控制時,分為三檔,輸出不同的PWM占空比對LED的電流進行控制,從而實現(xiàn)了對光度的手動調(diào)節(jié)。在自動控制時,通過STC12C5A60S2內(nèi)部模擬-數(shù)字不斷檢驗光敏電阻的電壓來間接測量感應(yīng)光度,將電壓和預(yù)設(shè)的閾值進行對比,調(diào)整PWM的占空比對LED的電流進行控制,從而實現(xiàn)了對光度的自動調(diào)節(jié)。如圖2-1所示為設(shè)計的總體框圖。

圖2-1 總體框圖

第3章 系統(tǒng)硬件電路設(shè)計

3.1 STC12C5A60S2單片機簡介
STC12C5A60S2是STC生產(chǎn)的單時鐘/機器周期(1T)的單片機,是高速、低功耗、超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換,針對電機控制,強干擾場合。

    利用STC12C5A60S2的IO口P1.1接收光敏電阻采集的當(dāng)前光照測檢測輸出數(shù)據(jù)。IO口P1.3產(chǎn)生產(chǎn)生相應(yīng)的PWM波,給高亮度LED,從而有不同的光照。IO口P0作為LCD液晶顯示器的數(shù)據(jù)/指令輸入端口。

STC12C5A60S2單片機的時鐘電路采用的是內(nèi)部的時鐘電路,利用單片機內(nèi)部的振蕩電路,并在XLAT1和XLAT2兩引腳間外接石英晶體和電容構(gòu)成的并聯(lián)諧振電路,使內(nèi)部振蕩器產(chǎn)生自激振蕩。石英晶體Y1頻率是12.0M,C1和C2是30pf。STC12C5A60S2單片機最小系統(tǒng)線路圖如圖3-1所示。

      

  圖3-1  STC12C5A60S2單片機最小系統(tǒng)線路圖

3.2 A/D轉(zhuǎn)換電路
A/D轉(zhuǎn)換是用來通過一定的電路將模擬量轉(zhuǎn)變?yōu)閿?shù)字量。模擬量可以是電壓、電流等電信號,也可以是壓力、溫度、濕度、位移、聲音等非電信號。但在A/D轉(zhuǎn)換前,輸入到A/D轉(zhuǎn)換器的輸入信號必須經(jīng)各種傳感器把各種物理量轉(zhuǎn)換成電壓信號。

將模擬量或連續(xù)變化的量進行量化(離散化),轉(zhuǎn)換為相應(yīng)的數(shù)字量的電路。 A/D變換包含三個部分:抽樣、量化和編碼。一般情況下,量化和編碼是同時完成的。 抽樣是將模擬信號在時間上離散化的過程; 量化是將模擬信號在幅度上離散化的過程; 編碼是指將每個量化后的樣值用一定的二進制代碼來表示。

采集光照強度運用光敏電阻和電位器來構(gòu)成信號采集電路。AD轉(zhuǎn)換電路有STC12內(nèi)部10位AD組成。STC125A60S2內(nèi)部AD基準電壓5V,輸入電壓范圍為0~5V,輸出數(shù)字量最大值為1024。如圖3-2所示為信號采集電路。

圖3-2 信號采集電路
3.3 LED驅(qū)動
脈寬調(diào)制(PWM)是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換及LED照明等許多領(lǐng)域中。通過以數(shù)字方式控制模擬電路,可以大幅度降低系統(tǒng)的成本和功耗。LED器件對驅(qū)動電源的要求近乎于苛刻,LED不像普通的白熾燈泡,可以直接連接220V的交流市電。LED是2~3伏的低電壓驅(qū)動,必須要設(shè)計復(fù)雜的變換電路,不同用途的LED燈,要配備不同的電源適配器。
電流控制LED的亮度,通過控制電流調(diào)節(jié)LED燈的亮度。利用公式i*t/T可知,利用調(diào)整PWM不同的占空比t/T就可以控制電流的大小。電流由三極管9013提供驅(qū)動,PWM由P1.3輸出,低電平有效。如圖3-3所示為PWM電路。

         

圖3-3 PWM電路

3.4 LCD顯示電路
1602采用標(biāo)準的16腳接口,本設(shè)計當(dāng)前光照采用的是LCD1602顯示檢測信息。所以單片機需要給LCD分配3位個控制信號IO口和8位數(shù)據(jù)傳輸IO口,LCD的EN控制端連接P2.2,RS控制端連接P2.0,RW控制端連接P2.1,8位據(jù)總線連接PO口。如圖3-4所示為LCD電路。

         

圖3-4 LCD電路

3.5 按鍵切換手動和自動
K3按下為自動控制,K4按下為手動控制,來回按K3、K4切換。當(dāng)手動按鍵按下時,K1為LED亮度增加,當(dāng)增加到最大值自動為最小,K2為LED亮度減小,當(dāng)減少到最小值時自動為最大。
按鍵電路的工作原理:芯片的控制器通過讀取I/O口的信息(可采用逐位讀入,或者整個字節(jié)讀入的方法),來判斷哪一個按鍵被按下(或哪幾個按鍵被同時按下),按下按鍵時I/O位的信息為”高電位“。然后根據(jù)內(nèi)部設(shè)定的判斷,轉(zhuǎn)去執(zhí)行相應(yīng)的程序。如圖3-5所示為按鍵電路:

            

圖3-5 按鍵電路

3.6 光敏電阻
光敏電阻器是利用半導(dǎo)體的光電導(dǎo)效應(yīng)制成的一種電阻值隨入射光的強弱而改變的電阻器,又稱為光電導(dǎo)探測器;入射光強,電阻減小,入射光弱,電阻增大。還有另一種入射光弱,電阻減小,入射光強,電阻增大。
光敏電阻器一般用于光的測量、光的控制和光電轉(zhuǎn)換(將光的變化轉(zhuǎn)換為電的變化)。常用的光敏電阻器硫化鎘光敏電阻器,它是由半導(dǎo)體材料制成的。光敏電阻器對光的敏感性(即光譜特性)與人眼對可見光(0.4~0.76)μm的響應(yīng)很接近,只要人眼可感受的光,都會引起它的阻值變化。設(shè)計光控電路時,都用白熾燈泡(小電珠)光線或自然光線作控制光源,使設(shè)計大為簡化。光敏電路如圖3-6所示:

  

   圖3-6 光敏電路

3.7 電源設(shè)計

電源電路是指提供給用電設(shè)備電力供應(yīng)的電源部分的電路設(shè)計,使用的電路形式和特點。常見的電源電路有交流電源電路、直流電源電路等。

此次采用 78XX系列固定三端穩(wěn)壓器穩(wěn)壓,三端正穩(wěn)壓電路,能提供多種固定的輸出電壓,應(yīng)用范圍廣,內(nèi)含過流,過熱和過載保護電路。降壓穩(wěn)壓部分由三端穩(wěn)壓管7805、電解電容組成,將9V轉(zhuǎn)換成穩(wěn)定的5V。如圖3-7所示為電源電路。

   

圖3-7 電源電路

第4章 系統(tǒng)軟件設(shè)計

4.1 系統(tǒng)流程圖
  此次系統(tǒng)軟件設(shè)計利用信號采集電路讀取當(dāng)前亮度,并通過程序及系統(tǒng)判斷其亮度是否大于設(shè)定亮度,是則減小PWM輸出,否則增大PWM輸出,通過程序所得PWM值調(diào)節(jié)LED亮度,從而控制系統(tǒng)達到調(diào)光功能。程序流程圖如圖4-1所示:

圖4-1 程序流程圖

4.2 系統(tǒng)程序

  1. #include" STC12c5a.h" //stc頭文件
  2. #include"intrins.h" //包含_nop_空操作的定義
  3. typedef unsigned char uchar;
  4. typedef unsigned int  uint;
  5. sbit RW=P2^1;//寫入時一直為低電平,讀出時為高。
  6. sbit RS=P2^0; //指令數(shù)據(jù)選擇端
  7. sbit LCDEN=P2^2;//使能端
  8. sbit key1=P3^0;
  9. sbit key2=P3^1;
  10. sbit key3=P3^2;
  11. sbit key4=P3^3;
  12. uchar j=0;
  13. void AD_init();//AD初始化
  14. //函數(shù)聲明
  15. void delay(uint a);
  16. uint AD_work(uchar channel);
  17. uint  AD_get(uchar channel);
  18. uchar disbuf[]=" illumin: .    ";
  19. uchar PWM[]={0xec,0xe7,0xe0,0xda,0xd3,0xcd,0xc0,0xa6,0x9a,0x80,0x33,0x00} ;              //                92.5%-0%
  20. void pwm_set(unsigned char a);
  21. void pwm_init()
  22. {
  23. CCON=0; //PCA初始化
  24. CH=0;                //PCA              高8位
  25. CL=0;                //PCA              低8位
  26. CMOD=0x00;  //f=sysclk/256/12
  27. CCAPM0=0x42;              //p1.3
  28. PCA_PWM0=0x00;
  29. CR=1;  //啟動PCA計數(shù)器
  30. }
  31. void pwm_set(unsigned char a)              //占空比設(shè)置
  32. {
  33. CCAP0H=CCAP0L=a;
  34. }
  35. void write_com(uchar com )
  36. {
  37. RS=0;
  38. RW=0;
  39. LCDEN=0;
  40. P0=com ;
  41. delay(5);
  42. LCDEN=1;
  43. delay(5);
  44. LCDEN=0;
  45. }
  46. void write_dat(uchar date)
  47. {
  48. RW=0;
  49. RS=1;
  50. LCDEN=0;
  51. P0=date;
  52. delay(5);
  53. LCDEN=1;
  54. delay(5);
  55. LCDEN=0;
  56. }
  57. //液晶初始化
  58. void LCDinit()
  59. {
  60. write_com(0x0c);
  61. write_com(0x06);
  62. write_com(0x01);
  63. write_com(0x38);
  64. }
  65. void  display(unsigned int z)
  66. {
  67. uchar i;
  68. disbuf[9]=z%1000/100+0x30;
  69. disbuf[11]=z%100/10+0x30;
  70. disbuf[12]=z%10+0x30;
  71. for(i=0;i<13;i++)
  72. write_dat(disbuf[i]);
  73. }
  74. void main()
  75. {
  76. AD_get(1);
  77. AD_init(); //A/D轉(zhuǎn)換初始化
  78. LCDinit(); //液晶初始化
  79. pwm_init();//照度檢測
  80. pwm_set(0xda);
  81. delay(200);
  82. while(1)
  83. {
  84. write_com(0x80);
  85. display(AD_work(1));
  86. if(key3==0)
  87. {
  88. delay(5);
  89. if(key3==0)                                                                                    //自動模式
  90. {
  91. while(key4==1)
  92. {
  93. write_com(0x80);
  94. display(AD_work(1));
  95. if(AD_work(1)>=900)
  96. pwm_set(0xEC);                 
  97. if((850<=AD_work(1))&&(AD_work(1)<900))
  98. pwm_set(0xE7);
  99. if((750<=AD_work(1))&&(AD_work(1)<850))
  100. pwm_set(0xe0);
  101. if((700<=AD_work(1))&&(AD_work(1)<750))
  102. pwm_set(0xda);
  103. if((600<=AD_work(1))&&(AD_work(1)<700))
  104. pwm_set(0xd3);
  105. if((500<=AD_work(1))&&(AD_work(1)<600))
  106. pwm_set(0xCD);
  107. if((400<=AD_work(1))&&(AD_work(1)<500))
  108. pwm_set(0xC0);
  109. if((300<=AD_work(1))&&(AD_work(1)<400))
  110. pwm_set(0xA6);
  111. if((200<=AD_work(1))&&(AD_work(1)<300))
  112. pwm_set(0x9A);
  113. if((150<=AD_work(1))&&(AD_work(1)<200))
  114. pwm_set(0x80);
  115. if((100<=AD_work(1))&&(AD_work(1)<150))
  116. pwm_set(0x33);
  117. if(AD_work(1)<100 )
  118. pwm_set(0x00);
  119. }
  120. }
  121. }
  122. if(key4==0)                                                                                    // 手動模式
  123. {
  124. delay(5);
  125. if(key4==0)
  126. {
  127. while(key3==1)
  128. {
  129. write_com(0x80);
  130. display(AD_work(1));
  131. if(key1==0)
  132. {
  133. delay(5);
  134. if(key1==0)
  135. {
  136. if(j==11)
  137. j=0;
  138. pwm_set((PWM[j++]));
  139. }
  140. }
  141. if(key2==0)
  142. {
  143. delay(5);
  144. if(key2==0)
  145. {
  146. if(j==0)
  147. j=11;
  148. pwm_set((PWM[j--]));
  149. }
  150. }
  151. }
  152. }
  153. }
  154. }
  155. }
  156. uint AD_get(uchar channel)
  157. {
  158. ADC_CONTR=0x88|channel;    //開啟AD轉(zhuǎn)換1000 1000 即POWER SPEED1 SPEED0 ADC_FLAG   ADC_START CHS2 CHS1 CHS0
  159. _nop_(); _nop_(); _nop_(); _nop_();//要經(jīng)過4個CPU時鐘的延時,其值才能夠保證被設(shè)置進ADC_CONTR 寄存器
  160. while(!(ADC_CONTR&0x10));    //等待轉(zhuǎn)換完成
  161. ADC_CONTR&=0xe7;      //關(guān)閉AD轉(zhuǎn)換,ADC_FLAG位由軟件清0
  162. return(ADC_RES*4+ADC_RESL);   //返回AD轉(zhuǎn)換完成的10位數(shù)據(jù)(16進制)
  163. }
  164. /*unsigned char GETADCResult()//AD轉(zhuǎn)換
  165. {
  166. unsigned char AD;
  167. ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START;
  168. _nop_();
  169. _nop_();
  170. _nop_();
  171. _nop_();
  172. while(!(ADC_CONTR&ADC_FLAG));
  173. ADC_CONTR&=~ADC_FLAG;//關(guān)閉AD
  174. Vo=ADC_RES*5*10/256              ;
  175. return Vo;
  176. }
  177. uint AD_work(uchar channel)
  178. {
  179. float AD_val;     //定義處理后的數(shù)值A(chǔ)D_val為浮點數(shù)
  180. uchar i;
  181. uint AD_V;
  182. for(i=0;i<100;i++)
  183. AD_val+=AD_get(channel); //轉(zhuǎn)換100次求平均值(提高精度)
  184. AD_val/=100;
  185. AD_V=(uint)AD_val;
  186. return AD_V;
  187. }
  188. void delay(uint a) //延時約1ms
  189. {
  190. uint i;
  191. while (--a!=0)
  192. for(i=600;i>0;i--);   //1T單片機i=600,若是12T單片機i=125
  193. }
  194. void AD_init()
  195. {
  196. P1ASF=0x02; //P1.1 作為模擬功能AD使用                                                                                                
  197. ADC_RES=0;   //清零轉(zhuǎn)換結(jié)果寄存器高8位
  198. ADC_RESL=0; //清零轉(zhuǎn)換結(jié)果寄存器低2位
  199. ADC_CONTR=0x80;//開啟AD電源
  200. delay(2);   //等待1ms,讓AD電源穩(wěn)定
  201. ES=1;
  202. EA=1;
  203. }
復(fù)制代碼

第5章 系統(tǒng)仿真及調(diào)試
5.1 軟件調(diào)試
軟件程序設(shè)計對單片機的I/O接口的控制,智能光控臺燈主要通過光控電路對光的感應(yīng)以達到輸出端口的控制,在黑暗時光控部分輸出高電平,通過單片機內(nèi)部程序的控制以光控輸出高電平為準,給輸出端口定義低電平,臺燈是以低電平有效,當(dāng)單片機輸出端達到低電平時臺燈亮。
5.2 系統(tǒng)仿真
系統(tǒng)的硬件及軟件都已經(jīng)調(diào)試完成,然后利用protues進行系統(tǒng)仿真。在仿真中,利用光敏電阻模擬天黑天亮,用滑動變阻器來調(diào)整光亮的強度。
仿真圖如圖5-1所示。

   

圖5-1 光照強度強仿真圖

然后,調(diào)整光敏電阻阻值,使之達到天黑的效果。此時,單片機控制臺燈亮,仿真效果圖如圖5-2所示。

圖5-2 光照強度弱仿真圖


完整的Word格式文檔51黑下載地址:

自動感應(yīng)環(huán)境光的調(diào)光控制器.docx (202.95 KB, 下載次數(shù): 75)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:585365 發(fā)表于 2019-9-16 20:15 | 只看該作者
謝謝樓主的分享
回復(fù)

使用道具 舉報

板凳
ID:713781 發(fā)表于 2020-3-30 15:24 | 只看該作者
求樓主程序頭文件
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表