接口技术课程设计---基于rs232串口的数据采集系统设计与实现内容摘要:

} //波特率设置初始化 // void rs232_init() { TMOD=0x20。 TL1=0xFD。 //9600 比特 /秒 for TH1=0xFD。 PCON=0x00。 TR1=1。 SCON=0x50。 ES=1。 //允许串行口中断 EA=1。 //开总中断 } //发送字符 // void send(uchar i) { SBUF=i。 while(!TI)。 TI=0。 } void rs232_isr() interrupt 4 using 1 { if(RI) { rbuf = SBUF。 RI = 0。 } if(rbuf == 0xF0) start=0。 if(rbuf == 0x80) start=1。 /*===========================================================*/ // 源代码 include include include define uchar unsigned char define uint unsigned int sfr P1M0=0x91。 sfr P1M1 =0x92。 sfr ADC_CONTR =0XC5。 sfr AUXR = 0x8e。 sfr ADC_DATA =0xC6。 sfr ADC_LOW =0xBE。 uchar rbuf。 uchar start。 uint V。 uint Vref。 delay(uchar count) { uchar m,n。 for(m=0。 m=count。 m++) for(n=0。 n240。 n++)。 } /*ADC 初始化 */ void adc_init() { P1M0=0xff。 P1M1=0x00。 ADC_DATA = 0。 //数据清 零 ADC_LOW = 0。 ADC_CONTR = 0xe0。 //开 ADC 电源 ,采集速度选择最高 delay(200)。 } void get_adc(uchar ch) { ADC_CONTR = (0xe8 | ch)。 // 开启转换 while(!(ADC_CONTRamp。 0x10))。 // 等待转换完成 ADC_CONTRamp。 =0xe7。 //清除 start,flag 标志 } void main() { rs232_init()。 adc_init()。 while(1) { get_adc(0x00)。 //通道 0 参考 Vref = (uint)((ADC_DATA2)|ADC_LOW)。 get_adc(0x01)。 V = (uint)((ADC_DATA2)|ADC_LOW)。 send(39。 A39。 )。 //send(39。 A39。 )。 send(Vref8)。 send(Vref)。 send(V8)。 send(V)。 send(39。 z39。 )。 delay(250)。 delay(250)。 delay(250)。 delay(250)。 delay(250)。 } } 附录二: VC程序代码 定义的成员变量: public: int X。 CDC* pDC1。 int m_BaundRate。 int count。 CWnd* pWndpicture。 void pictureinit(void)。 CDC* pDC。 int m_port。 CWangfei311Dlg(CWnd* pParent = NULL)。 // standard constructor void InitComm()。 添加的成员函数: void CWangfei311Dlg::InitComm() { (m_port)。 (1)。 if(m_BaundRate == 1200) (1200。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。