still1945

    1. ienglgge 发表于 2015-5-20 22:12 ADC输入端未连接任何信号源 ,你不连接信号源,输入端也是有电压值得,只要采样,计算,发送,电脑就可以收到数据啊。
      关键是AD输入端接上信号源之后没什么变化   
    2. 悬赏msp430串口通信 电脑端接收高手 12/3677 微控制器 MCU 2015-05-20
      eonce 发表于 2015-5-20 15:36 用手机端我懂弄
      跪求大神指教  活命就行  
    3. 悬赏msp430串口通信 电脑端接收高手 12/3677 微控制器 MCU 2015-05-20
      月影荒城 发表于 2015-5-20 15:31 我有一个例程,用adc采样,什么都不接,却显示一个值应该是工作电压,3.3左右。
      我也是什么都没接  直接发送数据了
    4. #includeunsigned int k;char str[]="00.0";long temp;unsigned char tmp[3];long IntDeg;void ADC10_ISR(void);void ADC10_init(void);void Init_uart0(void); void Uart0Sends(char *s){  while(*s!='\0')  //查找字符。  {    UCA0TXBUF=*s;    while((IFG2&UCA0TXIFG)==0); //查询发送是否结束,寄存器为空置位,满为复位??    IFG2&=~UCA0TXIFG; //清除发送一标志位,多余的语句,发送完毕    s++;  }} void main(){        WDTCTL=WDTPW+WDTHOLD;        ADC10_init();          BCSCTL1 = CALBC1_1MHZ;          DCOCTL  = CALDCO_1MHZ;                  P1DIR|=BIT0;        Init_uart0();         _EINT();    while(1)    {      ADC10CTL0 |= ENC + ADC10SC;            // Sampling and conversion start   采样开始, //     _bis_SR_register(CPUOFF + GIE);                // LPM0 with interrupts enabled      __delay_cycles(1000);      //-----ADC转换完成中断唤醒CPU后才执行以下代码-----       temp = ADC10MEM;      //读取AD采样值//      IntDeg= temp*4225/1024 - 2777;//转换为摄氏度,并10倍处理      IntDeg=((temp*33)/1023);//if(IntDeg>=200)//                       P1OUT |= BIT0;//                     else//                       P1OUT &= ~BIT0;      str[0]=IntDeg/100+0X30;     str[1]=IntDeg%100/10+0X30;     str[3]=IntDeg%100%10+0X30; //  IntDeg=-123;                                                                        //由于难以获得负温,直接给负值以测试LCD显示    } } /****************************************************************************************************** * 名       称:ADC10_init(void) * 功       能:初始化ADC10采集内部温度传感器,单次手动采样 * 入口参数:无 * 出口参数:无 * 说       明:直接从CCS的Example中移植过来 * 范       例:无 ******************************************************************************************************/void ADC10_init(void){        P1DIR&=~BIT4;        ADC10CTL0 &= ~ENC;  //  关闭AD转换器        ADC10CTL0 = ADC10IE + ADC10ON + REFON + ADC10SHT_3 + SREF_1;//1    允许ADC10中断   1    ADC10开启 ,打开基准源    64个ADC10CLK周期    ADC10CTL1 = CONSEQ_0 + ADC10SSEL_0 + ADC10DIV_3 + SHS_0 + INCH_4;//单通道单次采样模式     ADC10OSC  8分频     ADC10SC位      __delay_cycles(30000);    ADC10CTL0 |= ENC;   //开启AD转换器}/****************************************************************************************************** * 名       称:ADC10_ISR_HOOK * 功       能:ADC转换完成后唤醒CPU * 入口参数:无 * 出口参数:无 * 说       明:直接从CCS的Example中移植过来 * 范       例:无 ******************************************************************************************************/#pragma vector=ADC10_VECTOR__interrupt void ADC10_ISR_HOOK(void){         Uart0Sends(str);        _bic_SR_register_on_exit(LPM4_bits);}/********************************************************************************************************** * 串口初始化********************************************************************************************************* */void Init_uart0(){  UCA0CTL1|=UCSWRST;  P1SEL|=BIT1+BIT2; //将P1.1 P1.2设为第二功能  P1SEL2|=BIT1+BIT2;//系统组合  P1DIR  |= BIT2;           //P1.2  UART_TX  P1DIR  &=~BIT1;           //P1.2  UART_RX  UCA0CTL0&=~UC7BIT;//字符长度为8  UCA0CTL1|=UCSSEL_2;//选择系统时钟  UCA0BR0=0x68;  //波特率为9600  UCA0BR1=0;  UCA0MCTL=0X40;//UCA0MCTL=UCBRS0;  UCA0CTL1&=~UCSWRST;   IE2|=UCA0RXIE;//开接收使能 } #pragma vector=USCIAB0RX_VECTOR__interrupt void usart0_rx(void){  while((IFG2&UCA0RXIFG )==0);//接收一位然后给发送缓存器 再中断再接受 再发送的过程  IFG2&=~UCA0RXIFG ;   Uart0Sends(str);   UCA0TXBUF = UCA0RXBUF;}
    5. 悬赏msp430串口通信 电脑端接收高手 12/3677 微控制器 MCU 2015-05-20
      月影荒城 发表于 2015-5-20 12:45 我也在搞这个,测电压然后传到pc上,不解中。
      你都有哪些不解  说出来 我看看
    6. 悬赏msp430串口通信 电脑端接收高手 12/3677 微控制器 MCU 2015-05-20
      tanzhiying 发表于 2015-5-20 10:18 这是我刚刚用msp430f122做的串口通信的程序,应该差不多的。你可以找相应的例程,注意你的时钟和波特率的计算,串口线接好就行了。 #include   void USART_Send(unsigned int pData); void main(void) {   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT   unsigned int i;   unsigned int sdata=0x34;//要发到电脑的数据   BCSCTL1 &= ~XT2OFF; //开高速晶振   BCSCTL1 |= XTS; // ACLK = LFXT1 = HF模式 do { IFG1 &= ~OFIFG; // 清除振荡器失效标志 for(i = 0Xff;i > 0;i--); // 稳定时间 } while((IFG1 & OFIFG) != 0); // 如果振荡器失效标志存在 BCSCTL2 |= SELM_2; //?MCLK主时钟选XT2为时钟源.XT2输入不分频. BCSCTL2 |= SELS; //SMCLK选XT2为时钟源.(参考)   P3SEL |= 0x30;                            // P3.6,7 = USART1 TXD/RXD   ME2 |= UTXE0 + URXE0;                     // Enable USART1 TXD/RXD   UCTL0 |= CHAR;                            // 8-bit character   UTCTL0 |= SSEL1;                          // UCLK = SMCLK   U0BR0 = 0x41;                             // 8M/9600 -   U0BR1 = 0x03;                             //   UMCTL0 = 0x12;                            // Modulation /*   U0BR0 = 0x15;                             // 8M/600 - 3.41   U0BR1 = 0x34;                             //   UMCTL0 = 0x12;                            // Modulation */   UCTL0 &= ~SWRST;                          // Initialize USART state machine   IE2 |= URXIE0;                            // Enable USART1 RX interrupt   _EINT(); // 不要忘了开中断   USART_Send(sdata);   } //单片机给PC发数据 void USART_Send(unsigned int pData) { while ((IFG2 & UTXIFG0) == 0); // 判断:发送是否完成 TXBUF0 = pData; // 装入发送寄存器 } //PC给单片机发数据 #pragma vector=USART0RX_VECTOR __interrupt void usart1_rx (void) {   while (!(IFG2 & UTXIFG0));                // USART1 TX buffer ready?   TXBUF0 = RXBUF0;                          // RXBUF1 to TXBUF1 }
      多谢大侠   UART串口通信的 跟adc的例程段子我也找了不少   可是最后试验下来总是有问题   
    7. 悬赏msp430串口通信 电脑端接收高手 12/3677 微控制器 MCU 2015-05-20
      littleshrimp 发表于 2015-5-20 10:20 看你的问题,不是很明白,你是想解决电脑端的问题,还是单片机的问题?
      电脑端的使用的是labview采集并显示    这个已经搞定了  现在就是下位机有问题  
    8. 楼主   请问你的上位机是用什么做的
    9. 你好楼主 我想知道那个采样结果是如何换算成电压值的  也就是说                         b=b/4;//取4次采样的平均                         v=b*25;                         v=(v/1023)/10;//转化为电压值 这个公式是怎么得出的  谢谢了

最近访客

< 1/1 >

统计信息

已有3人来访过

  • 芯积分:--
  • 好友:1
  • 主题:2
  • 回复:9

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言