资源描述:
《智能仪器DAS实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告智能仪器DAS实验一.实验目的:学习、掌握编程方法,掌握智能仪器技术中的上位机控制下位机技术,掌握使用DA输出各种波形的技术,熟练使用KEIL、PROTEUS软件二.实验内容:编写初始化程序,1)编程设置单片机波特率2400,设置好T1定时器工作模式和计数初始值,启动定时器,编程设置串口控制器SCON,PCON,使工作在方式1;编写控制程序:串口命令控制波形输出,包括以下内容:A.串口中断接收命令控制波形输出,包括正弦波和直流信号在主程序循环查询串口接收寄存器,若接收S字符,表示产生正弦波
2、,采用查表法输出正弦波;若接收到D字符,则产生一个直流信号。若接收T字符,输出0电平。B.串口中断接收命令控制波形幅度若串口接收字符为V,表示调整幅度,此时可以输入数字,设定0~9个档次的幅度;比如在直流状态,0表示0v,9表示4.5V。C.串口中断接收命令控制波形频率若串口接收字符为F,表示调整频率,此时可以输入数字,设定0~9个档次的周期,从1000微秒,每个数值步进对应500微秒,最大周期为5000微秒。三.实验原理:连线图程序框图:程序清单:#includesbitDAC
3、S=P3^6;sbitDASTART=P3^7;charwave=0;unsignedcharvalue=0;unsignedcharN=0;unsignedcharperiod=0;bitv_change=0;bitf_change=0;bitup=1;consttable[]={0xFF,0xFD,0xF8,0xF1,0xE6,0xD9,0xCA,0xB9,0xA6,0x93,0x7F,0x6B,0x58,0x45,0x34,0x25,0x18,0x0D,0x06,0x01,0x00};con
4、stP_table_h[]={((65536-500)/256),((65536-1000)/256),((65536-1500)/256),((65536-2000)/256),((65536-2500)/256),((65536-3000)/256),((65536-3500)/256),((65536-4000)/256),((65536-4500)/256),((65536-5000)/256)};constP_table_l[]={((65536-500)%256),((65536-10
5、00)%256),((65536-1500)%256),((65536-2000)%256),((65536-2500)%256),((65536-3000)%256),((65536-3500)%256),((65536-4000)%256),((65536-4500)%256),((65536-5000)%256)};voidmain(){chari;PCON=0X80;//2400//SMOD=1;SCON=0X50;//串口模式1,可接收//SM0SM1SM2RENTB8RB8TIRI//
6、01010000TMOD=0x21;//?定时器//GATEC/TM1MOGATEC/TM1MO//00100001TH1=256-12000000/12/16/2400;TL1=256-12000000/12/16/2400;TH0=(65536-1000)/256;TL0=(65536-1000)%256;//EX0=1;//??????0??//IT0=1;//??????ET0=1;//?????0????ES=1;EA=1;TR1=1;//?????1DACS=0;while(1){if
7、(wave==1){TR0=1;P0=table[N]/10*(value+1);DASTART=0;DASTART=1;}if(wave==2){P0=value*22;DASTART=0;DASTART=1;for(i=100;i>0;i--);}if(wave==3){TR0=1;P0=N*(value+1);DASTART=0;DASTART=1;}}}voidisr_ser()interrupt4using3{if(RI){charc;c=SBUF;if(c=='D'
8、c=='d'){w
9、ave=2;TR0=0;}if(c=='s'
10、c=='S'){wave=1;N=0;up=1;TR0=1;}if(c=='t'
11、c=='T'){wave=0;value=0;TR0=0;}RI=0;}if(TI)TI=0;}voidisr_t0()interrupt1using1{EA=0;TH0=P_table_h[period];TL0=P_table_l[period];if(up==1){if(N<20)N++;elseup=0;}else{if(N>0)N--;elseu