標(biāo)題: 單片機(jī)和上位機(jī)通信程序 求大神支招!! [打印本頁(yè)]

作者: 161210111    時(shí)間: 2017-8-24 10:38
標(biāo)題: 單片機(jī)和上位機(jī)通信程序 求大神支招!
//由上位機(jī)發(fā)送1給單片機(jī)時(shí),蜂鳴器以400ms頻率發(fā)聲,發(fā)2時(shí)以200ms頻率發(fā)聲,發(fā)3時(shí)以100ms頻率發(fā)聲,發(fā)4時(shí)關(guān)閑蜂鳴器。
下載后,用串口調(diào)試助手發(fā)送01/02/03時(shí),蜂蜜器一直響。幫忙看下那里錯(cuò)了,思路還是程序。!
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. sbit beep=P2^3;
  4. uchar flag,a,flag_1,flag_2,flag_3,t1,t2,t3;
  5. void main()
  6. {
  7.         TMOD=0x21;
  8.         TH1=0xfd;
  9.         TL1=0xfd;
  10.         TR1=1;
  11.         TH0=0x4c;
  12.         TL0=0x00;
  13.         SM0=0;
  14.         SM1=1;
  15.         REN=1;
  16.         EA=1;
  17.         ET0=1;
  18.         ES=1;

  19.         while(1)
  20.         {
  21.                 if(flag==1)
  22.                 {
  23.                         flag=0;
  24.                         if(a==1)
  25.                         {
  26.                                 TR0=1;
  27.                                 if(flag_1==1)
  28.                                 {
  29.                                         flag_1=0;
  30.                                         beep=~beep;
  31.                                 }
  32.                         }
  33.                         if(a==2)
  34.                         {
  35.                                 TR0=1;
  36.                                 if(flag_2==1)
  37.                                 {
  38.                                         flag_2=0;
  39.                                         beep=~beep;
  40.                                 }
  41.                         }
  42.                         if(a==3)
  43.                         {
  44.                                 TR0=1;
  45.                                 if(flag_3==1)
  46.                                 {
  47.                                         flag_3=0;
  48.                                         beep=~beep;
  49.                                 }
  50.                         }
  51.                         if(a==4)
  52.                         {
  53.                                 beep=1;
  54.                         }
  55.                 }
  56.         }
  57. }

  58. void  timer0() interrupt 1
  59. {
  60.         TH0=0x4c;
  61.         TL0=0x00;
  62.         t1++;
  63.         t2++;
  64.         t3++;
  65.         if(t3==2)
  66.         {
  67.                 t3=0;
  68.                 flag_3=1;
  69.         }
  70.         if(t2==4)
  71.         {
  72.                 t2=0;
  73.                 flag_2=1;
  74.         }
  75.         if(t1==8)
  76.         {
  77.                 t1=0;
  78.                 flag_1=1;
  79.         }
  80. }

  81. void uart() interrupt 4
  82. {
  83.         RI=0;
  84.         a=SBUF;
  85.         flag=1;
  86. }
復(fù)制代碼




作者: cjjcjj1    時(shí)間: 2017-8-24 16:44
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: zl2168    時(shí)間: 2017-8-24 19:14
聲音頻率不是以ms為單位,波長(zhǎng)單位才是ms!而且,波長(zhǎng)依次為100ms、200ms和400ms的頻率依次為100kHz發(fā)聲,發(fā)2時(shí)以200ms頻率發(fā)聲,發(fā)3時(shí)以100ms頻率發(fā)聲
作者: zl2168    時(shí)間: 2017-8-24 19:17
聲音頻率不是以ms為單位,波長(zhǎng)單位才是ms!而且,波長(zhǎng)依次為100ms、200ms和400ms的頻率依次為100kHz、50kHz和25kHz,人的耳朵能聽(tīng)到嗎?????你這個(gè)題目是你自己想出來(lái)的還是老師布置的?如果是老師布置的,這個(gè)老師可以被解聘了。
作者: 161210111    時(shí)間: 2017-8-24 21:23
zl2168 發(fā)表于 2017-8-24 19:17
聲音頻率不是以ms為單位,波長(zhǎng)單位才是ms!而且,波長(zhǎng)依次為100ms、200ms和400ms的頻率依次為100kHz、50kHz ...

就是蜂鳴器響的頻率  即200ms響1次
作者: 161210111    時(shí)間: 2017-8-24 21:27
cjjcjj1 發(fā)表于 2017-8-24 16:44
你好,發(fā)送的是字符還是16進(jìn)制?

16進(jìn)制
作者: oo0o_11    時(shí)間: 2017-8-24 22:31
把發(fā)聲的那些語(yǔ)句從串口標(biāo)志位flag的判斷中提出來(lái),你這樣寫只執(zhí)行一次,要么一直響要么一直滅!




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