• 932.00 KB
  • 28页

基于单片机的16位数模转换波形发生器项目报告

  • 28页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'目录一、概述21.1课题研究的内容和意义21.2达到的技术指标2二、系统总体设计42.1系统设计方案论证(几种方案选一)42.2系统总体框图及简要说明实现了的主要功能4三、硬件电路设计63.1元器件的选择63.2单片机控制模块133.3温度数据采集模块143.4显示模块143.5温度数据无线传输电路15四、软件设计174.1主程序流程图174.2其他功能流程图19五、系统调试235.1测试环境和方法235.2测试结果235.3出现问题及解决方法23六、展望26一、概述1.1课题研究的内容和意义本课题采用51单片机对两个DAC0832进行控制来实现16位DA输出。因为高精度DAC转换芯片价格比较贵,而且有时不易购买,通过对2个DAC0832进行控制,可以构成高精度的DAC,既降低了成本又解决了实际需要。28 1.2技术指标设计并制作一个基于单片机的16位DA输出,能够输出方波、锯齿波、三角波、梯形波、正弦波这5种波形,在输出波形的同时能够实现波形的调频和调幅,波形在示波器上显示。本设计可以通过按键控制实现波形调频,通过改变DA的基准电压输入来实现调幅。二.系统的总体设计2.1系统设计方案论证第一种方案:直接采用16位DA转换芯片,让单片机对16位DA芯片进行控制,从而输出波形。第二种方案:采用2个8位DA转换芯片DAC0832,两个DA芯片采用双缓冲数据输入方式,让单片机先后控制这两个DA芯片的数据输入,最后再一起把数据经DA转换器转换输出,从而输出波形。最终采用第二种方案。2.2系统总体框图及简要说明实现了的主要功能。28 单片机示波器两个DAC0832按键实现了波形输出和波形的调频调幅。三、硬件电路设计3.1元器件的选择:硬件电路用了STC89C51RC单片机,8位DA转换芯片DAC0832,运放LM358,还有MAX232.3.2单片机控制模块28 3.3DA输出模块:28 软件设计1.主程序流程图:开始调用显示波形子程序调用独立键盘扫描子程序单片机端口初始化2.子程序独立按键检测及波形显示程序流程图28 开始判断键1是否被按下,是则置标志位a++;a>5置0是判断标志位a是否等于0否检测键2是否按下波形调频延时函数时间标志位加大否是否是否波形调频延时函数时间标志位减小检测键3是否按下是否结束28 产生梯形波产生正弦波产生三角波产生方波产生锯齿波结束判断标志位a=5?判断标志位a=4?判断标志位a=3?判断标志位a=2?判断标志位a=1?开始是否是否是否是否是否28 总程序:#include#include#include#defineucharunsignedchar#defineuintunsignedintsbitda1wr1=P1^0;sbitda1wr2=P1^1;sbitda2wr1=P1^2;sbitda2wr2=P1^1;sbitile=P1^3;sbitcs=P1^2;sbitkey1=P3^4;sbitkey2=P3^5;sbitkey3=P3^6;sbitkey4=P3^7;uinti=0;uintih=0;28 uintil=0;//ucharnumdis=0;uchara=0;uchard=0;ucharc=10;uchark;ucharnum=3;ucharcodetab[256]={0x80,0x82,0x85,0x88,0x8b,0x8e,0x91,0x94,0x97,0x9a,0x9d,0xa0,0xa3,0xa6,0xa9,0xac,0xaf,0xb2,0xb6,0xb9,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,28 0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,28 0x76,0x79,0x7c,0x80};codeunsignedchartable[2]={0,255};voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}/*voiddelay(){uchari;for(i=0;i<255;i++);}*//*voiddelay1(intx)//延时函数{TH0=(65536-x)/256;TL0=(65536-x)%256;TR0=1;while(!flag);flag=0;28 }*/voidkeyscan(){if(key1==0){delayms(10);if(key1==0){a=a+1;while(!key1);if(a==6)a=1;}}if(a!=0){if(key2==0){delayms(10);if(key2==0){while(!key2);28 c++;num=num+1;if(num>=10)num=1;if(c>=20)c=5;}}if(key3==0){delayms(10);if(key3==0){while(!key3);c--;num--;if(num<=0)num=10;if(c<3)c=20;}}}}voiddisplay(uchara)28 {if(a==1)//锯齿波{i=i+5;ih=i/256;il=i%256;P0=il;da1wr1=0;da1wr1=1;P0=ih;da2wr1=0;da2wr1=1;da1wr2=0;da1wr2=1;for(k=0;k