找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机的三角波信号发生器

[复制链接]
跳转到指定楼层
楼主
ID:857562 发表于 2020-12-9 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #define DAC0832 XBYTE[0x7fff]
  4. sbit a=P3^0;
  5. sbit b=P3^1;
  6. sbit c=P3^2;
  7. sbit e=P3^3;

  8. unsigned char code juxing[64]={255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  9.                                                                                                 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  10.                                                                                                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  11.                                                                                         };                                               
  12. unsigned char code sanjiao[64]={0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
  13.                                                                                                 248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0,};


  14. void delay(unsigned int x)         
  15. {         
  16.         unsigned char i;
  17.         while(x--)
  18.         for(i=0;i<=140;i++);      
  19. }
  20. void square(void)               
  21. {  
  22.         unsigned char i;
  23.         for(i=0;i<64;i++)                           
  24.         DAC0832=juxing[i];

  25. }
  26. void sanjiaobo()         
  27. {   
  28.         unsigned char i;
  29.         for(i=0;i<64;i++)
  30.         {   
  31.         DAC0832=sanjiao[i];
  32.         }

  33. }
  34. void juchibo()
  35. {
  36.         int i;
  37.         unsigned char code sin[64]={135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,
  38.                                                                                                                         254,253,251,247,243,237,230,222,213,204,193,182,170,158,146,133,
  39.                                                                                                                         121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,
  40.                                                                                                                         36,45,55,66,78,90,102,114,128
  41.                                     };
  42.         for(i=0;i<64;i++)
  43.         {
  44.                 DAC0832=sin[i];
  45.         }

  46. }

  47. void main(void)
  48. {
  49.         e=0;  
  50.         while(1)
  51.         {
  52.                 switch(P1)
  53.                 {  
  54.                         case 0xfe:
  55.                                                                 delay(10);
  56.                                                                 while(P1==0XFF)
  57.                                                                 {square();}break;
  58.                         case 0xfd:
  59.                                         delay(10);
  60.                                                                 while(P1==0XFF)  
  61.                                                                 {sanjiaobo();} break;
  62.                         case 0xfb:
  63.                                         delay(10);
  64.                                                                 while(P1==0XFF)
  65.                                                           {juchibo();}break;
  66.                         default:break;   
  67.                 }
  68.         }
  69. }
复制代码
上个月课上做的实验,想来分享一下

SY5.zip

26.06 KB, 下载次数: 5, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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