[Thông báo] THÀNH LẬP CÔNG TY TNHH TM & DV EPLUSI
Nhận đặt hàng các sản phẩm từ Texas Instruments
Sản phẩm thương mại của diễn đàn
Kênh video riêng của diễn đàn
Thiết kế - Thi công dự án điện tử theo yêu cầu





Đăng  trả lời 
 
Đánh giá chủ đề:
  • 29 phiếu bầu - Trung bình 3.41
  • 1
  • 2
  • 3
  • 4
  • 5
MSP430G2231 điều khiển 2 LED 7 đoạn
18-10-2011, 01:51 PM (Được chỉnh sửa: 18-10-2011 01:55 PM bởi msp430.)
Bài viết: #1
MSP430G2231 điều khiển 2 LED 7 đoạn
Đây là project đơn giản điều khiển 2 led 7 segment, giúp cho người mới làm quen với vi điều khiển dòng MSP430. Vi điều khiển MSP430G2231 thực hiện việc hiển thị các số từ 0 đến 99. Chương trình điều khiển đơn giản chỉ là vòng lặp vô hạn. Làm trễ thời gian bằng vòng lặp, thay đổi thời gian trễ bằng cách tăng giảm số vòng lặp . Dưới đây là sơ đồ nguyên lý và sơ đồ lắp ráp, để cho thuận tiện ta dùng mạch thí nghiệm cắm dây (BreadBoard). Phần nguồn nuôi dùng nguồn 3.3VDC. Có 1 chương chình ví dụ kèm theo bằng ngôn ngữ C với bộ biên dịch CCS.

[Hình: G2231_2L7Sche.JPG]

Chương trình cho mạch trên Code C:

#include <msp430g2231.h>

unsigned char To7Seg(unsigned char nVal,unsigned char nPt);
void Delay(unsigned int nLoop);

unsigned char mDigit[2];
unsigned char mDigNo;

void main(void)
{
unsigned char i;

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P2SEL = 0x00; // IO function is select
P2DIR = 0xC0; // Port 2 output
P2OUT = 0xC0;

P1DIR |= 0xFF; // Port 1 output

CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 10000; // cycles to overload
TACTL = TASSEL_2 + MC_1; // SMCLK, upmode

_BIS_SR(GIE); // w/ interrupt

mDigNo = 0;

while(1)
{
for(i=0;i<100;i++)
{
mDigit[1] = To7Seg(i/10,0);
mDigit[0] = To7Seg(i%10,0);
Delay(50000);
} //for
}
}
//******************************************************************************
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
switch(mDigNo)
{
case 0:
P2OUT = ~0x80;
break;
case 1:
P2OUT = ~0x40;
break;
}
P1OUT = mDigit[mDigNo];

mDigNo++;
if(mDigNo >1)
mDigNo = 0;
}

//******************************************************************************
unsigned char To7Seg(unsigned char nVal,unsigned char nPt)
{
unsigned char nRet;

switch(nVal)
{
case 0:
nRet = 192;
break;
case 1:
nRet = 249;
break;
case 2:
nRet = 164;
break;
case 3:
nRet = 176;
break;
case 4:
nRet = 153;
break;
case 5:
nRet = 146;
break;
case 6:
nRet = 130;
break;
case 7:
nRet = 248;
break;
case 8:
nRet = 128;
break;
case 9:
nRet = 144;
break;
case 10:
nRet = 255;
break;
} //switch

if(nPt)
nRet = nRet & 127;

return(nRet);
}
//******************************************************************************
void Delay(unsigned int nLoop)
{
while(nLoop--);
}

Code C for CCS

phanit



Có thể liên quan đến chủ đề
[help] giao tiếp 2 led 7 đoạn với 74hc595
LẬP TRÌNH ĐIỀU KHIỂN DAO ĐỘNG TRUY XUẤT IO
Giao tiếp LED 7 đoạn với MSP430
Phần mềm mô phỏng vi điều khiển (MSP430/CC430)
sử dụng timer 1s hiển thị từ 0000-9999 ra led 7 đoạn
MSP430G2231 giao tiếp với Serial Eeprom 24LC32A
Giao tiếp vi điều khiển MSP430 với 24LC256 EEPROM I2C
Code led 7 đoạn đếm từ 0000-9999
Dùng TIMER 1s của MSP430 Để Điều Khiển 2 Cặp LED 7 Đoạn chạy 2 Số Khác Nhau
MSP430G2231 điều khiển 8 led đơn
Tìm tất cả bài viết của thành viên này
Trích dẫn bài này trong bài trả lời
Đăng  trả lời 


Chuyển nhanh: