单片机仿真与实战项目化教程(C语言版) 教学课件 作者 汤平徐欣 主编 项目7设计制作信号发生器.pptVIP

单片机仿真与实战项目化教程(C语言版) 教学课件 作者 汤平徐欣 主编 项目7设计制作信号发生器.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
尚辅网 尚辅网 尚辅网 7.4 项目实施 void delay() // T1定时器定时1ms { TH1=0xfc; TL1=0x18; //定时器初值设定 TR1=1; //启动定时器 while(!TF1); //查询是否溢出 TF1=0; //将溢出标志位清零 } void juchi() { uchar i; for(i=0;i255;i++) //形成锯齿波,最大值为255 { DAC0832=i; // D/A转换输出 delay(); // 延时 } } 尚辅网 7.4 项目实施 void sanjiao( ) { uchar i; for(i=0;i255;i++) { //形成三角波,i增加到最大值为255 DAC0832=i; // D/A转换增量输出 delay(); // 延时 } for(i=255;i0;i--) { //形成三角波,i减小至最小值0 DAC0832=i; // D/A转换减量输出 delay(); // 延时 } } void zhengxian( ) { uchar i; for(i=0;i255;i++) { //形成正弦波,i增加到最大值为255 DAC0832=sin[i]; // D/A转换增量输出 delay(); // 延时 } } 尚辅网 7.4 项目实施 3. 仿真调试 仿真波形使用数字示波器进行观察。在Protues工具条中点到virtual instrument mode按钮,然后选择Oscilloscope一项,添加至Vout端。 仿真运行后,查看波形可在Debug菜单中找到Digital Oscilloscope一项。 锯齿波 三角波 正弦波 尚辅网 7.4 项目实施 4. 发挥功能 (1)利用单片机的定时器产生方波信号 方波信号可以利用单片机的定时器编程输出,并且可以通过定时的不同获得不同频率的方波,不需再接外围电路,如图所示。用单片机的P2.0口输出500us的方波,只需P2.0每250us取反一次即可。询方式。 尚辅网 7.4 项目实施 当晶振频率为12MHz,机器周期1us,定时器/计数器T0工作在方式2,可以设初值X=256-250=6;可以采用查询方式处理,也可采用中断处理方式,本程序采用查询方式。 #include reg51.h sbit P2_0=P2^0; //定义位变量 void main() {TMOD=0x02; // 设置T0,工作方式2 TH0=6; TL0=6; // 设置初值 TR0=1; // 启动T0 while(1) { if(TF0==1) //查询是否溢出 {TF0=0; //溢出标志清零 P2_0=!P2_0;} //P2.0取反,输出方波 } } 尚辅网 7.4 项目实施 仿真运行后,可以得到波形 思考:程序如何修改可改变方波的频率? 尚辅网 (2)利用串行DA芯片TLC5615产生锯齿波。 7.4 项目实施 串行DA芯片TLC5615与DAC0832相比较而言,最大的优点是节约了I/O端口数量,由于TLC5615输出量为电压量,所以外围电路也相对简单些,硬件电路如图所示。 尚辅网 7.4 项目实施 #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char sbit sclk=P3^0; //串行时钟输入端 sbit cs =P3^1; //片选信号 sbit din =P3^2; //串行数据输入端 void delay( ) // 延时函数 { uchar i; for(i=10;i0;i--); } 程序代码: 尚辅网 7.4 项目实施 void DA(uint dat) // DA转换函数 { uint temp; uchar i; temp=dat4 ; // 取10位有效数据 cs=1; din=1; sclk=0; cs=0; /*CS为低电平时,sclk上升沿将din数据移入16位移位寄存器*/ for(i=0;i12;i++) //有2位为填充位 { temp=temp1;

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档