找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求一个基于PROTEUS仿真的51单片机信号发生器,要求可以调三角波,方波和正弦波!

[复制链接]
跳转到指定楼层
楼主
ID:99374 发表于 2015-12-11 23:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机需要交课程设计,急求一个基于PROTEUS仿真的51单片机信号发生器,要求可以调三角波,方波和正弦波,并且能调整频率和周期,希望各路大神帮帮忙,万分感谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:76227 发表于 2015-12-12 11:35 | 只看该作者
论坛里面好像有   以前好像看到过   你搜索一下
回复

使用道具 举报

板凳
ID:76227 发表于 2015-12-12 11:36 | 只看该作者
论坛里面好像有   以前好像看到过   你搜索一下
回复

使用道具 举报

地板
ID:259295 发表于 2017-12-10 16:27 | 只看该作者
论坛里面都有的,仔细找找
回复

使用道具 举报

5#
ID:155507 发表于 2017-12-10 20:48 | 只看该作者
51单片机做信号发生器实例编程
http://www.51hei.com/mcu/1690.html

  1. //用51单片机做信号发生器,同时输出四种频率的方波。
  2. //要求:晶振为12MHz,用T0做定时器,在P1的低四位输出四种频率的方波:
  3. // P1.3 = 1.25kHz、P1.2 = 2.5kHz、P1.1 = 5kHz、P1.0 = 10kHz
  4. //另外,上述四个频率要求用一个四选一数据选择器,再选出其中的一个输出出去。
  5. //P1.6、P1.7的输出用来控制四选一数据选择器的选择位,它们由P3.0按键控制。
  6. //===================================================
  7. //现在增加了PROTEUS仿真图片发上博客。
  8. //题目要求在相邻四条接口线输出的四种频率,恰有二倍的关系,这就可以利用一个定时中断来完成。
  9. //题目还要求使用一个数据选择器,通过按键选择一个频率来输出。
  10. //利用PROTEUS仿真的截图如下所示。
  11. //图中在输出端接上了一个频率计和一个扬声器,进行频率检测。
  12. //当按下按键时,输出频率可以轮番转换。
  13. //图中把四种频率的检测结果都截图显示,可以看出,输出的频率十分理想。
  14. //PC的扬声器也能听到声音,10kHz的频率,比较刺耳。
  15. //以下程序已经仿真成功。
  16. //---------------------------------------------------
  17. #include <reg52.h>
  18. #define uchar unsigned char
  19. #define TL_0SET (256 - 50) //定时时间选为50us
  20. //输出的方波周期将为100us, 10kHz
  21. sbit P3_2 = P3^2; //用于按键
  22. sbit P1_0 = P1^0; //四个频率输出
  23. sbit P1_1 = P1^1; //
  24. sbit P1_2 = P1^2; //
  25. sbit P1_3 = P1^3; //
  26. sbit P1_6 = P1^6; //两个选择控制输出
  27. sbit P1_7 = P1^7; //

  28. bdata uchar x = 0;
  29. sbit p16 = x^0;
  30. sbit p17 = x^1;

  31. uchar i, j;
  32. //---------------------------------------------------
  33. void e0int() interrupt 0 //外部中断0作开关,控制四选一数据选择器
  34. {
  35. while(P3_2 == 0) {;} //等待按键释放
  36. x++;
  37. if(x == 4) x = 0; //改变当前输出的选择
  38. P1_7 = p16;
  39. P1_6 = p17;
  40. }
  41. //---------------------------------------------------
  42. void time0() interrupt 1 //T0的中断服务程序
  43. { //T0工作在方式2,自动装入初始值
  44. i++;
  45. j = i % 16; //取i的低四位
  46. j += x << 6; //组合上数据选择器的控制信号
  47. P1 = j; //输出四种频率的方波以及控制信号
  48. }
  49. //---------------------------------------------------
  50. void main()
  51. {
  52. TMOD = 0x02; //T0定时方式2
  53. TH0 = TL_0SET; //自装入式的定时初始值
  54. TR0 = 1; //启动T0
  55. ET0 = 1;
  56. IT0 = 1; //外部中断0由下降沿触发
  57. EX0 = 1; //外部中断0允许
  58. EA = 1;
  59. while(1) {;}
  60. }
  61. //---------------------------------------------------
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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