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

標題: 基于51單片機的聲光控延時燈程序Proteus仿真圖 [打印本頁]

作者: onc2001    時間: 2024-6-30 06:11
標題: 基于51單片機的聲光控延時燈程序Proteus仿真圖
基于51的聲光控延時燈
仿真圖protues 8.0程序編譯器:keil 4/keil 5程序 仿真原理圖 單片機AT89S521)光控功能,?天光線較強,有聲音燈不亮;光線較暗,有聲音時燈點亮。2)聲控功能:傍晚光線變暗后,?動進?待機狀態,有聲音時,通電亮燈,延時 30 秒后?動斷電;無聲音時不點亮;3)燈在點亮時如有新的聲音,燈應該重新點亮 30 秒。4)用 PROTEUS 或 MULTISIM 軟件進行仿真調試實現

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include "main.h"

  2. bit sflag=0;
  3. bit heitian=0;
  4. bit baitian=0;

  5. unsigned int Countdown=0;

  6. void baitian_run();
  7. void InitTimer0(void);


  8. void main() //0通道光
  9. {
  10.         
  11.         InitTimer0();
  12.         SW=1;
  13.         UartInit();
  14.         while(1)
  15.         {
  16.                 baitian_run();  
  17.         }
  18. }

  19. void Timer0Interrupt(void) interrupt 1 //12T@10ms
  20. {
  21.         static u16 timecount=0;
  22.         static u8 keycount=0;
  23.         TH0 = 0x0FC;
  24.   TL0 = 0x18;
  25.         timecount++;
  26.         keycount++;
  27.         if(timecount==1000)
  28.         {
  29.                 timecount=0;
  30.                 sflag=1;
  31.         }
  32.                
  33. }

  34. void baitian_run()
  35. {
  36.         unsigned long d=100000;
  37.         u8 adc,voltage1,voltage2;
  38.         adc = ADC_read_data(0);//讀取adc光值
  39.         voltage1 = adc * 500.0 / 255;//將adc值換算成電壓
  40.         adc = ADC_read_data(1);//讀取adc光值
  41.         voltage2 = adc * 500.0 / 255;//將adc值換算成電壓
  42.         
  43.         UART_SendNum(voltage2);
  44.         while(d--);
  45.         
  46.         if(voltage1<LS)
  47.         {
  48.                 heitian=1;
  49.         }
  50.         else
  51.         {
  52.                 heitian=0;
  53.         }
  54.         if(heitian==1)
  55.         {
  56.                         if(voltage2>SS)
  57.                 {
  58.                         baitian=1;
  59.                 }
  60.         }
  61.         if(baitian==1)
  62.         {
  63.                
  64.                 if(voltage2>SS)
  65.                 {
  66.                         Countdown=0;
  67.                 }
  68.                 SW=0;
  69.                 if(sflag==1)
  70.                 {
  71.                         sflag=0;
  72.                         Countdown++;
  73.                         if(Countdown==Timeout)
  74.                         {
  75.                                 Countdown=0;
  76.                                 baitian=0;
  77.                         }
  78.                 }
  79.         }
  80.         else
  81.         {
  82.                 SW=1;
  83.         }
  84.         
  85.         
  86. }

  87. void InitTimer0(void)
  88. {
  89.     TMOD = 0x01;
  90.     TH0 = 0x0FC;
  91.     TL0 = 0x18;
  92.     EA = 1;
  93.     ET0 = 1;
  94.     TR0 = 1;
  95. }
復制代碼
下載:
基于51單片機的聲光控延時燈.7z (1.9 MB, 下載次數: 12)


作者: yunyun66    時間: 2024-7-2 14:36
有點看不懂
作者: onc2001    時間: 2024-9-26 00:12
yunyun66 發表于 2024-7-2 14:36
有點看不懂

哪里看不懂,我跟你說一下




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1