EDA365电子工程师网
标题:
[代码] 单片机MSP430G2553 AD采样电压后经串口发送至PC
[打印本页]
作者:
85486952
时间:
2016-6-29 10:49
标题:
[代码] 单片机MSP430G2553 AD采样电压后经串口发送至PC
本程序是单片机MSP430G2553
3 q; j Q# V2 m8 F! z+ u# w
P1.2----------------------------UCA0TXD 串口发送端
- U* w" n1 m$ g8 K1 I. m
P1.1----------------------------UCA0RXD 串口接受端
2 A5 L& F" A; f' g6 m! ?
P1.0----------------------------红灯指示
- y+ [% S! J: {' t
P1.6----------------------------绿灯指示
$ a7 a6 k( T+ F' d
P1.5----------------------------模拟电压输入
5 R- M/ F7 W* V3 o9 N4 G5 F
利用主辅时钟为1MHZ,串口波特率9600,
) }6 w, B8 J; S, h, _
波特率:1000000/9600=104
& }2 }. c. D4 N4 n* r5 \# _
UCA0BR0 = 104; // 1MHz 9600
+ v0 |4 ^; \7 |6 e8 m9 y% {6 d
UCA0BR1 = 0; // 1MHz 9600
3 Z6 @5 b: b+ d& x
! X4 s: E, R; _: C. ?4 t8 t
现象:
# g+ ?( y4 z7 B- W0 H6 a$ t1 v0 K
功能(1)看到 P1.5口输入不同的电压经AD采样后发送
1 c6 S5 M. ?. O9 ~1 y j
功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。
& c1 v$ K6 _) _! c5 A
******************************************************************************/
3 B0 e* L' Q* E) R/ W6 e
#include <msp430g2553.h>
9 `8 k- R3 {- H6 t) I3 d0 Y
float adc_voltage;
$ S9 Y7 ]. Y6 Q3 J3 o
unsigned int k;
' {1 A. T' m! M
void sys_clk_config(void)
0 M. S s9 |; T3 Z0 ~2 f
{
2 Q0 m' c) r6 @/ @; z" {* R
//ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ
( g P, q4 T, k9 c
DCOCTL = 0;
7 J8 U' ~% k& p) P
BCSCTL1 = CALBC1_1MHZ;
& Z T$ t* H4 C A) f) k r1 N
DCOCTL = CALDCO_1MHZ;
1 a9 Y- H9 A0 o$ {1 O/ Z6 w! k
}
: ?5 o+ o6 V' \' C
void uart_gpio_init(void)
/ e7 o9 J) \& W* g# p% s m/ n
{
( x( J, I V% i5 x" z3 F2 g' H
//P1SEL |= BIT1 + BIT2;
. ^6 X" t, K& b# I/ m" b+ h
//P1SEL2 |= BIT1 + BIT2;
8 _' p1 ]- R$ G5 N: Z
//P1DIR |= BIT2;
; m2 K5 y) J, T7 R* b8 U+ v- C* x
P1DIR = 0xFF; // All P1.x outputs
: @5 w* n$ j3 m, ~( z( V7 M$ O7 |
P1OUT = 0; // All P1.x reset
+ e5 E+ O W1 B" E' s
P1SEL |= BIT1 + BIT2 + BIT4; // P1.1 = RXD, P1.2=TXD
2 I+ i5 Q1 z. l: s# Z- q
P1SEL2 |= BIT1 + BIT2; // P1.4 = SMCLK, others GPIO
3 t3 r. p* z; Q. w
P2DIR = 0xFF; // All P2.x outputs
b+ K! T( f) R6 V" S
}
- m0 C9 p- E* F# y
void led_gpio_init(void)
) x: F- E. b3 Z! _; j
{
6 R( H. E/ i4 V2 [3 \: C
}
" O( p2 J2 Q- W8 B
void ad_gpio_init(void)
6 D7 N' |- y' {/ m7 f& y
{
: K2 h+ [% x# H9 A3 s/ `& U, G
}
; b/ p! w6 ^5 _' k+ F
void uart_config(void)
, O; d& q8 F# E
{
/ X1 }2 ^" T1 p" p
UCA0CTL1 |= UCSSEL_2;
7 z( i' c! ]# D5 t5 B
' x3 x- ?8 X& @! B2 A: {6 ~
UCA0BR0 = 104; // 1MHz 9600
* [8 x [! r( h6 R1 |/ q, M
UCA0BR1 = 0; // 1MHz 9600
+ i' R( V8 ]6 h" x; X
UCA0MCTL = UCBRS2 + UCBRS0;
a% ]) _2 W: w" o
UCA0CTL1 &= ~UCSWRST;
: n! c; h, E8 g" ~
IE2 |= UCA0RXIE;
7 B, c# H; i( {% t3 ?+ x3 H) i3 L
% h* ]9 |" l0 |0 F* B
}
4 m; V. T# n1 |9 b( \
void ad_config(void)
0 z4 V1 T: }* R& \ u
{
! P- {# b- x5 M- ?* Y) h
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
6 V2 K% |1 l/ |$ f4 H" W9 w
3 K' Q z; x8 a4 G
ADC10CTL1 = INCH_5 + CONSEQ_2 ;
' D! T; D; Q; O, O
ADC10AE0 |= 0x10;
& s E$ Y" M/ v) S; Z
% @% r6 K" t, g# _ p w
ADC10CTL0 |= ENC + ADC10SC;
6 v- {! ^; k& [9 g3 G
( r- m; \- w2 Y4 D/ H7 C$ G# s# o
}
# J2 d* T) F4 ^" A
void main()
% ~3 U; ? |$ ^& E4 A& j! P$ M' J
{
$ k) v) C+ t$ u; q& W) _+ ~
WDTCTL = WDTPW + WDTHOLD;
/ E; o& g/ [% C3 t& z; Y
& m9 C) {7 t, _: v
//sys_clk_config();
; S2 Y' E& w* |9 W
# K- Y9 D; w4 }- p( c* v
uart_gpio_init();
. N$ x' Z% R a) i4 A/ |
+ b& l1 z: z3 I% [
led_gpio_init();
6 S. X s, K( p% s
9 Q7 b( t M, r$ T U! p
ad_gpio_init();
$ u. P+ P" [; P' b
7 u+ G t: C" \3 e( J Y
uart_config();
' y% c. M) Q5 } f* p
) f% @0 z/ ]/ y. U
ad_config();
% p" N5 N* e) a
__bis_SR_register(GIE);
+ a# t9 p# e7 ^ r1 j; X/ D1 y
while(1);
# z$ V5 E- @& `0 j! f6 h# c7 _
4 v6 w E; | w3 K% T; s5 O+ q
~" q) Y S3 |: q& [
}
. ^: |; }+ R/ c0 T8 `
#pragma vector = USCIAB0RX_VECTOR
- O2 S7 t! W" Q+ F8 U8 o( ~, o
__interrupt void USCI0RX_ISR(void)
, d9 D5 h! o5 U- a
{
3 Y* R! N: F$ q" F" b/ Z
while(!(IFG2 & UCA0TXIFG));
! ]# t; d2 [! Q- C/ d8 k
// UCA0TXBUF =0x33 ;// UCA0RXBUF;
/ o5 B2 A- S; J. @
}
. h, G: G( @" D$ S4 z7 K, E
#pragma vector = ADC10_VECTOR
' E! X( g# ^3 @8 L4 W, Z8 Y
__interrupt void ADC10_A0_ISR(void)
: s3 _! E9 s! ~6 _2 e; E! U. z" [ P
{
; ?" X$ u- l6 l; ?+ U/ \" n
+ U& Y7 {8 Z" r, {6 V2 x! D
while(!(IFG2 & UCA0TXIFG));
5 K2 j. b% D1 b; c
UCA0TXBUF = ((ADC10MEM*33)/1023);
% Q6 @. F4 F; m4 a
k = 10000;
" @$ d) p0 A i: T6 L
while(k--);
7 r! P7 _( T# V0 j
% i+ ^9 @* m6 D
}
作者:
zhoumi
时间:
2016-6-29 15:46
学习中,谢谢分享
$ u, I2 N: O" J
作者:
wu68aq
时间:
2016-6-30 11:14
楼主辛苦了!
7 t) t6 I) d D* p/ `7 a
欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/)
Powered by Discuz! X3.2