找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1547|回复: 6
打印 上一主题 下一主题
收起左侧

单片机和上位机通信程序 求大神支招!!

[复制链接]
跳转到指定楼层
楼主
ID:223498 发表于 2017-8-24 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。
下载后,用串口调试助手发送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. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:82765 发表于 2017-8-24 16:44 来自手机 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:111634 发表于 2017-8-24 19:14 | 只看该作者
声音频率不是以ms为单位,波长单位才是ms!而且,波长依次为100ms、200ms和400ms的频率依次为100kHz发声,发2时以200ms频率发声,发3时以100ms频率发声
回复

使用道具 举报

地板
ID:111634 发表于 2017-8-24 19:17 | 只看该作者
声音频率不是以ms为单位,波长单位才是ms!而且,波长依次为100ms、200ms和400ms的频率依次为100kHz、50kHz和25kHz,人的耳朵能听到吗?????你这个题目是你自己想出来的还是老师布置的?如果是老师布置的,这个老师可以被解聘了。
回复

使用道具 举报

5#
ID:223498 发表于 2017-8-24 21:23 | 只看该作者
zl2168 发表于 2017-8-24 19:17
声音频率不是以ms为单位,波长单位才是ms!而且,波长依次为100ms、200ms和400ms的频率依次为100kHz、50kHz ...

就是蜂鸣器响的频率  即200ms响1次
回复

使用道具 举报

6#
ID:223498 发表于 2017-8-24 21:27 | 只看该作者
cjjcjj1 发表于 2017-8-24 16:44
你好,发送的是字符还是16进制?

16进制
回复

使用道具 举报

7#
ID:228347 发表于 2017-8-24 22:31 | 只看该作者
把发声的那些语句从串口标志位flag的判断中提出来,你这样写只执行一次,要么一直响要么一直灭!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表