Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3287|回复: 18

任培昊的个人贴

[复制链接]

2

主题

20

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
发表于 2022-11-1 17:33:34 | 显示全部楼层 |阅读模式
虚心求教,努力提升
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2022-11-1 17:47:27 | 显示全部楼层
加油加油
回复

使用道具 举报

2

主题

20

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
 楼主| 发表于 2022-11-6 10:30:46 | 显示全部楼层
目前进度:了解了学习板的各种元件,正在进行红外和串口通信的学习
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2022-11-6 11:10:34 | 显示全部楼层
好,抓紧推进
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2022-11-12 10:12:36 | 显示全部楼层
按这个修改下吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

20

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
 楼主| 发表于 2023-1-7 17:34:03 | 显示全部楼层
完成任务一流水灯的点亮
代码如下:
  1. #include <STC15F2K60S2.H>
  2. void delay()
  3. {       
  4. int i,s=0;
  5. for(i=0;i<=200;i++)
  6. {
  7. for(s=0;s<=200;s++)
  8.         {
  9. }
  10. }
  11. }

  12. void main()
  13. {
  14.         P2=0x80;

  15.         P00=0xfe;
  16.        
  17.          while(1)
  18.          {
  19.     int a;
  20.                 for(a=0;a<=7;a++)
  21.                  {
  22.                  P0=~(0x01<<a);
  23.                  delay();
  24.                  }
  25.          }
  26. }
复制代码

问题:不明白蜂鸣器为什么没响

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2023-1-8 17:11:57 | 显示全部楼层
关闭蜂鸣器的流程:
更正,第五步有错,应该是N Buzz成为高阻态,蜂鸣器关闭

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

20

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
 楼主| 发表于 2023-1-8 19:34:43 | 显示全部楼层
收获:明白蜂鸣器的工作原理
  1. #include <STC15F2K60S2.H>
  2. void main()
  3. {
  4.         P00=0;
  5.         P25=0;
  6.         P26=0;
  7.         P27=1;
  8.         P2=0xa0;
  9.         P0=0x40;
  10.         while(1);
  11. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

20

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
 楼主| 发表于 2023-1-8 19:43:03 | 显示全部楼层
对于蜂鸣器演奏音乐比较感兴趣,然后查找了一些相关资料,下面的代码可以运行成功但是可能是频率和延时没调好吧才有了附件中乱响的情况,所以想知道怎么调好顺便可以拓宽一下知识面
  1. #include <STC15F2K60S2.H>
  2. #include <intrins.h>
  3. //di yin
  4. #define DOL 1908       
  5. #define REL 1701
  6. #define MIL 1515
  7. #define FAL 1449
  8. #define SOL 1275
  9. #define LAL 1136
  10. #define SIL 1012
  11. //zhong yin
  12. #define DOM 956
  13. #define REM 852
  14. #define MIM 759
  15. #define FAM 716
  16. #define SOM 638
  17. #define LAM 568
  18. #define SIM 506
  19. //gao yin
  20. #define DOH 478
  21. #define REH 426
  22. #define MIH 379
  23. #define FAH 358
  24. #define SOH 319
  25. #define LAH 284
  26. #define SIH 254

  27. #define STOP 65535

  28. #define B41 400               
  29. #define B31 300
  30. #define B21 200
  31. #define B32 150
  32. #define B11 100               
  33. #define B34 75
  34. #define B12 50
  35. #define B14 25               

  36. sbit buzzer=P0^6;

  37. unsigned char th0;
  38. unsigned char tl0;

  39. int code music1[]=
  40. {
  41.         LAM,B12,DOH,B12,REH,B12,REH,B12,REH,B12,REH,B12,REH,B11,MIH,B12,
  42.         FAH,B12,FAH,B11,MIH,B32,DOH,B11,REH,B11,MIH,B11,MIH,B11,SOH,B11,
  43.         LAH,B12,LAH,B11,DOH,B11,DOH,B11,MIH,B11,REH,B21,DOH,B11,REH,B11,MIH,B21,
  44.        
  45.         DOH,B11,REH,B11,MIH,B11,MIH,B11,SOH,B11,LAH,B12,LAH,B11,DOH,B11,
  46.         DOH,B11,MIH,B11,REH,B21,DOH,B11,SIM,B11,DOH,B21,
  47.         0,0
  48. };
  49. void delay_ms(unsigned int ms)
  50. {
  51.         unsigned int  i,j;
  52.         for(i=0;i<ms;i++)
  53.          for(j=0;j<686;j++)
  54. {
  55.           _nop_();
  56.           _nop_();
  57.           _nop_();
  58.           _nop_();
  59.          }
  60. }
  61. void SetFreq(int time)
  62. {
  63.         th0=(65536-time)>>8;
  64.         tl0=(65536-time)&0x00ff;
  65.         TH0=th0;
  66.         TL0=tl0;
  67. }
  68. void Buzzer(int Tone, int Beat)
  69. {
  70.         SetFreq(Tone);
  71.         delay_ms(100*Beat);
  72. }
  73. void PlayMusic(int* music)
  74. {
  75.         int tone=0;
  76.         int beat=1;       
  77.        
  78.         while(music[beat]>0)
  79.         {
  80.                 Buzzer(music[tone],music[beat]);
  81.                 Buzzer(STOP,100);
  82.                 tone+=2;
  83.                 beat+=2;
  84.         }
  85. }
  86. void Timer0Init(void)               
  87. {
  88.         AUXR &= 0x7F;               
  89.         TMOD &= 0xF0;               
  90.         TMOD |= 0x01;               
  91.         TL0 = 0;               
  92.         TH0 = 0;               
  93.         TF0 = 0;       
  94.         TR0 = 1;               
  95. }
  96. void main()
  97. {
  98.         Timer0Init();
  99.         EA=1;
  100.         ET0=1;
  101.         P2=(P2&0x1f)|0xa0;buzzer=1;P2&=0x1f;
  102.         while(1)
  103. {
  104.                 PlayMusic(music1);
  105. };
  106. }
  107. void Time0_Int() interrupt 1
  108. {
  109.         TH0=th0;
  110.         TL0=tl0;
  111.        
  112.         P2=(P2&0x1f)|0xa0;buzzer=!buzzer;P2&=0x1f;
  113. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2023-1-8 20:08:20 | 显示全部楼层
renpeihao 发表于 2023-1-8 19:43
对于蜂鸣器演奏音乐比较感兴趣,然后查找了一些相关资料,下面的代码可以运行成功但是可能是频率和延时没调 ...
蜂鸣器分为有源和无源两种。

有源蜂鸣器接上直流电就鸣叫,鸣叫的频率是确定的(如3KHz),不能改变,单片机只可以控制它的断通,产生如长鸣、渐变音、间歇音等,但它的音调还是不变的;
若要奏乐需要无源蜂鸣器,即用单片机控制它的频率和音长,产生不同的音调和节拍。

蓝桥杯板子上的有源蜂鸣器,不能奏乐
protues中可以用speaker模拟无缘蜂鸣器
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2024-11-23 23:24 , Processed in 0.052742 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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