Em đang làm đồ án vi xử lý msp430 ạ. Em đang cần biến đổi ADC10 cùng lúc cho nhiệt độ và độ ẩm hiển thị lên LCD. Mà thầy bận quá nên chỉ kịp dạy biến đổi 1 kênh thôi(1 kênh cũng dễ) . Tuy trong sách có viết nhưng đọc ko hiệu ạ. Nhờ các cao nhân trợ giúp với, em cảm ơn. Dưới là đoạn code của em. Viết nó vẫn chạy nhưng độ ẩm mà thay đổi là nhiệt độ cũng đôi theo luôn. em đã mò suốt 3 ngày rồi mà ko ra
Biến đổi ADC 2 kênh dùng MSP430
Collapse
X
-
Tags: None
-
#include "msp430g2553.h"
#include "LCDP1.h"
void adcnhiet(void) ///bien doi adc kenh 6 luu vao bien 'nhiet' hien thi lcd
{ float nhiet1;int nhiet;
ADC10CTL0 &=~ ENC;
while(ADC10CTL1 & BUSY);
ADC10CTL1 = INCH_6 + CONSEQ_2;//kenh A6
ADC10AE0 |= 0x40;//P1.6
ADC10CTL0 |= ENC + ADC10SC;//bat dau chuyen doi adc
__bis_SR_register(CPUOFF + GIE);
nhiet1 = (float)((ADC10MEM*3.3*100)/1023);
nhiet = (int)nhiet1/1;
if(nhiet<30)
P2OUT |= BIT0;
else
P2OUT &=~ BIT0;
lcd_gotoxy(10,0);
lcd_3n(nhiet);
}
void adcam(void) ///bien doi adc kenh 7 luu vao bien 'doam' hien thi lcd
{ float doam1; int doam;
ADC10CTL0 &=~ ENC;
while(ADC10CTL1 & BUSY);
ADC10CTL1 = INCH_7 + CONSEQ_2;//kenh A7
ADC10AE0 |= 0x80;//P1.7
ADC10CTL0 |= ENC + ADC10SC;//bat dau chuyen doi adc
__bis_SR_register(CPUOFF + GIE);
lcd_gotoxy(7,1);
doam1 = (float)(100-(ADC10MEM-400)/6);
doam = (int)doam1/1;
if(doam>100) doam=100;
lcd_3n(doam);
}
//////////////////////////////////////
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
P1DIR |= BIT2 + BIT3 + BIT4 + BIT5 + BIT0 + BIT1 ;//port 1 ngo ra
P2DIR |= BIT0;
lcd_init();//khoi tao lcd
lcd_clear();//xoa man hinh lcd
lcd_gotoxy(0,0); lcd_puts("Nhiet do: ");
lcd_gotoxy(13,0); lcd_puts("'C");
lcd_gotoxy(0,1); lcd_puts("Do am: ");
lcd_gotoxy(10,1); lcd_puts("%");
//khoi tao adc10 voi thoi gian lay mau va giu mau la 16*ADC10clock, chon dien the tham chieu noi avcc=3.3V, bat ADC10, cho phep ngat ADC10
ADC10CTL0 = ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
__delay_cycles(30);
while(1)
{
adcnhiet();
adcam();
__delay_cycles(1000000);
}
}
//chuong trinh con phuc vu ngat
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{__bic_SR_register_on_exit(CPUOFF);}
Bài viết mới nhất
Collapse
-
bởi KazumiChào mọi người. Tôi có một động cơ bước được lắp đặt gần dây chuyền mạ điện, nơi môi trường có chứa hơi axit.
Sau hơn sáu tháng vận hành, bộ điều khiển (driver) gần đây liên tục báo lỗi quá dòng. Khi tháo động cơ ra, tôi phát hiện...-
Channel: Điện tử công suất
12-10-2026, 13:40 -

Comment