Tất cả các chân của port P1 một nguyên nhân tương ứng với một vector ngắt.. Tất cả các chân của port 2 có nhiều hơn một nguyên nhân khác nhau tương ứng với 1 vector.. Có thể sử dụng than
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
- -THIẾT KẾ MẠCH ĐO TỐC ĐỘ ĐỘNG CƠ HIỂN THỊ LCD
Th.s Trần Hữu Danh Nguyễn Phát Lợi 1080863
Nguyễn Thanh Huy 1080854
Cần Thơ, tháng 12/2011
Trang 2LỜI MỞ ĐẦU
Cùng với sự phát triển của xã hội, nhu cầu vật chất và tinh thần của con người ngày càng tăng Nắm bắt được điều trên, trong vài năm gần đây để thỏa mãn nhu cầu đi lại ngày càng cao nên nhà nước đã đưa rất nhiều loại hình xe
mô tô để đáp ứng nhu cầu đi lại người dân Để giải quyết một số vấn đề xã hội như giảm bớt tai nạn giao thông, nhằm đảm bảo an toàn cho người khi điều khiển xe mô tô Chính vì lý do nầy chúng ta nên cần thiết kế mạch đo tốc độ và báo động gắn trên xe mô tô, nhằm cảnh báo với những tốc độ không an toàn cho tánh mạng người điều khiển xe mô tô
Xuất phát từ nhu cầu thực tế khách quan đó, cùng những kiến thức đã được trang bị trong trường, nên nhóm chúng em đã mạnh dạn thực hiện đề tài
“THIẾT KẾ MẠCH ĐO TỐC ĐỘ ĐỘNG CƠ HIỂN THỊ LCD” Bên cạnh
đó xin gởi lời cám ơn chân thành đến Thầy Trần Hữu Danh đã hướng dẫn để chúng em hoàn thành đề tài này
Do kiến thức còn hạn chế, mặc dù đã hết sức cố gắng trong quá trình làm và biên soạn chắc chắn trong bài báo cáo không tránh được các sai sót, chúng em xin chân thành cảm ơn ý kiến đóng góp của các thầy để cho đề tài hoàn thiện và phát triển hơn
Trang 3MỤC LỤC
I – GIỚI THIỆU ĐỀ TÀI 4
1 Yêu cầu và giới hạn của đề tài: 4
2 Mục đích của đề tài: 4
II - GIẢI QUYẾT ĐỀ TÀI 5
1 Vi điều khiển MSP430 5
2 Các ngắt P1 và P2: 8
Mỗi chân của port P1 và P2 đều có khả năng ngắt Các ngắt được cấu hình bởi các thanh ghi PxIFG, PxIE VÀ PxIES Tất cả các chân của port P1 một nguyên nhân tương ứng với một vector ngắt Tất cả các chân của port 2 có nhiều hơn một nguyên nhân khác nhau tương ứng với 1 vector Có thể sử dụng thanh ghi PxIFG để xác định nguyên nhân các ngắt port P1 và P2 8
a) Thanh ghi cờ ngắt P1IFG và P2IFG: 8
- Mỗi bit của thanh ghi PxIFGx là một cờ ngắt tương ứng với chân xuất/ nhập và khi có cạnh xung tín hiệu tại các chân Tất cả các cờ ngắt của thanh ghi PxIFGx đòi hỏi một ngắt tương ứng với các bit PxIE và GIE được set Mỗi cờ ngắt đòi hỏi phải reset bằng phần mềm Phần mềm cũng có thể set cờ ngắt: 8
+ Bit =0 Không có ngắt nào đang chờ 8
+ Bit =1 Có 1 ngắt đang chờ được phục vụ 8
Chú ý: Khi thay đổi thanh ghi PxOUT và PxDIP có nghĩa là bạn đang set cờ ngắt tương ứng 8
b) Thanh ghi lựa chọn ngắt theo sườn xung P1IES, P2IES: 8
- Mỗi bit của thanh ghi PxIES lựa chọn ngắt theo cạnh lên hay cạnh xuống tương ứng với mỗi chân xuất/ nhập: 8
+ Bit = 0 Cờ ngắt được set khi có cạnh lên của xung 8
+ Bit = 1 Cò ngắt được set khi có cạnh xuống của xung 8
c) Thanh ghi cho phép ngắt P1IE và P2IE: 8
- Mỗi bít PxIE cho phép hay cấm ngắt và liên quan đến cờ ngắt tương ứng: 8 + Bit = 0: Cấm ngắt 8
+ Bit = 1: Cho phép ngắt 8
3 LCD 16x2 (HD44780) 11
4 Thiết kế phần cứng 11
5 Sơ đồ chi tiết 11
6 Thiết kế phần mềm 12
III – KẾT QUẢ, HƯỚNG PHÁT TRIỂN 14
Trang 4I – GIỚI THIỆU ĐỀ TÀI
1 Yêu cầu và giới hạn của đề tài:
Yêu cầu của đề tài thiết kế mạch đo tốc độ động cơ hiển thị kết quả bằng LCD Có thể áp dụng trên xe ô tô
Đo tốc độ bằng phương pháp sử dụng cặp thu phát hồng ngoại
Giới hạn của đề tài:
Về kiến thức lắp gáp xe mô tô không có cho nên chúng em chỉ thiết kế mang tinh chất mô hình
Do kiến thức và kinh nghiệm còn hạn chế phần báo động cho người điều khiển biết thì chưa thiết kế được
2 Mục đích của đề tài:
Một số mục đích cần phải đạt được khi thực hiện đề tài:
Hiểu được cấu tạo của vi điều khiển MSP430 và tập lệnh của nó
Bộ Timer/counter của MSP430
Tìm hiểu loại hiển thị LCD
Cách lập trình bằng ngôn ngữ C
Trang 5II - GIẢI QUYẾT ĐỀ TÀI
1 Vi điều khiển MSP430
MSP430 là họ vi điều khiển cấu trúc RISC 16-bit được sản xuất bởi công ty Texas Instruments
MSP là chữ viết tắt của “MIXED SIGNAL MICROCONTROLLER” Là
dòng vi điều khiển siêu tiết kiệm năng lượng, sử dụng nguồn thấp, khoảng điện
áp nguồn cấp từ 1.8V – 3.6V
MSP 430 kết hợp các đặc tính của một CPU hiện đại và tích hợp sẵn các
module ngoại vi Đặc biệt Chíp MSP 430 là giải pháp thích hợp cho những ứng dụng yêu cầu trộn tín hiệu
Những đặc tính của dòng MSP 430 bao gồm:
• Điện áp nguồn: 1.8V – 3.6 V
• Mức tiêu thụ năng lượng cực thấp:
• Chế độ hoạt động: 270 μA tại 1MHz, 2,2 V
• Chế độ chờ: 0.7 μA
• Chế độ tắt (RAM vẫn được duy trì): 0.1 μA
• Thời gian đánh thức từ chế độ Standby nhỏ hơn 1μs
• Cấu trúc RISC-16 bit, Thời gian một chu kỳ lệnh là 62.5 ns
• Cấu hình các module Clock cơ bản:
• Tần số nội lên tới 16 MHz với 4 hiệu chỉnh tần số +- 1%
• Thạch anh 32 KHz
• Tần số làm việc lên tới 16 MHz
• Bộ cộng hưởng
• Nguồn tạo xung nhịp bên ngoài
• Điện trở bên ngoài
• Timer_A 16 bit với 3 thanh ghi hình, 3 thanh ghi so sánh độ rộng 16
bit
• Timer_B 16 bit với 3 thanh ghi hình, 3 thanh ghi so sánh độ rộng 16
• bit
• Giao diện truyền thông nối tiếp:
• Hỗ trợ truyền thông nối tiếp nâng cao UART, tự động dò tìm
• tốc độ Baud
• Bộ mã hóa và giải mã IrDA (Infrared Data Associatio)
• Chuẩn giao tiếp động bộ SPI
• Chuẩn giao tiếp I2C
• Bộ chuyển đổi ADC 10 bit, 200 ksps với điện áp tham chiếu nội, Lấy
• mẫu và chốt Tự động quét kênh, điều khiển chuyển đổi dữ liệu
• Hai bộ khuếch đại thuật toán (hoạt động) có thể định cấu hình (Đối với
• MSP 430x22x4)
• Bảo vệ sụt áp
• Bộ nạp chương trình
Trang 6• Module mô phỏng trên chip
MSP430 được sử dụng và biết đến đặc biệt trong những ứng dụng về thiết bị
đo có sử dụng hoặc không sử dụng LCD với chế độ nguồn nuôi rất thấp Với chế độ
nguồn nuôi từ khoảng 1,8 đến 3,6v và 5 chế độ bảo vệ nguồn
Với sự tiêu thụ dòng rất thấp trong chế độ tích cực thì dòng tiêu thụ là 200uA, 1Mhz, 2.2v; với chế độ standby thì dòng tiêu thụ là 0.7uA Và chế độ tắt chỉ duy trì
bộ nhớ Ram thì dòng tiêu thụ rất nhỏ 0.1uA
MSP430 có ưu thế về chế độ nguồn nuôi Thời gian chuyển chế độ từ chế độ standby sang chế độ tích cực rất nhỏ (< 6us) Và có tích hợp 96 kiểu hình cho hiển
thị LCD 16 bit thanh ghi, 16 bit RISC CPU
Có một đặc điểm của họ nhà MSP là khi MCU không có tín hiệu dao động
ngoại, thì MSP sẽ tự động chuyển sang hoạt động ở chế độ dao động nội
• Chân P1.0/TACLK/ADC10CLK (29):
Chân xuất / nhập số
Ngõ vào xung clock TACLK của Timer A
Bộ chuyển đổi xung của ADC10
• Chân P1.1/TA0 (30):
Chân xuất / nhập số
Timer_A: Ngõ vào CCI0A chế độ capture, ngõ ra OUT0 chế độ so
sánh
• Chân P1.1/TA0 (31):
Chân xuất / nhập số
Timer_A: Ngõ vào CCI1A chế độ capture, ngõ ra OUT1 chế độ so
sánh
• Chân P1.3/TA0 (32):
Chân xuất / nhập số
Timer_A: Ngõ vào CCI2A chế độ capture, ngõ ra OUT2 chế độ so
sánh
Hình 1.1: Sơ đồ chân của MSP430g2231
Trang 7• Chân P1.4/SMCLK/TCK :
Chân xuất / nhập số
Ngõ ra SMCLK (Sub-Main clock) của khối tạo dao động nội
Ngõ vào kiểm tra xung clock TCK
• Chân P1.5/TA0/TMS :
Chân xuất / nhập số
Ngõ ra OUT0 củaTimer_A chế độ so sánh
TSM: Ngõ vào lựa chọn chế độ kiểm tra
• Chân P1.6/TA1/TDI/TCLK :
Chân xuất / nhập số
TA1: ngõ ra OUT1của Timer A ở chế độ so sánh
TDI: Ngõ vào kiểm tra dữ liệu
TCLK: Ngõ vào kiểm tra xung clock
• Chân P1.7/TA2/TDO/TDI:
Chân xuất / nhập số
TA2: ngõ ra OUT2 của Timer A ở chế độ so sánh:
TDI: Ngõ vào kiểm tra dữ liệu
TDO: Ngõ ra kiểm tra dữ liệu
• Chân XIN/ P2.6 :
Ngõ vào kết nối với dao động thạch anh
Chân xuất/ nhập số
• Chân XUOT/P2.7:
Ngõ vào kết nối với dao động thạch anh
Chân xuất/nhập số
Trang 82 Các ngắt P1 và P2:
Mỗi chân của port P1 và P2 đều có khả năng ngắt Các ngắt được cấu hình bởi
các thanh ghi PxIFG, PxIE VÀ PxIES Tất cả các chân của port P1 một nguyên nhân tương ứng với một vector ngắt Tất cả các chân
của port 2 có nhiều hơn một nguyên nhân khác nhau tương ứng với 1 vector Có thể sử dụng thanh ghi PxIFG để xác định nguyên nhân các ngắt port P1 và P2
a) Thanh ghi cờ ngắt P1IFG và P2IFG:
- Mỗi bit của thanh ghi PxIFGx là một cờ ngắt tương ứng với chân
xuất/ nhập và khi có cạnh xung tín hiệu tại các chân Tất cả các cờ ngắt của thanh ghi PxIFGx đòi hỏi một ngắt tương ứng với các bit PxIE và GIE được set Mỗi cờ ngắt đòi hỏi phải reset bằng phần mềm Phần
mềm cũng có thể set cờ ngắt:
+ Bit =0 Không có ngắt nào đang chờ
+ Bit =1 Có 1 ngắt đang chờ được phục vụ
Chú ý: Khi thay đổi thanh ghi PxOUT và PxDIP có nghĩa là bạn đang set cờ
ngắt tương ứng
b) Thanh ghi lựa chọn ngắt theo sườn xung P1IES, P2IES:
- Mỗi bit của thanh ghi PxIES lựa chọn ngắt theo cạnh lên hay cạnh xuống
tương ứng với mỗi chân xuất/ nhập:
+ Bit = 0 Cờ ngắt được set khi có cạnh lên của xung
+ Bit = 1 Cò ngắt được set khi có cạnh xuống của xung
c) Thanh ghi cho phép ngắt P1IE và P2IE:
- Mỗi bít PxIE cho phép hay cấm ngắt và liên quan đến cờ ngắt tương ứng:
+ Bit = 0: Cấm ngắt
+ Bit = 1: Cho phép ngắt
2.1 Timer hoạt động ở chế độ Counter 16 Bit:
Ở chế độ Counter giá trị thanh ghi TAR tăng hoặc giảm theo cạnh lên của
xung clock (tùy thuộc vào chế độ hoạt động) Giá trị của thanh ghi TAR có thể được ghi hoặc đọc bởi phần mềm Nó có khả năng tạo ra một ngắt khi đếm
tràn
Trang 9Thanh ghi TAR có thể bị xóa khi set bit TACLR Việc set bit TACLR đồng
thời cũng xóa giá trị lựa chọn cho bộ chia xung hoặc chế độ đếm lên hay đếm xuống
2.2 Lựa chọn nguồn xung và bộ chia xung:
Timer có thể lựa chọn nguồn từ xung từ ACLK, SMCLK hoặc sử dụng nguồn xung ngoài thông qua TACLK hoặc INCLK Nguồn xung được lựa chọn nhờ bít
TASSELx Các nguồn xung được chọn có thể đã được chia 2, 4 hoặc 8 Bộ chia xung được reset khi set bit TACLR
2.3 Kích hoạt Timer:
Timer có thể được kích hoạt hoặc kích hoạt lại bằng các cách sau đây:
+ Timer đếm khi MCx > 0 và nguồn xung đã được kích hoạt
+ Khi timer đang hoạt động ở chế độ đếm lên hoặc đếm xuống Có thể
dừng timer bằng cách ghi TACCR0 = 0 Timer sẽ kích hoạt trở lại khi giá trị ghi vào TACCR0 khác 0 Giá trị đếm lên sẽ bắt đầu từ 0
2.4Các chế độ hoạt động của Timer:
Timer hoạt động ở 4 chế độ: Chế độ dừng, chế độ đếm lên, chế độ tiếp tục,
chế độ đếm lên/xuống Các chế độ này được lựa chọn bằng bit MCx
2.5 Các ngắt của Timer_A:
Có hai ngắt được tạo ra do Timer_A:
+ Vector ngắt TACCR0 cho TRCCR0 CCIFG
+ Vector ngắt TAIV cho tất cả các cờ ngắt CCIFG khác và TAIFG
Trong chế độ lưu trữ CCIFG được set khi giá trị của timer được lưu trữ do
thanh ghi TACCRx Trong chế độ so sánh bất kỳ cờ CCIFG được set nếu TAR đếm tới giá trị TACCRx Có thể sử dụng phần mềm để set hoặc xóa bất kỳ cờ ngắt CCIFG nào Tất cả các cờ ngắt CCIFG yêu cầu một ngắt khi bit CCIE và GIE được set
Ngắt TACCR0 CCIFG là ngắt của Timer_A có mức ưu tiên cao nhất
Cờ
ngắt TACCR0 CCIFG tự động reset khi ngắt TACCR0 được phục vụ
Trang 113 LCD 16x2 (HD44780)
-
Cấu tạo và chức năng từng chân:
+ Chân 7 – 14: 8 chân dữ liệu tương ứng từ D0 - D7
+ Chân 4 – 6: 3 chân điều khiển quá trình đọc ghi LCD
+ Chân 1,2: Hai chân cấp nguồn cho LCD
+ Chân 3: Điều chỉnh tương phản cho LCD
- Gồm có 2 thanh ghi: thanh ghi lệnh (IR), thanh ghi dữ liệu (DR)
- Có 3 vùng nhớ: DDRAM, CGROM, CGRAM
4 Thiết kế phần cứng
Sơ đồ khối hệ thống:
5 Sơ đồ chi tiết
Kết quả mô phỏng trên phần mền proteus
MSP430 KHỐI TẠO XUNG
KHỐI HIỂN THỊ (LCD 16X2)
Trang 126 Thiết kế phần mềm
6.1 Nguyên tắc hoạt động
• Sử dụng chức năng counter của timer1 để đếm số xung trong 1s
• Sử dụng cặp led thu phát hồng ngoại để tạo ra 1 xung khi bánh quay chuyển động được một vòng
• Đếm trong 1s có bao nhiêu xung => quãng đường bánh quay chuyển động được trong 1s
• S= số xung * chu vi
• Chu vi= 2r*pi
6.2 Chương trình
#include <msp430g2231.h>
#include "LCD_MSP430.h"
unsigned int foo1, foo=0,i=0;
char ch[];
unsigned int nguyen, le;
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop the Watchdog timer clr_lcm();
init_lcm();
P1IE|=0x01;
P1IES|=0x01;
Trang 13P1IFG&=~0x01;
TACCTL0|=CCIE;
TACCR0 = 32768;
TACTL = TASSEL_1|MC_1;
_BIS_SR(GIE);
while(1)
{
}
}
#pragma vector=TIMERA0_VECTOR
interrupt void Timer_A(void)
{ TACCR0 = 0;
P1IE&=~0x01;
nguyen=((foo*10)*35/100)/10;
le=((foo*10)*35/100)%10;
clr_lcm();
putstr("xung vantoc ");
lcm_line2();
tostr(foo,ch);
putstr(ch);
putstr(" ");
tostr(nguyen,ch);
putstr(ch);
putchar('.');
tostr(le,ch);
putchar(ch[2]);
putstr("m/s");
foo=0;
P1IFG&=~0x01;
P1IE|=0x01;
TACCR0 = 32768;
}
#pragma vector=PORT1_VECTOR
interrupt void Port_ISR(void)
{
foo++;
P1IFG &=~ 0x01;
}
Trang 14III – KẾT QUẢ, HƯỚNG PHÁT TRIỂN
- Kết quả: mạch chạy ổn định đạt được mục đích của đề tài: tìm hiểu
vi điều khiểnMSP430 và thiết kế mạch ứng dụng
- Hướng phát triển: thiết kế thêm phần báo động, và cải thiện mạch xử
lý nhanh hơn, thông minh hơn để áp dụng trên tất cả loại xe nói
riêng, tất cả mọi phương tiện nói chung, quan trọng thiết kế mạch đo tốc độ và báo động trên xe lửa