PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 30-05-2006, 12:31 AM   #1
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi truongthinh
yêu cầu thực tế của mình là như thế này: mình làm bộ chuyển đổi từ song song sang nối tiếp và một bộ chuyển đổi từ nối tiếp sang song song(PIC 16F84A). cái song song sang nối tiếp thì dễ rồi. còn cái nối tiếp sang song song Khi đã dịch được thông tin cần thiết vào một ô nhớ nào đó của chip thì đương nhiên nó đã ở dạng song song rồi, bạn có thể xuất nó ra port B chẳng hạn. ví dụ : mình chuyển qua 3 bit 001 làm sao để bên thu biết là có bít thứ nhất chuyển qua trong khi nó là o kế đến là bit thứ hai thứ 3. (3 bit đều độc lập)
Mong các bạn giúp giùm( rất gấp)
thanks
Thông thường người ta dùng một chuẩn giao tiếp nối tiếp nào đó để thực hiện công việc trong thực tế. Có nhiều chuẩn khác nhau đã được định nghĩa, nhưng nói chung người ta truyền một lần 7 hay 8 bit, không có chuẩn nào truyền theo kiểu bạn đang đề cập. Thực tế bạn đang làm gì thì nên trình bày rõ hơn.

Lấy ví dụ, nếu dùng chuẩn RS232 thì các đầu thu và phát đều tuân thủ theo chuẩn, do đó dữ liệu sẽ được truyền và nhận theo từng block 7 hay 8 bit, có các bit Start và Stop dùng để phát hiện việc truyền và thực hiện việc nhận. Lẽ đương nhiên không có chuẩn nào yêu cầu các bit được truyền là không độc lập. Một lần nữa, tôi cho rằng bạn nên mô tả rõ ràng hơn vấn đề bạn đang muốn làm. Với những gì mà bạn đang trình bày thì tôi nghĩ rằng bạn chưa hiểu lắm về giao tiếp nối tiếp.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-05-2006, 05:35 PM   #2
truongthinh
Nhập môn đệ tử
 
Tham gia ngày: Apr 2006
Bài gửi: 6
:
Trích:
Nguyên văn bởi namqn
Thông thường người ta dùng một chuẩn giao tiếp nối tiếp nào đó để thực hiện công việc trong thực tế. Có nhiều chuẩn khác nhau đã được định nghĩa, nhưng nói chung người ta truyền một lần 7 hay 8 bit, không có chuẩn nào truyền theo kiểu bạn đang đề cập. Thực tế bạn đang làm gì thì nên trình bày rõ hơn.

Lấy ví dụ, nếu dùng chuẩn RS232 thì các đầu thu và phát đều tuân thủ theo chuẩn, do đó dữ liệu sẽ được truyền và nhận theo từng block 7 hay 8 bit, có các bit Start và Stop dùng để phát hiện việc truyền và thực hiện việc nhận. Lẽ đương nhiên không có chuẩn nào yêu cầu các bit được truyền là không độc lập. Một lần nữa, tôi cho rằng bạn nên mô tả rõ ràng hơn vấn đề bạn đang muốn làm. Với những gì mà bạn đang trình bày thì tôi nghĩ rằng bạn chưa hiểu lắm về giao tiếp nối tiếp.

Thân,
Thực tế phần em làm như sau:
8 bit song song ở đầu vào ( có thể là các công tắc) được chuyển đổi thành nối tiếp để đưa qua một mạch phát và thu (điều chế ASK) sau đó nhận nối tiếp và chuyển lại thành song song( đèn led chẳn hạn)
Phần giao tiếp nối tiếp và vi điều khiển em chưa rành lắm chỉ mới vọc đây thôi.
phần thu phát mình ok rồi còn phần chuyển đổi thì em còn bị chút khó khăn vì không có ai hướng dẫn
Mong anh giúp đở em phần này
thanks

thay đổi nội dung bởi: truongthinh, 31-05-2006 lúc 05:41 PM.
truongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-05-2006, 06:21 PM   #3
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn nên tìm hiểu xem mạch giải điều chế ASK có thể truyền tín hiệu theo chuẩn nào, sau đó tìm hiểu xem việc thực hiện chuẩn đó trên vi điều khiển có khả thi không, và nếu có nhiều chuẩn thì chọn chuẩn nào là thích hợp nhất.

PIC16F84A hiện nay được xem là lỗi thời, nó không tích hợp nhiều tính năng và ngoại vi lắm. Con PIC16F628A được hãng Microchip đưa ra để thay thế cho PIC16F84A, hoàn toàn tương thích với PIC16F84A và có module USART để thực hiện giao tiếp nối tiếp theo chuẩn RS232. Do đó, việc chuyển đổi từ nối tiếp sang song song được thực hiện bằng phần cứng bên trong module USART, bạn sẽ không phải băn khoăn về điều này khi sử dụng nó.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 13-06-2006 lúc 09:23 PM. Lý do: đánh sai một chữ
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2006, 09:54 PM   #4
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
à... tại em chưa đọc rõ câu hỏi của bạn truongthinh
đặt trường hợp em muốn giao tiếp song song mà không dùng module UART có sẵn, ví dụ như giao tiếp để lấy data trên RTC DS12887, em có thể mô phỏng bằng phần mềm? theo nguyên tắc anh nói, cứ sau nửa giây(do DS12887 gây ngắt) thì em lại lấy mẫu dữ liệu tại từng chân một lần, sau đó đem nó vào vùng nhớ nào đó rồi xử lý...
À, nhân nói về giao tiếp, vẫn là mô phỏng bằng phần mềm, em có thể giả lập I2C bằng hai chân của PIC, cho dù P16F84A không hỗ trợ giao tiếp I2C (em đọc được ở tài liệu gì ấy, hình như mấy anh cũng chia sẻ trên diễn đàn này rồi, em không nhớ tên...)
nếu các bạn không tìm được, hôm sau online mình sẽ gửi lên...
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2006, 10:20 PM   #5
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
DS12887 giao tiếp bằng 8-bit, dùng chung cho các tín hiệu địa chỉ và dữ liệu, để giao tiếp với DS12887 chúng ta không cần module UART (module này cung cấp chức năng giao tiếp nối tiếp).

Một ví dụ có liên quan đến việc chuyển đổi dữ liệu giữa dạng nối tiếp và song song có thể là một hệ thống đọc/đặt thông tin về thời gian thực từ xa, trong đó đầu cuối dùng để hiển thị cũng như đặt thông tin về thời gian nằm cách xa chip DS12887. Khi đó người ta có thể muốn dùng giao tiếp nối tiếp để truyền thông tin qua lại giữa đầu cuối và chip đồng hồ thời gian thực. Và chúng ta có thể đặt một vi mạch thông minh (ví dụ như PIC) để thực hiện việc chuyển đổi giữa nối tiếp và song song, nằm gần chip RTC. Từ đó dẫn đến vấn đề mà bạn truongthinh đã hỏi.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-05-2006, 11:59 AM   #6
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
mình có gửi tài liệu mà mình nói bên [tài liệu tiếng Anh] ấy, cho khỏi lộn xộn ấy mà, đó là tài liệu"The quintessential PIC Microcontroller", có thể các bạn đã có rồi nhưng dù sao mình vẫn gửi lên.
Cảm ơn anh Nam nhé !
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-08-2006, 07:20 PM   #7
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
mình đoán là trong đoạn code ghi dữ liệu lên LCD của bạn có đoạn mã tạo trễ nên mỗi khi gửi một ký tự nó trễ một chút.
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-08-2006, 09:01 AM   #8
chuchinh
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 23
:
Em đã đọc phần truyền thông nối tiếp nhưng chưa kịp làm vì có một số lỗi khi thực hiện phím và hiển thị.
Mục đích của em là ban đầu cho hiển thị hai dòng ký tự, sau khi ấn phím key0 thì nó sẽ xóa hai dòng ban đầu và ghi lên đó hai dòng mới. Em dùng kỹ thuật bảng để truy xuất các dòng ký tự.
Tuy nhiên nếu hai dòng ban đầu của em dài quá (mỗi dòng 19 ký tự chẳng hạn) thì sau khi hiển thị ban đầu xong PIC sẽ tự khởi động lại và liên tục như vậy.
Khi cho dòng ban đầu ngắn đi, thì hiện tượng tương tự xảy ra khi ấn phím. Sau khi ấn, màn hình xóa hai dòng ban đầu và ghi hai dòng mới, sau khi ghi được một số ký tự thì PIC khởi động lại và hiển thị lại hai dòng ban đầu. Nếu cho hai dòng sau ngắn đi thì không khởi động lại.
Đây liệu có phải là hiện tượng tràn trang không anh nhỉ?

Lỗi thứ hai: trong chương trình hiển thị của em dùng hàm trễ (các giá trị không chính xác do em thay đổi các giá trị tham số ở trong để thử). Khi hiển thị, các ký tự lần lượt hiện lên rất chậm. Em đã thử giảm thời gian trễ nhưng khi đó hoặc là hiển thị thiếu ký tự, hoặc là hiển thị sai chỗ hoặc sai từ. Không hiểu lý do gì.

Nếu có thời gian anh xem hộ em lệnh Retlw 0x00 ở sau nhãn NEXTMESSAGE30 sẽ trả về đâu nhé, em muốn nó thoát khỏi KEY1_0 nhưng không biết có được không?

Em gửi kèm đây sơ đồ nguyên lý vẽ bằng Protel, ảnh sơ đồ nguyên lý, và chương trình của em, anh xem hộ nhé!
Hình Kèm Theo
File Type: bmp TEST16F828A.bmp (254.9 KB, 36 lần tải)
File Kèm Theo
File Type: rar Mach test Pic16f828a.rar (5.5 KB, 43 lần tải)
File Type: txt LCD10.txt (9.0 KB, 29 lần tải)
chuchinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-08-2006, 06:33 PM   #9
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
Trích:
Đây liệu có phải là hiện tượng tràn trang không anh nhỉ?
chương trình của bạn chưa đủ làm tràn trang chương trình đâu, bạn có thể kiểm tra trên file .lst
Trích:
Lỗi thứ hai: trong chương trình hiển thị của em dùng hàm trễ (các giá trị không chính xác do em thay đổi các giá trị tham số ở trong để thử). Khi hiển thị, các ký tự lần lượt hiện lên rất chậm. Em đã thử giảm thời gian trễ nhưng khi đó hoặc là hiển thị thiếu ký tự, hoặc là hiển thị sai chỗ hoặc sai từ. Không hiểu lý do gì.
bạn kiểm tra bit cờ bận của LCD xem sao, sẽ chủ động hơn nhiều vì mỗi LCD có thời gian thực thi lệnh khác nhau, bạn cũng nên có một khoảng thời gian delay chờ LCD khởi động
MOVLW H'28'
CALL WRITE_COMMAND
CALL DELAY
MOVLW H'28'
CALL WRITE_COMMAND
bạn cần thêm lệnh dịch màn hình và con trỏ, trước khi hiển thị thì đưa địa chỉ cần hiển thị để WRITE_COMMAND trước rồi WRITE_DATA sau thì vị trí chữ hiển thị sẽ đúng thôi.
Trích:
Retlw 0x00 ở sau nhãn NEXTMESSAGE30 sẽ trả về đâu
chỗ nào có lệnh CALL NEXTMESSAGE30 thì trả về chỗ đó chứ nhỉ?
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-08-2006, 07:13 PM   #10
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Chương trình của em chỉ có nhãn NEXTMESSAGE3, thuộc chương trình con HIEN_THI_BAN_DAU, chương trình con này được gọi từ chương trình chính, ngay trước vòng lặp chính. Do đó, lệnh RETLW đó sẽ trở về ngay trước vòng lặp chính.

Các điểm kia newuser đã nói rồi, em cần kiểm tra lại thuật toán của chương trình khi xử lý phím nhấn và hiển thị.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-04-2007, 01:58 PM   #11
kysikodau
Nhập môn đệ tử
 
kysikodau's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 7
:
các bác ui, em tìm khắp các luồng mà ko thấy chỗ nào nói chi tiết về cái timer cả? nhất là cái ví dụ làm led nhấp nháy ấy, ko biết làm bằng timer ntn, mong mọi người giúp đỡ, em ko biết nhiều lắm nên các bác cứ nói chi tiết vào
kysikodau vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-04-2007, 02:06 PM   #12
kysikodau
Nhập môn đệ tử
 
kysikodau's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 7
:
tiện thể , cho em xin link thư viện orcad luon
kysikodau vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-03-2009, 05:55 PM   #13
nguyenluong
Đệ tử 2 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 27
:
Các bạn nào nghiên cứu về CCP trong PIC chưa vậy?
nguyenluong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-07-2010, 09:12 AM   #14
phamhiepst
Nhập môn đệ tử
 
Tham gia ngày: Jun 2010
Bài gửi: 5
:
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL3,CPUDIV1,V REGEN
dòng này dùng làm gì vậy các đại ca?
phamhiepst vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-08-2010, 08:54 PM   #15
nhan1968
Nhập môn đệ tử
 
Tham gia ngày: Aug 2010
Bài gửi: 2
:
Xin chào tất cả các anh chị em trong diển đàn, năm nay tôi đã ngoài 40 tuổi, ngày xưa đi học thì vi điều khiển chưa có phát triển. Nay đi làm đụng chạm rất nhiều nhưng kiến thức có hạng biết làm sao. Nhưng tính tò mò tìm hiểu thì không thiếu, thấy các bạn trẻ ngày nay giỏi quá thật đáng khâm phục.
Nay các bạn cho mình hỏi nhé: muốn học tốt vi điều khiển nên bắt đầu từ đâu, tài liệu nào hướng dẫn, cách học như thế nào để đạt kết quả tốt;
các bạn có thể chỉ giáo giúp cho mình;
Địa chỉ liên lạc: anhduc1996@gmail.com
Chúc các bạn sức khoảe - xin chân thành cám ơn
nhan1968 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Cho mình hỏi cách tạo xung mV hoặc microvon trungnnd PIC - Thiết kế và Ứng dụng 1 22-03-2013 02:30 PM


Múi giờ GMT. Hiện tại là 11:34 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam