找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3857|回復(fù): 4
收起左側(cè)

求一個(gè)基于PROTEUS仿真的51單片機(jī)信號(hào)發(fā)生器,要求可以調(diào)三角波,方波和正弦波!

[復(fù)制鏈接]
ID:99374 發(fā)表于 2015-12-11 23:11 | 顯示全部樓層 |閱讀模式
單片機(jī)需要交課程設(shè)計(jì),急求一個(gè)基于PROTEUS仿真的51單片機(jī)信號(hào)發(fā)生器,要求可以調(diào)三角波,方波和正弦波,并且能調(diào)整頻率和周期,希望各路大神幫幫忙,萬分感謝!
回復(fù)

使用道具 舉報(bào)

ID:76227 發(fā)表于 2015-12-12 11:35 | 顯示全部樓層
論壇里面好像有   以前好像看到過   你搜索一下
回復(fù)

使用道具 舉報(bào)

ID:76227 發(fā)表于 2015-12-12 11:36 | 顯示全部樓層
論壇里面好像有   以前好像看到過   你搜索一下
回復(fù)

使用道具 舉報(bào)

ID:259295 發(fā)表于 2017-12-10 16:27 | 顯示全部樓層
論壇里面都有的,仔細(xì)找找
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2017-12-10 20:48 | 顯示全部樓層
51單片機(jī)做信號(hào)發(fā)生器實(shí)例編程
http://www.torrancerestoration.com/mcu/1690.html

  1. //用51單片機(jī)做信號(hào)發(fā)生器,同時(shí)輸出四種頻率的方波。
  2. //要求:晶振為12MHz,用T0做定時(shí)器,在P1的低四位輸出四種頻率的方波:
  3. // P1.3 = 1.25kHz、P1.2 = 2.5kHz、P1.1 = 5kHz、P1.0 = 10kHz
  4. //另外,上述四個(gè)頻率要求用一個(gè)四選一數(shù)據(jù)選擇器,再選出其中的一個(gè)輸出出去。
  5. //P1.6、P1.7的輸出用來控制四選一數(shù)據(jù)選擇器的選擇位,它們由P3.0按鍵控制。
  6. //===================================================
  7. //現(xiàn)在增加了PROTEUS仿真圖片發(fā)上博客。
  8. //題目要求在相鄰四條接口線輸出的四種頻率,恰有二倍的關(guān)系,這就可以利用一個(gè)定時(shí)中斷來完成。
  9. //題目還要求使用一個(gè)數(shù)據(jù)選擇器,通過按鍵選擇一個(gè)頻率來輸出。
  10. //利用PROTEUS仿真的截圖如下所示。
  11. //圖中在輸出端接上了一個(gè)頻率計(jì)和一個(gè)揚(yáng)聲器,進(jìn)行頻率檢測(cè)。
  12. //當(dāng)按下按鍵時(shí),輸出頻率可以輪番轉(zhuǎn)換。
  13. //圖中把四種頻率的檢測(cè)結(jié)果都截圖顯示,可以看出,輸出的頻率十分理想。
  14. //PC的揚(yáng)聲器也能聽到聲音,10kHz的頻率,比較刺耳。
  15. //以下程序已經(jīng)仿真成功。
  16. //---------------------------------------------------
  17. #include <reg52.h>
  18. #define uchar unsigned char
  19. #define TL_0SET (256 - 50) //定時(shí)時(shí)間選為50us
  20. //輸出的方波周期將為100us, 10kHz
  21. sbit P3_2 = P3^2; //用于按鍵
  22. sbit P1_0 = P1^0; //四個(gè)頻率輸出
  23. sbit P1_1 = P1^1; //
  24. sbit P1_2 = P1^2; //
  25. sbit P1_3 = P1^3; //
  26. sbit P1_6 = P1^6; //兩個(gè)選擇控制輸出
  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作開關(guān),控制四選一數(shù)據(jù)選擇器
  34. {
  35. while(P3_2 == 0) {;} //等待按鍵釋放
  36. x++;
  37. if(x == 4) x = 0; //改變當(dāng)前輸出的選擇
  38. P1_7 = p16;
  39. P1_6 = p17;
  40. }
  41. //---------------------------------------------------
  42. void time0() interrupt 1 //T0的中斷服務(wù)程序
  43. { //T0工作在方式2,自動(dòng)裝入初始值
  44. i++;
  45. j = i % 16; //。榈牡退奈
  46. j += x << 6; //組合上數(shù)據(jù)選擇器的控制信號(hào)
  47. P1 = j; //輸出四種頻率的方波以及控制信號(hào)
  48. }
  49. //---------------------------------------------------
  50. void main()
  51. {
  52. TMOD = 0x02; //T0定時(shí)方式2
  53. TH0 = TL_0SET; //自裝入式的定時(shí)初始值
  54. TR0 = 1; //啟動(dòng)T0
  55. ET0 = 1;
  56. IT0 = 1; //外部中斷0由下降沿觸發(fā)
  57. EX0 = 1; //外部中斷0允許
  58. EA = 1;
  59. while(1) {;}
  60. }
  61. //---------------------------------------------------
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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