ADC_UART
ADC_UART
//prototype
void scanled();
void printled();
void delayms(int ms);
//khai bao bien
char tbl7seg[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
char buff[4]= {0,0,0,0}; // vung dem
int idx = 0; // Con tro quet led
int timer = 0;
int dem = 0;
char state = 0;
int delay = 0;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
//GP IO
P3DIR = 0xFF;
P6DIR = 0x0F;
//MAIN LOOP
while(1){
while(state == 0);
dem++;
printled();
state = 0;
if(dem >= 20){
while(delay < 1000);
}
}
}
Page 1
main * - Printed on 12/2/2024 03:54:03 PM
__delay_cycles(1000);
}
Page 2
main * - Printed on 12/2/2024 03:49:12 PM
//--------------ADC 1-----------------------------------------
#include "msp430f5529.h"
#define DLED P3OUT
#define CTR P6OUT
#define K1 BIT3 //P2.3
#define K2 BIT5 //P2.5
#define K3 BIT4 //P2.4
#define K4 BIT3 //P4.3
#define VR3 5
#define VR2 6
#define VR1 7
//prototype
void scanled();
void delayms(int ms);
void toDisplay(int dat);
unsigned int ReadADC12(int channel);
//GP IO
P3DIR = 0xFF; // P3 la OUTPUT
P6DIR = 0x0F; // P6 la OUTPUT
P4DIR |= BIT0; P4OUT &= ~BIT0; //GND
P2REN |= (BIT3 + BIT4 + BIT5);
P2OUT |= (BIT3 + BIT4 + BIT5);
P4REN |= BIT3; P4OUT |= BIT3;
//MAIN LOOP
while(1){
if ((P2IN & K1) == 0) status = 1;
if ((P2IN & K2) == 0) status = 2;
switch(status){
case 1: val = ReadADC12(VR2); break;
case 2: ADC12CTL0 = 0;
}
toDisplay(val);
// scan to display 7segled
scanled();
delayms(5);
}
}
//CAU HINH ADC
unsigned int ReadADC12(int channel){
ADC12CTL0 &= ~ADC12ENC;
ADC12CTL0 |= (ADC12SHT0_2 + ADC12ON);
ADC12CTL1 = ADC12SHP;
//QUET LED
void scanled(){
char ch;
ch = buff[idx];
DLED = tbl7seg[ch];
CTR = ~(1<<idx);
idx++;
if (idx>=4) idx = 0;
Page 1
main * - Printed on 12/2/2024 03:49:12 PM
}
// HIEN THI LED 7 DOAN
void toDisplay(int dat){
buff[3] = dat/1000;
buff[2] = (dat%1000)/100;
buff[1] = ((dat%1000)%100)/10;
buff[0] = dat%10;
}
//DELAYMS
void delayms(int ms){
for(int i=0; i<ms ; i++)
__delay_cycles(1000);
}
Page 2
main * - Printed on 12/2/2024 03:53:19 PM
//-------------------------ADC 7 DOAN---------------------------------------
#include "msp430f5529.h"
#define DLED P3OUT
#define CTR P6OUT
#define K1 BIT3 //P2.3
#define K2 BIT5 //P2.5
#define K3 BIT4 //P2.4
#define K4 BIT3 //P4.3
#define VR3 5
#define VR2 6
#define VR1 7
//prototype
void scanled();
void delayms(int ms);
void toDisplay(int dat);
void ReadADC12(int channel);
//MAIN LOOP
while(1){
if ((P2IN & K1) == 0) status = 1;
if ((P2IN & K2) == 0) status = 2;
toDisplay(val);
}
} //END MAIN
Page 1
main * - Printed on 12/2/2024 03:53:19 PM
ADC12MCTL0 |= channel;
}
//QUET LED
void scanled(){
char ch;
ch = buff[idx];
DLED = tbl7seg[ch];
CTR = ~(1<<idx);
idx++;
if (idx>=4) idx = 0;
}
// HIEN THI LED 7 DOAN
void toDisplay(int dat){
buff[3] = dat/1000;
buff[2] = (dat%1000)/100;
buff[1] = ((dat%1000)%100)/10;
buff[0] = dat%10;
}
//DELAYMS
void delayms(int ms){
for(int i=0; i<ms ; i++)
__delay_cycles(1000);
}
Page 2
main * - Printed on 12/2/2024 03:49:52 PM
//------------------------PWM-----------------------------------------
#include "msp430f5529.h"
// define for PWM
#define F_CPU 1000000UL
#define PWM_PERIOD F_CPU/490
#define PWM_DUTY(x) ((unsigned long)x*PWM_PERIOD / (unsigned long)(0xff))
//GP IO
P4DIR |= BIT0; P4OUT &= ~BIT0; //GND
P2REN |= (BIT3 + BIT4 + BIT5);
P2OUT |= (BIT3 + BIT4 + BIT5);
P4REN |= BIT3; P4OUT |= BIT3;
// MAIN LOOP
while(1){
Page 1
main * - Printed on 12/2/2024 03:49:52 PM
// Vref+ = 3.3V - thuc te
ADC12CTL0 |= ADC12SHT0_2 + ADC12ON;
ADC12CTL1 |= ADC12SHP + ADC12CONSEQ_0;
//ADC12CTL2 = 0xA2;
ADC12MCTL0 |= ADC12SREF_0 + ADC12INCH_12;
ADC12CTL0 |= ADC12ENC + ADC12SC; // B1: START ADC
while(!(ADC12CTL0 & ADC12IFG0)); // B2: ADC bien doi --> wait
ADC12CTL0 = 0; // OFF ADC
return ADC12MEM0; // B3: doc gia tri bien doi
}
//DELAYMS
void delayms(int ms){
for(int i=0; i<ms ; i++)
__delay_cycles(1000);
}
Page 2
main * - Printed on 12/2/2024 03:51:16 PM
//------------------UART-------------------------------------------------------
#include "io430f5529.h"
#define PLED P3OUT
#define CTR P6OUT
#define K0 BIT3 //P2.3
#define K2 BIT5 //P2.5
#define K3 BIT4 //P2.4
#define K4 BIT3 //P4.3
//prototype
void delayms(int ms);
void uart_io();
//void uart_clock();
void uart_init();
void uart_char(char ch);
void uart_string(const char *s);
void blink(int time);
void UARTSendNum (float number0);
//GP IO
P3DIR = 0xFF; // P3 la OUTPUT
P6DIR = 0x0F; // P6 la OUTPUT
P4DIR |= BIT0; P4OUT &= ~BIT0; //GND
P2REN |= (BIT3 + BIT4 + BIT5);
P2OUT |= (BIT3 + BIT4 + BIT5);
P4REN |= BIT3; P4OUT |= BIT3;
Page 1
main * - Printed on 12/2/2024 03:51:16 PM
void uart_io(){
P4SEL |= (BIT4 + BIT5);
}
void uart_init(){
UCA1CTL0 = 0x00; //KHUNG DU LIEU 8bit, none, 1stop
UCA1CTL1 |= UCSWRST;
UCA1CTL1 |= UCSSEL_2;
UCA1BR0 = 104; //baudrate 9600 1Mhz
UCA1BR1 = 0;
UCA1MCTL = UCBRS_1; //TRUYEN MSB TRUOC
UCA1CTL1 &= ~UCSWRST;
UCA1IE |= (UCRXIE);
//__bis_SR_register(GIE);
}
Page 2
main * - Printed on 12/2/2024 03:51:43 PM
//UART 2
#include "io430f5529.h"
P3DIR=0xff;
UCA0CTL1 =UCSWRST;
P4SEL |= BIT4 + BIT5;
UCA1CTL1 |= UCSSEL_2;
UCA1BR0 =104;
UCA1BR1 =0;
UCA1MCTL = UCBRS_1;
UCA1CTL1 &=~ UCSWRST;
UCA1IE |= UCRXIE;
__bis_SR_register(GIE);
while(1);
Page 1