Luận văn, đồ án tốt nghiệp, đề tài tốt nghiệp, đồ án, thực tập tốt nghiệp, đề tài
Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 BÁO CÁO VI ĐIỀU KHIỂN DSPIC30F4011 Tên Đề Tài:LED Matrix 16x32 I.Giới thiệu về VĐK Dspic30f4011 1. Khối xử lý trung tâm CPU - Tập lệnh cơ bản gồm 84 lệnh - Chế độ định địa chỉ linh hoạt - Độ dài lệnh 24-bit, độ dài dữ liệu 16-bit - Bộ nhớ chương trình Flash 24 Kbytes - Bộ nhớ RAM độ lớn 1Kbytes - Bộ nhớ EEPROM - Mảng 16 thanh ghi làm việc 16-bit - Tốc độ làm việc lên tới 30 MIPS 2. Bộ chuyển đổi tương tự số ADC - Bộ chuyển đổi tương tự - số (ADC) 10-bit + Tốc độ lấy mẫu tối đa 1 Msps (Mega samples per second) + Tối đa 10 kênh lối vào ADC + Thực hiện biến đổi cả trong chế độ Sleep và Idle - Chế độ nhận biết điện thế thấp khả lập trình - Tạo Reset bằng nhận diện điện áp khả lập trình 3. Các cổng vào ra I/O Port và các ngoại vi - Dòng ra, vào ở các chân I/O lớn: 25 mA - 3 Timer 16-bit, có thể ghép 2 Timer 16-bit thành Timer 32-bit - Chức năng Capture 16-bit - Các bộ so sánh/PWM 16-bit - Module SPI 3 dây (hỗ trợ chế độ Frame) - Module I2C, hỗ trợ chế độ đa chủ tớ, địa chỉ từ 7-bit đến 10-bit - UART có khả năng địa chỉ hoá, hỗ trợ bộ đệm FIFO 1 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 4. Bộ xử lý tín hiệu số - Nạp dữ liệu song song - Hai thanh chứa 40-bit có hỗ trợ bão hoà logic - Thực hiện phép nhân 2 số 17-bit trong một chu kì máy - Tất cả các lệnh DSP đều thực hiện trong một chu kì máy - Dịch trái hoặc phải 16 bit trong một chu kì máy 5. Một số đặc điểm khác - Bộ nhớ Flash: ghi/xoá lên tới 10.000 lần (điều kiện công nghiệp) và trên dưới 100.000 lần (thông thường) - Bộ nhớ EEPROM: ghi/xoá lên tới 100.000 lần (điều kiện công nghiệp) và trên dưới 1.000.000 lần (thông thường) - Khả năng tự nạp trình dưới điều khiển của software - Watch Dog Timer mềm dẻo với bộ dao động RC nguồn thấp trên chip. - Chế độ bảo vệ firmware khả lập trình - Khả năng tự lập trình nối tiếp trên mạch điện (In Circuit Serial Programming –ICSP) - Có thể lựa chọn các chế độ quản lí nguồn: Sleep hoặc Idle II.Tìm hiểu về đề tài Nguyên lý hoạt động của bảng Led:sử dụng phương pháp quét hình theo từng dòng.Mỗi dòng gồm nhiều điểm ảnh, mỗi điểm ảnh có thể có một hoặc vài đèn, màu sắc khác nhau. Mỗi đèn được biểu diễn thông qua một bit dữ liệu, bit 1 tương ứng với đèn sáng, bit 0 tương ứng với đèn tắt. Tại một thời điểm, không phải tất cả các dòng trên màn hình đều sáng nhưng do tốc độ quét nhanh và sự lưu ảnh trên võng mạc tạo cho người nhìn thấy hình ảnh liên tục. Trong quá trình quét, mạch điều khiển sẽ đưa dữ liệu ra Module hiển thị, chính dữ liệu này sẽ quyết định điểm ảnh nào sáng, điểm ảnh nào tắt, màu sắc của điểm ảnh là gì. Các điểm ảnh này sẽ tạo ra hình ảnh trên bảng điện tử 2 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 Rs232Dữ liệu Hình 1:Cấu trúc của mạch ĐK Led Matrix 16x32 a.Phần mềm giao tiếp Trước tiên để máy tính có thể truyền dữ liệu xuống VĐK ta cần phải có phần mềm giap tiếp giữa máy tính và VĐK Qua tìm hiểu em thiết kế phần mềm giao tiếp trên Vissuall C# 2010 đế truyền dữ liệu từ máy tính đến VĐK Tạo bảng font kiểu 16-bit và lưu vào bộ nhớ trong của chip dưới dạng mảng 2 chiều, ví dụ: font[230][8] -> 230 ký tự, mỗi ký tự hiển thị bằng 8 word (16-bit). Trong bảng mã ASCII, từ 32 (space) -> 126 là các ký tự hiển thị được, ta sẽ đẩy hết lên trên 32 đơn vị. Tức là giả sử ta nhập ký tự ‘A’ và bắn ra cổng COM, giá trị được gửi xuống không còn là 65 nữa mà là (65 – 32 = 33). Khi đấy, từ 95 -> 255 coi như vùng trống, và ta sẽ tự quy ước, chẳng hạn: 95 là ‘á’, 96 là ‘à’.v.v. Trên giao diện, ta nhập chuỗi ký tự (kiểu Unicode) muốn hiển thị, máy tính sẽ đọc từng ký tự, ánh xạ ra một giá trị (1 byte) từ 0 -> 255 và gửi xuống vi điều khiển. Tương ứng giá trị mỗi byte (cũng là số thứ tự của ký tự lưu trong bảng font[230][8]), vi điều khiển sẽ nhặt ra 8 word (16-bit) của ký tự tương ứng và đưa vào mảng quét (mảng 1 chiều) b.Khối điều khiển Chức năng: - Nhận dữ liệu từ máy tính ghi vào bộ nhớ RAM 3 Giải mã cột Dspic 30f4011 Computer Ma trận đèn LED Xuất dữ liệu cột Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 -Xử lý dữ liệu nhận được và lấy dữ liệu font cần hiển thị trên flash và lưu trên RAM - Lấy dữ liệu từ bộ nhớ RAM và hiển thị qua bảng điện tử thông qua các thao tác đẩy dữ liệu và quét cột c.Khối giải mã cột Sử dụng IC74LS238 tích cực mức cao Sơ đồ giải mã cột: Q1 R2 330k R1 100 VCC Colum A 1 B 2 C 3 G2A 4 G2B 5 G1 6 Y7 7 Y6 9 Y5 10 Y4 11 Y3 12 Y2 13 Y1 14 Y0 15 IC1 74HC238 d.Khối xuất dữ liệu Dùng 8 IC74HC595 để xuất dữ liệu ra cột sử dụng Module SPI để truyền dữ liệu ra IC74HC595 e.Khối hiển thị Sử dụng 8LED 8x8 ghép thành ma trận 16x32 Những gì đã làm được trong đề tài II.Thiết kế phần cứng RS232,phần mềm giao tiếp C# 2010 1.Phần mềm giao tiếp giữa máy tính và Dspic30f4011 Giao diện phần mềm chạy trên Visuall C# với yêu cầu cài Net Framework 4.0: 4 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 Hình 2:Phần mềm giao tiếp VC# 2010 a.Quá trình truyền dữ liệu Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ. Do vậy nên tại một thời điểm chỉ có một bit được truyền (1 kí tự). Bộ truyền gửi một bit bắt đầu (bit start) để thông báo cho bộ nhận biết một kí tự sẽ được gửi đến trong lần truyền bit tiếp the . Bit này luôn bắt đầu bằng mức 0 Tiếp theo đó là các bit dữ liệu (bits data) được gửi dưới dạng mã ASCII( có thể là 5,6,7 hay 8 bit dữ liệu) Sau đó là một Parity bit ( Kiểm tra bit chẵn, lẻ hay không) và cuối cùng là bit dừng - bit stop có thể là 1, 1,5 hay 2 bit dừng. b. Tốc độ Baud Đây là một tham số đặc trưng của RS232. Tham số này chính là đặc trưng cho quá trình truyền dữ liệu qua cổng nối tiếp RS232 là tốc độ truyền nhận dữ liệu hay còn gọi là tốc độ bit. Tốc độ bit được định nghĩa là số bit truyền được trong thời gian 1 giây.Tốc độ bit này phải được thiết lập ở bên phát và bên nhận đều phải có tốc độ như nhau ( Tốc độ giữa vi điều khiển Dspic30f4011 và máy tính phải chung nhau 1 tốc độ truyền bit) Ngoài tốc độ bit còn một tham số để mô tả tốc độ truyền là tốc độ Baud. Tốc độ Baud liên quan đến tốc độ mà phần tử mã hóa dữ liệu được sử dụng để diễn tả bit được truyền còn tôc độ bit thì phản ánh tốc độ thực tế mà các bit được truyền.Vì một phần tử báo hiệu sự mã hóa một bit nên khi đó hai tốc độ bit và tốc độ baud là phải đồng nhất Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 56000, 115200 … Trong thiết bị họ thường dùng tốc độ là 9600 5 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 Khi sử dụng chuẩn nối tiếp RS232 thì yêu cầu khi sử dụng chuẩn là thời gian chuyển mức logic không vượt quá 4% thời gian truyền 1 bit. Do vậy, nếu tốc độ bit càng cao thì thời gian truyền 1 bit càng nhỏ thì thời gian chuyển mức logic càng phải nhỏ. Điều này làm giới hạn tốc Baud và khoảng cách truyền. c. Bit chẵn lẻ hay Parity bit Đây là bit kiểm tra lỗi trên đường truyền. Thực chất của quá trình kiểm tra lỗi khi truyền dữ liệu là bổ xung thêm dữ liệu được truyền để tìm ra hoặc sửa một số lỗi trong quá trình truyền . Do đó trong chuẩn RS232 sử dụng một kỹ thuật kiểm tra chẵn lẻ. Một bit chẵn lẻ được bổ sung vào dữ liệu được truyền để ch thấy số lượng các bit "1" được gửi trong một khung truyền là chẵn hay lẻ. Một Parity bit chỉ có thể tìm ra một số lẻ các lỗi chả hạn như 1,3,,5,7,9 . Nếu như một bit chẵn được mắc lỗi thì Parity bit sẽ trùng giá trị với trường hợp không mắc lỗi vì thế không phát hiện ra lỗi. Do đó trong kỹ thuật mã hóa lỗi này không được sử dụng trong trường hợp có khả năng một vài bit bị mắc lỗi. Hình 3:Khung truyền thông nối tiếp không đồng bộ 2.Phần cứng truyền nhận RS232 a.Mạch phần cứng 6 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 Hình 4:Mạchtruyền thông nối tiếp với Dspic30f4011 b.Giới thiệu về Module UART trong Dspic: Để sử dụng module UART1(hay UART2), cầnkhởi tạo ít nhất các thanh ghi sau: – U1MODE (hay U2MODE): thanh ghi đặt chế độ giao tiếp,với các tham số chọnvị trí chân giao tiếp,số bit thông tin, số bit parity, và số stop bit – U1STA (hay U2STA): thanh ghi trạng thái, nhưng có chứa một số cờ như UTXEN để cho phép phát ký tự –U1BRG (hay U2BRG): thanh ghi đếm tạo tốc độ baud,với giá trị được tính theo công thức sau: UxBRG = Fcy Baud.16 -1 7 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 với: x là chỉ số của module (x = 1 hay 2) Fcy là tần số thực thi lệnh (=Fosc(tần số xung clock)/4với các dsPIC30F), và Baud là tốc độ baud cần thiết. Nếu muốn sử dụng ngắt, chúng ta cần khởi tạo thêmcờ ngắt,cờ cho phép ngắt, độ ưu tiên ngắt (nếu cần thiết).Cần chú ý là dsPIC chỉ hỗ trợ ngắt khi thu(receive) và ngắt khi phát (transmit) một cách độc lập cho từng module UART. Do đó,lấy ví dụ một chip dsPIC có hai module UART1 và UART2, chip sẽ có 4 vectơ ngắt riêng biệt cho trường hợp thu hay phát của module UART1cũng như thu hay phát của module UART2. Và các cờ ngắt,cờ cho phép ngắt,cũng như các bit thiết lập độ ưu tiên ngắt cũng tồn tại một cách tương ứng cho mỗi vectơ ngắt Khi dùng chế độ phát, bit UTXEN (trong thanh ghi UxSTA) chỉ nên được bật khi đã bật bit UARTEN (trong thanhghi UxMODE) Chuong trinh UART1(Module UART2 tương tự): #define FCY 11059200UL//Tần số thực thi lệnh #define Baudrate 9600 //Tốc độ truyền bit trong 1s #define BRGVAL ((FCY/Baudrate)/16)-1 void Init_UART1(void) //Khởi tạo module UART1 { _U1RXIF = 0; //clear RX interrupt flag _U1TXIF = 0; //clear TX interrupt flag _U1RXIE = 1; //Enable UART Receive interrupt _U1TXIE = 1; //Enable UART Transmit interrupt U1MODE = 0xA400; //Khởi tạo thanh ghi đặt chế độ giao tiếp,Main I/O, 8- bit, no parity, 1 stop bit U1STA = 0x8480; //Khởi tạo thanh ghi trạng thái,bit10=UTXEN cho phép phát ký tự U1BRG = BRGVAL; //Thanh ghi tạo tốc độ Baud,Baudrate=9600 bps, Fcy = 8 MHz U1MODEbits.ALTIO = 1; //Enable chan ALTIO //Chương trinh ngắt UART void _ISR_PSV _U1RXInterrupt(void) 8 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 { i = 0; while(!U1STAbits.URXDA) { asm("nop"); } nhan[i] = 0x00;while (U1STAbits.URXDA) //Cho den khi nhan duoc mot ky tu { *(Buffer++)= U1RXREG; //Doc ky tu da nhan duoc vao temp __delay32(11000); U1TXREG = nhan[i]; //Gửi ký tự nhận được i++; } U1TXREG = so_kt; __delay32(11000); l = xu_ly_font(nhan,hthi,strlen(nhan)); Buffer = &nhan[0]; _T1IE = 1; _U1RXIF = 0; } void __attribute__((interrupt, auto_psv)) _U1TXInterrupt(void) { _U1TXIF = 0; //clear TX interrupt flag while(U1STAbits.UTXBF) {} } c.Cấu tạo của cổng COM DB9: 9 Thiết kế và chế tạo Matrix Led-32x16 hiển thị Tiếng Việt SV:Bùi Ngọc Trang SHSV:20092802 Số chân Mô tả 1 2 3 4 5 6 7 8 9 Data carrier detect (DCD) Received data (RxD) Transmitted data (TxD) Data terminal ready (DTR) Signal ground (GND) Data set ready (DSR) Request to send (RTS) Clear to send (CTS) Ring indicator (RI) Tránh tín hiệu mạng dữ liệu Dữ liệu được nhận Dữ liệu được gửi Đầu dữ liệu sẵn sàng Đất của tín hiệu Dữ liệu sẵn sàng Yêu cầu gửi Xoá để gửi Báo chuông d.Giới thiệu về IC Max232: Chuẩn RS232 được thiết lập trước họ logic TTL rất lâu do vậy điện áp đầu vào và đầu ra của nó không tương thích với mức TTL. Trong RS232 thì mức logic 1 được biểu diển từ điện áp - 3v đến -15v trong khi đó mức 0 thì ứng với điện áp + 3v đến +15v làm cho điện áp - 3v đến + 3v là không xác định. Vì lý do này để kết nối một chuẩn RS232 bất kỳ đến một hệ VĐK thì ta phải sử dụng các bộ biến đổi điện áp (MAX232) để chuyển đổi các mức điện áp RS232 về các mức điện áp TTL sẽ được chấp nhận bởi các chân TxD và RxD của Dspic và ngược lại. Các IC MAX232 nhìn chung được coi như các bộ điều khiển đường truyền. Một điểm mạnh của IC MAX232 là nó dùng điện áp nguồn +5v cùng với điện áp nguồn của Dspic. Nên ta có thể dùng chung 1 nguồn nuôi VĐK và ICMax232 ICMAX232 có hai bộ điều khiển đường truyền để nhận và truyền dữ liệu. Các bộ điều khiển được dùng cho chân TxD được gọi là T1 và T2, cho chân RxD gọi là R1 và R2. Trong nhiều ứng dụng thì chỉ có 1 cặp được dùng. Trong IC MAX232, T2 có gán T2in (chân 10) và T2out (chân 7): +Chân T2in là ở phía TTL và được nối tới chân TxD của bộ vi điều khiển 10 . hiển thị Tiếng Vi t SV:Bùi Ngọc Trang SHSV:20092802 BÁO CÁO VI ĐIỀU KHIỂN DSPIC30F4011 Tên Đề Tài:LED Matrix 16x32 I.Giới thiệu về VĐK Dspic30f4011 1.. -> 255 và gửi xuống vi điều khiển. Tương ứng giá trị mỗi byte (cũng là số thứ tự của ký tự lưu trong bảng font[230][8]), vi điều khiển sẽ nhặt ra 8 word