久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11314|回復: 3
打印 上一主題 下一主題
收起左側

頻率可調的方波發生器(protues仿真+單片機源碼)

[復制鏈接]
跳轉到指定樓層
樓主
方波發生器仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:


  1. #include<reg51.h>

  2. #define uchar unsigned char

  3. #define uint unsigned int

  4. float fosc=12000000; //系統時鐘頻率

  5. sbit KEY1=P1^0; //控制頻率百位;

  6. sbit KEY2=P1^1; //控制頻率十位;

  7. sbit KEY3=P1^2; //控制占空比十位;

  8. sbit KEY4=P1^3; //控制占空比個位;

  9. sbit OUTPUT=P2^0; //方波輸出端口;

  10. uchar zkb;

  11. uint freq;

  12. uchar TIMER0_L,TIMER0_H,TIMER1_L,TIMER1_H; //定

  13. /****************************

  14. 延時子程序

  15. ****************************/

  16. void delay(uchar n) //延時

  17. {

  18. uchar i;

  19. while(n--)

  20. {for(i=255;i>0;i--)

  21. {}

  22. }}

  23. /*******************

  24. 系統初始化

  25. *******************/

  26. void chushihua(void)

  27. {

  28. P1=0x0f;

  29. freq=50;

  30. zkb=50;

  31. TIMER0_L=0xe0;

  32. TIMER0_H=0xb1;

  33. TIMER1_L=0xf0;

  34. TIMER1_H=0xd8;

  35. TL0=0xe0; //初始頻率 50Hz 定時 20ms

  36. TH0=0xb1;

  37. TL1=0xf0; //初始占空比 50%定時 10ms

  38. TH1=0xd8;

  39. TMOD=0x11; //定時器 1 和定時器 0 工作在方式 1

  40. IT0=1; //選擇 INT0 為下降沿觸發方式

  41. EX0=1; //外部中斷 0 允許

  42. ET0=1; //定時器 1 和定時器 0 中斷允許

  43. ET1=1;

  44. EA=1; //系統中斷允許

  45. TR0=1; //定時器 1 和定時器 0 開始定時

  46. TR1=1;

  47. }

  48. /*********************

  49. 主函數
  50. *********************/

  51. void main(void)

  52. {

  53. chushihua(); //系統初始化

  54. while(1)

  55. { }

  56. }

  57. /************************

  58. 定時器中斷子程序

  59. ************************/

  60. void Timer0_freq() interrupt 1 //頻率定時器 0 中斷

  61. {

  62. TR1=1; //啟動定時器 1,占空比定時

  63. TL0=TIMER0_L;

  64. TH0=TIMER0_H;

  65. OUTPUT=1; //輸出高電平

  66. }

  67. void Timer1_zkb() interrupt 3 //占空比定時器 1 中斷

  68. {

  69. TR1=0; //定時器 1 停止

  70. TL1=TIMER1_L;

  71. TH1=TIMER1_H;

  72. OUTPUT=0; //輸出低電平

  73. }

  74. /***********************

  75. 鍵盤掃描子程序
  76. ***********************/

  77. void keyscan() interrupt 0 using 1 //外部中斷 0

  78. {float TF0,TZ1;

  79. EX0=0; //關中斷

  80. delay(10); //延時消抖

  81. if(P1!=0x0f) //判斷是否有鍵按下

  82. {

  83. if(KEY1==0) freq+=100; //按鍵為 1 號,頻率加 100

  84. if(KEY2==0) freq-=100; //按鍵為 2 號,頻率減 100

  85. if(freq>5000) freq=50; //頻率大于 5000Hz,重新賦值為 5



  86. if(KEY3==0) zkb+=10; //按鍵為 3 號,占空比加 10

  87. if(KEY4==0) zkb-=10; //按鍵為 4 號,占空比減 10

  88. if(zkb>100) zkb=1; //占空比大于 100,重新賦值為

  89. TF0=(65536-fosc/(12.0*freq));//頻率定時初值

  90. TZ1=(65536-(fosc*zkb)/(12.0*100*freq)); //占空比定時

  91. TIMER0_H=(uint)TF0/256;

  92. TIMER0_L=(uint)TF0%256;

  93. TIMER1_H=(uint)TZ1/256;

  94. TIMER1_L=(uint)TZ1%256;

  95. }

  96. P1=0x0f; //給鍵盤掃描口賦初值

  97. EX0=1; //開中斷

  98. TR0=1; //定時器 1 和定時器 0 開始定時

  99. TR1=1;}
復制代碼

所有資料51hei提供下載:
頻率可調方波發生器(protues仿真).zip (52.7 KB, 下載次數: 130)


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

使用道具 舉報

沙發
ID:1023527 發表于 2022-5-18 15:54 | 只看該作者
我這有三個問題能佛麻否煩你回答一下1.怎么樣轉化為ADPWM波?
回復

使用道具 舉報

板凳
ID:1023527 發表于 2022-5-18 15:56 | 只看該作者
2.4個按鍵如何共用一個中斷。3.請用程序解釋一下用的是延時還是定時。
回復

使用道具 舉報

地板
ID:540173 發表于 2022-5-20 17:34 | 只看該作者
能否實現編碼控制
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情久久久 | 精品一区二区三区四区五区 | 91美女在线观看 | 亚洲色图在线观看 | 欧美日韩高清一区二区三区 | 国产精品久久久久久久久久久久久 | 欧美成人a| 在线观看视频一区 | 美女逼网站 | 中文字幕国| 成人在线视频一区二区三区 | 羞羞在线视频 | 国产精品久久久久久久久久 | 精品九九九| 日日摸夜夜添夜夜添特色大片 | 国产一区二区 | 久久久久久久久91 | www.久久久久久久久久久久 | 成人影院免费视频 | 亚洲黄色国产 | 成人在线视频一区 | 欧美一区二区在线看 | 国产精品久久国产精品99 | 激情欧美日韩一区二区 | 亚洲精品资源 | 亚洲欧洲国产视频 | 超碰在线97国产 | 欧美日韩国产欧美 | 国产亚洲一区在线 | 日本超碰 | 国产原创视频 | 久久国产三级 | 欧美另类视频 | 日韩毛片在线免费观看 | 久久久国产一区 | 日韩性生活网 | 视频在线一区二区 | 欧美国产日韩在线 | 亚洲一区 中文字幕 | 久久精品欧美一区二区三区不卡 | 女人毛片a毛片久久人人 |