找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機和上位機通信程序 求大神支招。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:223498 發(fā)表于 2017-8-24 10:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//由上位機發(fā)送1給單片機時,蜂鳴器以400ms頻率發(fā)聲,發(fā)2時以200ms頻率發(fā)聲,發(fā)3時以100ms頻率發(fā)聲,發(fā)4時關(guān)閑蜂鳴器。
下載后,用串口調(diào)試助手發(fā)送01/02/03時,蜂蜜器一直響。幫忙看下那里錯了,思路還是程序!!
  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ù)制代碼



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

使用道具 舉報

沙發(fā)
ID:82765 發(fā)表于 2017-8-24 16:44 來自觸屏版 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

板凳
ID:111634 發(fā)表于 2017-8-24 19:14 | 只看該作者
聲音頻率不是以ms為單位,波長單位才是ms!而且,波長依次為100ms、200ms和400ms的頻率依次為100kHz發(fā)聲,發(fā)2時以200ms頻率發(fā)聲,發(fā)3時以100ms頻率發(fā)聲
回復(fù)

使用道具 舉報

地板
ID:111634 發(fā)表于 2017-8-24 19:17 | 只看該作者
聲音頻率不是以ms為單位,波長單位才是ms!而且,波長依次為100ms、200ms和400ms的頻率依次為100kHz、50kHz和25kHz,人的耳朵能聽到嗎?????你這個題目是你自己想出來的還是老師布置的?如果是老師布置的,這個老師可以被解聘了。
回復(fù)

使用道具 舉報

5#
ID:223498 發(fā)表于 2017-8-24 21:23 | 只看該作者
zl2168 發(fā)表于 2017-8-24 19:17
聲音頻率不是以ms為單位,波長單位才是ms!而且,波長依次為100ms、200ms和400ms的頻率依次為100kHz、50kHz ...

就是蜂鳴器響的頻率  即200ms響1次
回復(fù)

使用道具 舉報

6#
ID:223498 發(fā)表于 2017-8-24 21:27 | 只看該作者
cjjcjj1 發(fā)表于 2017-8-24 16:44
你好,發(fā)送的是字符還是16進(jìn)制?

16進(jìn)制
回復(fù)

使用道具 舉報

7#
ID:228347 發(fā)表于 2017-8-24 22:31 | 只看該作者
把發(fā)聲的那些語句從串口標(biāo)志位flag的判斷中提出來,你這樣寫只執(zhí)行一次,要么一直響要么一直滅!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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