Xin chào, Khách
Bạn cần phải Đăng ký trước khi đăng bài viết trên diễn đàn.

Tên đang nhập
  

mật khẩu
  





TÌm kiếm diễn đàn

(Tìm kiếm nâng cao)

Thông kê diễn đàn
» Thành viên: 15
» Thành viên mưới nhất: Anhdam99tb
» Chủ đề: 19
» Bài viết: 35

Thống kê đầy đủ

Thành viên Online
Hiên tại có 4 thành viên online.
» 0 Thành viên | 4 Khách

Chủ đề mới nhất
Sử dụng hàm trong vùng ng...
Diễn đàn: STM32
Bài viết mới nhất: nguyenchathung
22-10-2019, 10:42 PM
» Trả lời: 6
» Xem: 36
Giao tiếp LCD 16x2 với mo...
Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton
Bài viết mới nhất: admin
22-10-2019, 10:25 PM
» Trả lời: 0
» Xem: 65
Giới thiệu về Timer 0 / T...
Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton
Bài viết mới nhất: Bitscat
22-10-2019, 07:12 PM
» Trả lời: 2
» Xem: 165
GPIO Nút nhấn
Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton
Bài viết mới nhất: admin
22-10-2019, 04:45 PM
» Trả lời: 0
» Xem: 7
Một chút về VĐK MS51, N76...
Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton
Bài viết mới nhất: Bitscat
21-10-2019, 09:29 PM
» Trả lời: 2
» Xem: 223
GPIO - Blink led
Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton
Bài viết mới nhất: admin
21-10-2019, 04:31 PM
» Trả lời: 1
» Xem: 161
Viết chương trình đầu tiê...
Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton
Bài viết mới nhất: admin
21-10-2019, 03:46 PM
» Trả lời: 0
» Xem: 110
Cài đặt những công cụ cần...
Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton
Bài viết mới nhất: admin
21-10-2019, 12:01 PM
» Trả lời: 0
» Xem: 143
Phần mềm Hung Cuong ISP P...
Diễn đàn: Lập trình ứng dụng PC
Bài viết mới nhất: admin
18-10-2019, 07:54 PM
» Trả lời: 0
» Xem: 60
Mạch nạp VNPro for 89S AV...
Diễn đàn: Mạch nạp vi điều khiển
Bài viết mới nhất: admin
14-10-2019, 05:21 PM
» Trả lời: 0
» Xem: 137

 
  Giao tiếp LCD 16x2 với module I2C LCD
Đăng bởi: admin - 22-10-2019, 10:25 PM - Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton - Không có trả lời

Sau khi đã có thể làm chủ được GPIO và tạo được delay là đã có thể làm được khối việc với con MS51 này rồi.
Ví dụ mình sẽ giao tiếp với LCD 16x2 bằng Module I2C LCD
Mình đính kèm thư viện để mọi người có thể sử dụng luôn và có thể tùy chỉnh theo ý riêng

Các bước để sử dụng thư viện:

- Cấu hình chân GPIO dùng làm I2C trong file myI2C_Pin_Config.h: Cấu hình chân SDA và SCL
- Cấu hình phần cứng Module I2C LCD trong file myI2C_LCD_Config.h: Cấu hình địa chỉ module I2C LCD, thứ tự chân nối
Thứ tự các chân của module I2C LCD nối với LCD, tùy thuộc module I2C LCD tuy nhiên hầu hết để mặc định
- Viết hàm void LcdDelay(void) trong file myI2C_LCD_Delay.c
Tùy thuộc vào VĐK, với MS51 dùng hàm mặc định, hàm này delay cỡ 10us là OK.


* Code ví dụ
   
* Kết quả
   
   



Tập tin đính kèm
.zip   LCD I2C.zip (Kích thước: 55.02 KB / Tải về: 3)
In mục này

Question Sử dụng hàm trong vùng ngắt?
Đăng bởi: nguyenchathung - 22-10-2019, 05:47 PM - Diễn đàn: STM32 - Trả lời (6)

Em xin chào các anh/chị trong forum ạ! Trong quá trình lập trình vdk họ stm32f1 thì em đang gặp khúc mắc nên em rất mong anh/chị có thể giúp em giải đáp khúc mắc này ạ.

Vấn đề em đang gặp như sau:
Em đang lập trình UART với thư viện HAL và nếu sử dụng hàm của thư viện này tại vùng main(main.c) thì không sao, nhưng khi em chuyển hàm này qua vùng ngắt(it.c) ạ! Thì vấn đề bắt đầu nảy sinh, khi đó trình biên dịch báo lỗi error: use of declared identifier 'huart1' ạ! Bây giờ em đang muốn sử dụng hàm của các thư viện khác trong vùng ngắt(it.c) đó thì em phải làm thế nào ạ?

Em rất cảm ơn mọi người đã đọc bài ạ.

In mục này

  GPIO Nút nhấn
Đăng bởi: admin - 22-10-2019, 04:45 PM - Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton - Không có trả lời

Sơ đồ mạch
   
Mình sẽ viết code để khi ấn nút lần 1 thì led sáng, ấn tiếp thì led tắt và lặp đi lặp lại như vậy
Với cách mắc mạch như vậy thì cần cấu hình chân P14 mắc với led là đầu ra, chân P15 mắc với nút nhấn là đầu vào
Muốn bật led thì gán P14 = 1, tắt led thì gán P14 = 0
Nếu công tắc không được nhấn thì P15 có giá trị 1
Nếu công tắc được nhấn thì P15 có giá trị 0
Delay sử dụng timer 0 đã viết ở trước
   



Tập tin đính kèm
.zip   Button.zip (Kích thước: 17.73 KB / Tải về: 0)
In mục này

  Giới thiệu về Timer 0 / Timer 1
Đăng bởi: admin - 22-10-2019, 03:38 PM - Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton - Trả lời (2)

Ở ví dụ trước mình đã viết code Blink led, tạo delay bằng vòng lặp.
Nhưng như vậy khó tính toán thời gian delay.
Mình tiếp tục giới thiệu về Timer / Counter và ứng dụng để tạo Delay chính xác.
Timer / Counter (T/C) về cơ bản là bộ đếm. Nếu được cấu hình để đếm xung bên trong chip thì được gọi là Timer, còn khi được cấu hình đếm xung từ bên ngoài chip thì được gọi là Counter vì vậy gọi chung là Timer / Counter (mình sẽ viết tắt là T/C).
Như đã nói ở trên T/C sẽ đếm xung, mỗi khi nhận được xung thì nó sẽ tăng giá trị chứa lên 1, chỉ đơn giản như vậy thôi. :-)
Sơ qua về T/C 0 và T/C 1 của con MS51, nó khá giống nhau nên mình sẽ nói về T/C 0
- Các chế độ hoạt động:
* Chế độ 0
   
* Chế độ 1
   
* Chế độ 2
   
* Chế độ 3
   
Phân tích một chút ở chế độ 1: (chế độ 0 và chế độ 1 hoạt động rất giống nhau chỉ khác nhau về số bit)
   
* Xung đầu vào bộ đếm:
Có 2 trường hợp tùy thuộc vào bit C/T nếu bit C/T bằng 0 thì lúc này sẽ đếm xung từ trong chip và được gọi là Timer
Nếu bit C/T bằng 1 thì lúc này sẽ đếm xung từ chân T0 (đếm xung từ bên ngoài chip), lúc này gọi là Counter.
Trong trường hợp chế độ Timer thì có 2 tùy chọn:
Nếu T0M = 0 thì xung đầu vào bằng xung hệ thống Fsys / 12
Nếu T1M = 1 thì xung đầu vào sẽ bằng xung hệ thống Fsys
* Timer 0 sẽ đếm khi bit TR0 = 1 và dừng khi TR0 = 0
* Bit GATE: khi bit này = 0 thì Timer 0 sẽ đếm miễn là khi TR0 =  1, bất chấp mức logic tại chân INT0
Khi bit này = 1 thì Timer 0 sẽ chỉ đếm khi TR0 = 1 và chân INT0 ở mức logic 1.
Các thanh ghi
   
   
   
   
   

In mục này

  GPIO - Blink led
Đăng bởi: admin - 21-10-2019, 04:26 PM - Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton - Trả lời (1)

Ở ví dụ đầu tiên đã tạo ra file HEX tuy nhiên chương trình chưa làm gì cả.
Ví dụ này mình sẽ viết cách cấu hình chân IO để điều khiển đầu ra là 1 con led
Schematic
   
- Cấu hình chân làm đầu ra thông qua các thanh ghi PnM1.X và PnM2.X
   
Như trong hình: có 4 cách để cấu hình
+ PnM1.X = 0 và PnM2.X = 0: chân được cấu hình Quasi-Bidirectional : tương thích với 8051 cũ
+ PnM1.X = 0 và PnM2.X = 1: chân được cấu hình đầu ra Push - Pull, cung cấp dòng ra lớn hơn để có thể điều khiển trực tiếp led
+ PnM1.X = 1 và PnM2.X = 0: Chân được cấu hình thành đầu vào Input
+ PnM1.X = 1 và PnM2.X = 1: Chân được cấu hình kiểu Open Drain (thích hợp cho điểu khiển dạng I2C)
Ở đây led được gắn với chân P1.4 vì vậy cần cấu hình P1M1.4 = 0 và P1M2.4 = 1
- Muốn chân đầu ra ở mức 0 thì ghi 0 vào bit Pn.X, muốn chân đầu ra ở mức 1 thì ghi 1 vào bit Pn.X
Ở đây là P14
* Sử dụng lại Project mẫu ở trước
Gõ vào đoạn code

Code:
#include <MS51.H>

void delay(void);

void delay(void)
{
long i;

for (i = 0; i < 50000; ++i) {

}
}

void main(void)
{

P1M1 &= ~(1 << 4);
P1M2 |= (1 << 4);

while (1) {
P14 = 1;
delay();
P14 = 0;
delay();
}
}
   
Biên dịch xong và nạp code vào chip
   
sẽ thấy led nhấp nháy
Đo tại chân P1.4 bằng Logic Analyzer
   

Toàn bộ Project đính kèm



Tập tin đính kèm
.zip   Blink.zip (Kích thước: 16.82 KB / Tải về: 2)
In mục này

  Viết chương trình đầu tiên
Đăng bởi: admin - 21-10-2019, 03:46 PM - Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton - Không có trả lời

* Tạo mới Project với Keil C
Khởi động Keil C, chọn Project \ New uVision Project, chọn đường dẫn lưu Project và đặt tên Project ví dụ Template
   
Cửa sổ chọn Chip chọn như hình
Chọn Nuvoton 8051 Devices
   
Cửa sổ hiện ra hỏi có copy file Startup chọn No
Ấn vào nút để tạo file mới
   
Ấn vào nút Save hoặc ấn Ctrl + S để lưu file đặt tên main.c
   
Bấm đúp vào Source Group 1 ở bên trái, tìm đến file main.c đã lưu ở trên để thêm file main.c vào Project
Xong ấn vào Close
   
Xong, gõ vào đoạn code sau

Code:
void main(void)
{

}
   
Vào Options for Target để chọn sinh ra file hex...
Đầu tiên ở Tab Target chọn tick Use On-chip ROM và Use On-chip XRAM
   
Ở Tab Output chọn Create Hex file sau đó OK
   
Chọn Build hoặc ấn phím F7 để biên dịch
   
Kiểm tra trong thư mục Objects thấy đã tạo ra file Hex, file này dùng để nạp cho VĐK
   

In mục này

  Cài đặt những công cụ cần thiết để lập trình
Đăng bởi: admin - 21-10-2019, 12:01 PM - Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton - Không có trả lời

Con này là một con 8051 nên để lập trình có thể dùng bất kỳ trình biên dịch nào hỗ trợ 8051 là có thể viết code được (Tất nhiên nếu ai viết code bằng Asm hay ngôn ngữ khác thì dùng trình biên dịch khác, vì mình code bằng C nên mình viết ở đây là C).
Một số có thể kể đến là Keil C, SDCC... tuy nhiên để đơn giản nhất thì mình sẽ viết cách dùng Keil C.
Có thể tải Keil C ở đây
https://drive.google.com/open?id=1nns-sV...4lzpvSg8_W
Hoặc bản mới nhất tại trang chủ
https://www.keil.com/
- Sau khi cài Keil C thì cần cài thêm Nu-Link Keil Driver để Keil C hỗ trợ chip MS51
https://drive.google.com/open?id=1IIMwbu...9gM9EZuODC
- Để có thể nạp chương trình cho Chip thì cần có mạch nạp.
Lựa chọn tốt nhất là dùng mạch nạp Nu-Link: Vừa hỗ trợ nạp code, vừa có thể debug... có thể tích hợp thao tác trực tiếp trên Keil C
Một lựa chọn giá rẻ là mạch nạp do mình làm
Giá 50K
http://ngohungcuong.com/showthread.php?tid=3
Giao diện chương trình Keil C: Lưu ý khi tải Keil C thì tải đúng bản Keil C 8051
   

In mục này

  Một chút về VĐK MS51, N76E003 của Nuvoton
Đăng bởi: admin - 21-10-2019, 10:42 AM - Diễn đàn: N76E003 - MS51... vi điều khiển 8051 của Nuvoton - Trả lời (2)

Mình thấy mấy con này giá khá rẻ và dùng thấy cũng ổn.
Con N76E003AT20 là sản phẩm có trước, sau này được thay thế bằng con MS51FB9AE.
Ở đây mình viết về con MS51 vì nó mới hơn nhưng đối với con N76E003 cũng y hệt như vậy.
Thậm chí con N76E003 và con MS51 thì con MS51 còn có thể dùng chung file HEX mà không cần dịch lại.
- CPU 8051: tần số hoạt động tối đa 24MHz (đối với N76E003 tối đa là 16MHz).
- Dải điện áp hoạt động từ 2.4V đến 5.5V.
- Nhiệt độ hoạt động -40 đến 105 độ C.
- Bộ nhớ Flash 16KB (đối với N76E003 là 18KB).
- RAM 256 byte + 1KB XRAM (đối với N76E003 là 256 Byte + 768 Byte XRAM).
- Chân vào ra: 18 chân trong đó 17 chân GPIO và 1 chân chỉ có thể cấu hình đầu vào.
- Timer: 16 bit Timer 0 và Timer 1 tương thích với 8051.
- 16 bit Timer 2: với 3 kênh Input Capture.
- Timer 3: 16 bit Auto reload có thể được sử dụng tạo baud rate cho UART.
- PWM 16 bit.
- 2 bộ UART: UART0 và UART1, chân TxD và RxD của UART có thể cấu hình đổi cho nhau.
- SPI: tối đa 8Mbps.
- I2C tối đa 400Kbps
- ADC 12 bit tốc độ tối đa 500Ksps
   

In mục này

  Phần mềm Hung Cuong ISP Prog v6
Đăng bởi: admin - 18-10-2019, 07:54 PM - Diễn đàn: Lập trình ứng dụng PC - Không có trả lời

Phần mềm mạch nạp
   
Link tải
https://drive.google.com/open?id=1riahXZ...qaf7dEQ59k

In mục này

  Mạch nạp VNPro for 89S AVR
Đăng bởi: admin - 14-10-2019, 05:21 PM - Diễn đàn: Mạch nạp vi điều khiển - Không có trả lời

Mạch nạp VN Pro for 89S AVR
   
   

* Tính năng:
-Hỗ trợ nạp VĐK 89S, AVR và N76E003AT20, dòng MS51 của Nuvoton, C8051F và EFM8 của Silabs
-Chân nạp tương thích với mạch nạp USBISP
-Sử dụng được với phần mềm ProgISP
-Sử dụng USBHID cắm là chạy, không cần bất cứ cài đặt Driver gì.
Mạch có thể sử dụng phần mềm ProgISP hoặc ISP Prog v6
(Ưu tiên dùng phần mềm ISP Prog v6)
- Phần mềm ProgISP
- Phần mềm ISP Prog v6
*******************
Trước ngày 14/10/2019 mạch được khuyến khích dùng phần mềm ProgISP khi nạp 89S AVR và dùng phần mềm MultiPro khi nạp N76E003AT20, cần chuyển đổi Firmware khi sử dụng 2 phần mềm ProgISP và MultiPro.
Tuy nhiên từ ngày 14/10/2019 trở đi mạch đã được nâng cấp cả Firmware và Phần mềm.
Từ thời điểm này trở về sau mạch được khuyến khích chỉ sử dụng phần mềm Hung Cuong ISP Prog v6 (vẫn có thể sử dụng phần mềm ProgISP, vì phần mềm ISP Prog v6 và ProgISP sử dụng cùng một Firmware nên không cần chuyển đổi Firmware).
Các mạch nạp đang sử dụng Firmware cũ cần cập nhật lại Firmware lên phiên bản mới nhất
Công cụ cập nhật Firmware có trong thư mục Firmware của phần mềm ISP Prog v6
- Chạy phần mềm cập nhật Firmware
- Ấn Connect mạch sẽ vào chế độ cập nhật Firmware
- Ấn Update và chờ cập nhật xong.
   
Giao diện phần mềm nạp ISP Prog v6
   

In mục này