如何利用STC89C52单片机做一个多种信号发生器.doc

如何利用STC89C52单片机做一个多种信号发生器.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何利用STC89C52单片机做一个多种信号发生器 下面先贴上 仿真的电路图(仿真的软件是Protuse,上传一个大点的图,方便大家看的清楚点): 原件清单:STC89C52 单片机X1、 DAC0832 转换器X1、12M晶振X1、 电容22pfX2、10uf的电容X1、1nf陶瓷电容X1、独立按键X4、10千欧 排阻X1、10KΩ 电阻X5、LM358 单电源运放X1。仿真就需要这些原件,具体的 硬件设计大家定好了在制作~ 下面上传一下C程序吧~(使用的IDE环境是 Keil 4,语言是 C语言) Source文件(.c文件): 1\main.c文件: 1 #include “reg52.h” 2 #include “init.h” 3 #include “single.h” 4 #include “delay.h” 5 #include “Key.h” 6 int main(void) 7 { 8 unsigned char Model=0;//0-方波 1-三角波 2-锯齿波 3-正弦波 9 unsigned int Count=0;//计数器 10 unsigned int Squ_Per=256; 11 unsigned int Tri_Per=256; 12 unsigned int Saw_Per=256; 13 unsigned int Sin_Per=256; 14 init(); 15 while(1) 16 { 17 while(Model==0) 18 { 19 Square_wave(Squ_Per,Count); 20 Count+=4; 21 Squ_Per=Key_Plus(Squ_Per); 22 Squ_Per=Key_ Subc(Squ_Per); 23 Model=Key_Model(Model,Squ_Per,Count);//每次退出当前while时记得复原Period和Count的数据 24 } 25 while(Model==1) 26 { 27 Triangle_wave(Tri_Per,Count); 28 Count+=4; 29 Tri_Per=Key_Plus(Tri_Per); 30 Tri_Per=Key_Subc(Tri_Per); 31 Model=Key_Model(Model,Tri_Per,Count); 32 } 33 while(Model==2) 34 { 35 Sawtooth_wave(Saw_Per,Count); 36 Count+=4; 37 Saw_Per=Key_Plus(Saw_Per); 38 Saw_Per=Key_Subc(Saw_Per); 39 Model=Key_Model(Model,Saw_Per,Count); 40 } 41 while(Model==3) 42 { 43 Sin_wave(Sin_Per,Count); 44 Count+=4; 45 Sin_Per=Key_Plus(Sin_Per); 46 Sin_Per=Key_Subc(Sin_Per); 47 Model=Key_Model(Model,Sin_Per,Count); 48 } 49 } 50 return 0; 51 } 2\init.c文件: 1 #include “reg52.h” 2 sbit CS_DAC=P1^5;//DAC0832的片选 端口 3 sbit WR_DAC=P1^6;//DAC0832的数据写入端口 4 ex tern void init(void) 5 { 6 P0=0xff; 7 P1=0xff; 8 P2=0xff; 9 P3=0xff; 10 CS_DAC=0;//一直片选中DAC0832,低电平有效啊~ 11 WR_DAC=0;//一直写入数据到DAC0832 12 } 3\single.c文件 1 #include “reg52.h” 2 #include “single.h” 3 #include “delay.h” 4 #define DATA P0 5 void Square_wave(unsigned int Per,unsigned int *Count) 6 { 7 if(*Count》=Per) *Count=0; 8 if(*Count 9 { 10 DATA=0x00; 11 } 12 else 13 { 14 DATA=0xFF; 15 } 16 } 17 void Triangle_wave(unsigned int Per,unsigned int *Count) 18 { 19 if(*Count》=Per) *Cou

文档评论(0)

wu9872 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档