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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8919|回復: 7
打印 上一主題 下一主題
收起左側

51單片機智能調光臺燈原理圖,PCB圖和程序

  [復制鏈接]
跳轉到指定樓層
樓主
調光臺燈PCB圖:


所有資料51hei提供下載:
PDF格式 智能調光燈.pdf (229.08 KB, 下載次數: 75)
Word格式.doc (25.5 KB, 下載次數: 81)

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


  4. sbit SCL=P2^2;                //SCL定義為P1口的第3位腳,連接ADC0832SCL腳
  5. sbit DO=P2^3;                //DO定義為P1口的第4位腳,連接ADC0832DO腳
  6. sbit CS=P2^0;                //CS定義為P1口的第4位腳,連接ADC0832CS腳


  7. sbit red = P1^4;           //紅色指示燈

  8. sbit td_led = P3^5;    //臺燈

  9. uchar f_pwm_l ;          //越小越亮

  10. bit flag_moshi;

  11. uchar dangwei;   //檔位


  12. uchar guangxian;            //光線的顯示變量


  13. /***********************1ms延時函數*****************************/
  14. void delay_1ms(uint q)
  15. {
  16.         uint i,j;
  17.         for(i=0;i<q;i++)
  18.                 for(j=0;j<120;j++);
  19. }


  20. /***********讀數模轉換數據********************************************************/      
  21. //請先了解ADC0832模數轉換的串行協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串行協議進行的
  22.                                                 //  1  1  0 通道
  23.                                                 //  1  1  1 通道
  24. unsigned char ad0832read(bit SGL,bit ODD)
  25. {
  26.         unsigned char i=0,value=0,value1=0;               
  27.                 SCL=0;
  28.                 DO=1;
  29.                 CS=0;                //開始
  30.                 SCL=1;                //第一個上升沿      
  31.                 SCL=0;
  32.                 DO=SGL;
  33.                 SCL=1;          //第二個上升沿
  34.                 SCL=0;
  35.                 DO=ODD;
  36.                 SCL=1;           //第三個上升沿
  37.                 SCL=0;           //第三個下降沿
  38.                 DO=1;
  39.                 for(i=0;i<8;i++)
  40.                 {
  41.                         SCL=1;
  42.                         SCL=0; //開始從第四個下降沿接收數據
  43.                         value<<=1;
  44.                         if(DO)
  45.                                 value++;                                               
  46.                 }
  47.                 for(i=0;i<8;i++)
  48.                 {                        //接收校驗數據
  49.                         value1>>=1;
  50.                         if(DO)
  51.                                 value1+=0x80;
  52.                         SCL=1;
  53.                         SCL=0;
  54.                 }
  55.                 CS=1;
  56.                 SCL=1;      
  57.                 if(value==value1)                                //與校驗數據比較,正確就返回數據,否則返回0      
  58.                         return value;
  59.         return 0;
  60. }

  61. uchar key_can;
  62. /********************獨立按鍵程序*****************/
  63. void key()
  64. {
  65.         static uchar key_new;
  66.         key_can = 20;
  67.         if((P2 & 0xf0) != 0xf0)
  68.         {
  69.                 delay_1ms(1);
  70.                 if(((P2 & 0xf0) != 0xf0) && (key_new == 1))
  71.                 {
  72.                         key_new = 0;
  73.                         switch(P2 & 0xf0)
  74.                         {
  75.                                 case 0xe0:  key_can = 3;  break;         //左邊第1個
  76.                                 case 0xd0:  key_can = 2;  break;         //左邊第2個
  77.                                 case 0xb0:  key_can = 1;  break;         //左邊第3個
  78.                         }
  79.                         red = 0;
  80.                         delay_1ms(80);
  81.                         red = 1;
  82. //                        write_sfm2(2,0,key_can);                              
  83.                 }
  84.         }
  85.         else
  86.                 key_new = 1;      
  87. }

  88. /***************檔位***************/
  89. void led_dangwei(uchar dat)
  90. {
  91.         switch(dat)
  92.         {
  93.                 case 7: TR0 = 0;         //最亮
  94.                                 td_led = 0;
  95.                         break;
  96.                 case 6: TR0 = 1;         //亮
  97.                                 f_pwm_l = 20;
  98.                         break;
  99.                 case 5: TR0 = 1;         //亮
  100.                                 f_pwm_l = 40;
  101.                         break;
  102.                 case 4: TR0 = 1;         //亮
  103.                                 f_pwm_l = 60;
  104.                         break;
  105.                 case 3: TR0 = 1;         //亮
  106.                                 f_pwm_l = 80;
  107.                         break;
  108.                 case 2: TR0 = 1;         //亮
  109.                                 f_pwm_l = 90;
  110.                         break;
  111.                 case 1: TR0 = 1;         //亮
  112.                                 f_pwm_l = 95;
  113.                         break;
  114.                 case 0: TR0 = 0;         //滅
  115.                                 td_led = 1;
  116.                         break;
  117.         }      
  118. }

  119. /****************按鍵處理函數***************/
  120. void key_with()
  121. {
  122.         if(key_can == 1)          //設置鍵
  123.         {
  124.                 flag_moshi = ~flag_moshi;  
  125.         }
  126.         if(flag_moshi == 1)          //手動模式
  127.         {
  128.                 if(key_can == 2)   //加
  129.                 {
  130.                         dangwei ++;      
  131.                         if(dangwei >= 7)
  132.                                 dangwei = 7;
  133.                 }

  134.                 if(key_can == 3)   //減
  135.                 {
  136.                         if(dangwei != 0)
  137.                                 dangwei --;
  138.                 }
  139.                 led_dangwei(dangwei) ;    //檔位
  140.         }
  141. }

  142. /*************定時器0初始化程序***************/
  143. void time_init()         
  144. {
  145.         EA   = 1;                   //開總中斷
  146.         TMOD |= 0X21;          //定時器1工作方式1
  147.         ET0  = 1;                  //開定時器0中斷
  148.         TR0  = 0;                  //允許定時器0定時
  149. }


  150. /********************************************************************
  151. * 名稱 : Main()
  152. * 功能 : 主函數
  153. * 輸入 : 無
  154. * 輸出 : 無
  155. ***********************************************************************/
  156. void Main()
  157. {
  158.         uchar flag_200ms;
  159.         P0 = P1 = P2 = P3 = 0xff;           //初始化單片機IO口為高電平        write_string(2,0,"     :  :        ");
  160.         time_init();                    //初始化定時器
  161.         red = 0;
  162.         f_pwm_l = 99;
  163.         while(1)
  164.         {

  165.                 key();
  166.                 if(key_can < 10)
  167.                         key_with();
  168.                 if(flag_moshi == 0)          //自動模式
  169.                         red = 1;
  170.                 else
  171.                         red = 0;                  //手動模式

  172.                 if(flag_moshi == 0)          //自動模式
  173.                 {
  174.                         if(guangxian <= 20)             //開燈
  175.                         {
  176.                                 TR0 = 0;         //最亮
  177.                                 td_led = 0;      
  178.                         }else if(guangxian >= 80)        //關燈      
  179.                         {
  180.                                 TR0 = 0;         //滅
  181.                                 td_led = 1;
  182.                         }else
  183.                         {
  184.                                 TR0 = 1;      
  185.                                 f_pwm_l = guangxian;      
  186.                         }      
  187.                 }
  188.                 flag_200ms ++;
  189.                 if(flag_200ms >= 200)
  190.                 {
  191.                         flag_200ms = 0;
  192.                         guangxian = ad0832read(1,0); //采集光線
  193.                         guangxian = guangxian * 99 / 255;
  194.                 }
  195.                 delay_1ms(1);
  196.         }      
  197. }


  198. /*******************定時器0用做單片機模擬PWM 調節***********************/
  199. void Timer0() interrupt 1  //調用定時器0
  200. {
  201.         static uchar value_l;
  202.         TH0=0xfe;    //    定時10ms中斷一次
  203.         TL0=0x0c;         //500us
  204.         if(td_led==1)
  205.         {
  206.                 value_l+=3;
  207.                 if(value_l > f_pwm_l)   //高電平
  208.                 {
  209.                         value_l=0;
  210.                     if(f_pwm_l != 0)   
  211.                                 td_led=0;         
  212.                 }
  213.         }
  214.         else                              
  215.         {
  216.                 value_l+=3;
  217.                 if(value_l  > 100 - f_pwm_l)                  //低電平
  218.                 {
  219.                         value_l=0;
  220.                         td_led=1;
  221.                 }
  222.     }
  223. }
復制代碼

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂 踩1
回復

使用道具 舉報

沙發
ID:87193 發表于 2017-12-25 15:42 | 只看該作者
下載看看,樓主有做出實物嗎
回復

使用道具 舉報

板凳
ID:87193 發表于 2017-12-25 15:50 | 只看該作者
附件里根本沒有PCB文件,好坑
回復

使用道具 舉報

地板
ID:334996 發表于 2018-5-21 22:48 | 只看該作者
樓主可否講解一下他的數模轉換部分
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
6#
ID:146605 發表于 2018-12-25 20:47 | 只看該作者
謝謝樓主,很給力
回復

使用道具 舉報

7#
ID:446775 發表于 2021-8-7 22:55 | 只看該作者
樓主這個數模轉化主要是轉換什么信號?光源的亮度調節是使用的PWM嗎?
回復

使用道具 舉報

8#
ID:953538 發表于 2021-8-9 08:49 | 只看該作者
使用的PWM光源的亮度調節,能否控制輸出電壓的大小。
回復

使用道具 舉報

9#
無效樓層,該帖已經被刪除
10#
ID:585365 發表于 2021-8-10 16:58 | 只看該作者
我也有做過一個相同的,但種在最后的時候會閃爍
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久久久久最新 | 久久人体视频 | 国产精品一区在线播放 | 日韩欧美在 | 免费欧美视频 | 久久精品91久久久久久再现 | 中文字幕第100页 | 9191av| 精品久久久久久久久久 | 国产区免费视频 | 成人福利片 | 狠狠草视频 | 成人免费高清 | 一本一道久久a久久精品蜜桃 | 久久久黑人| 亚洲精品成人av | 国产亚洲精品久久午夜玫瑰园 | 特黄毛片| 国产国产精品久久久久 | 中文字幕成人av | 日韩视频91| 久久精品网 | 国产女人与拘做受视频 | 国产一级免费在线观看 | 一区二区日韩 | 国产免费观看久久黄av片涩av | 国产69久久精品成人看动漫 | 操网站| 成人黄色电影在线观看 | 日本在线视频一区二区 | 国产精彩视频在线观看 | 色综合久久天天综合网 | 日韩三极 | 日本一区二区三区视频在线 | 日韩在线一区二区 | 99久久精品免费看国产小宝寻花 | 日日摸夜夜添夜夜添精品视频 | 久久精品欧美一区二区三区麻豆 | 日本久久久久久 | 国产福利小视频 | 国产精品高潮呻吟久久 |