PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 04-03-2007, 09:29 AM   #136
khangcodt
Đệ tử 2 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 27
:
Question Dùng LCD và ngắt

Trích:
Nguyên văn bởi nhh View Post
Có hai cách lập trình cho LCD: dùng 8bit interface (đơn giản) hoặc 4bit interface (phức tạp hơn)

1.8bit interface

2.4bit interface

Sử dụng 4 chân D4 - D7 (hoặc D0-D3 <- ít dùng) để truyền thông tin, dữ liệu đến LCD.
- Để điều khiển LCD (Chọn chế độ LCD, bật/tắt hiển thị, bật/tắt/nhấp nháy/di chuyển con trỏ,...): Nhập giá trị tương ứng vào D0-D7,lấy giá trị 4bit cao D4-D7 rồi gởi lệnh yêu cầu LCD thực thi lệnh điều khiển, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?).Tiếp tục, gởi 4bit thấp D0-D3 rồi gởi lệnh yêu cầu LCD thực thi lệnh điều khiển, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?)

Nếu trong ứng dụng sử dụng ngắt ngoài thì có thể chuyển sang nối với PORTD hoặc tùy thích.
Hôm nay rãnh rỗi Pót hơi nhiều...!!!

Trước hết xin lỗi bác NHH vì cắt dán bài của bác.
Sau đó cảm ơn bác vì em tin bác sẽ trả lời cho em bài này....(Hì hì...!!!)

Nếu sài LCD (theo kiểu gì cũng vậy) thì đều mất toi PortB, hay chính xác hơn là mất hết ngắt ngoài trên PortB. (Nếu sử dụng PIC ít chân thì hết ngắt ngoài...Phí quá!!!). May mà bác có nhắc đến điều này ở cuối bài.
Bác thương thì thương cho chót, bác bày luôn cho anh em cách sử dụng LCD trên các port khác, chẳng hạn portA (kết hợp B1-B3 của portB), portC,D...
Nội lực của em còn đuối, mặc dù đã thử tìm hiểu cấu hình kết nối với LCD trong driver 'LCD.c' nhưng "em chẳng biết, em chẳng thấy...Ở bên người ấy..."

Mong bác chỉ giáo giúp.
Thanks. Thanks. Thanks... And only know to say "thanks"!!!
khangcodt vẫn chưa có mặt trong diễn đàn  
Old 05-03-2007, 03:23 PM   #137
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Bạn muốn kết nối chân LCD với pic theo kiểu nào cũng được, nhưng ko ai làm như vậy cả, lí do:

- Viết code khó, vì mỗi lần xuất dữ liệu điều khiển hay hiển thị đều có mã lệnh riêng, bạn kết nối lộn xộn dẫn đến khó lập trình và ko cơ động.
- Các chân của pic thường được kéo ra ngoài theo từng port. Nếu nối lộn xộn, ko thẩm mỹ.

Bạn muốn nối theo ý bạn, cứ theo nguyên lí hoạt động của LCD thôi. Bạn xem khi nào xuất lệnh điều khiển, khi nào xuất lệnh hiển thị,...kết hợp với thiết kế của bạn mà viết code.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 05-03-2007, 08:11 PM   #138
vdt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 15
:
Trích:
Nguyên văn bởi khangcodt View Post
Hôm nay rãnh rỗi Pót hơi nhiều...!!!

Trước hết xin lỗi bác NHH vì cắt dán bài của bác.
Sau đó cảm ơn bác vì em tin bác sẽ trả lời cho em bài này....(Hì hì...!!!)

Nếu sài LCD (theo kiểu gì cũng vậy) thì đều mất toi PortB, hay chính xác hơn là mất hết ngắt ngoài trên PortB. (Nếu sử dụng PIC ít chân thì hết ngắt ngoài...Phí quá!!!). May mà bác có nhắc đến điều này ở cuối bài.
Bác thương thì thương cho chót, bác bày luôn cho anh em cách sử dụng LCD trên các port khác, chẳng hạn portA (kết hợp B1-B3 của portB), portC,D...
Nội lực của em còn đuối, mặc dù đã thử tìm hiểu cấu hình kết nối với LCD trong driver 'LCD.c' nhưng "em chẳng biết, em chẳng thấy...Ở bên người ấy..."

Mong bác chỉ giáo giúp.
Thanks. Thanks. Thanks... And only know to say "thanks"!!!
Đúng như NHH đã nói, k0 ai làm như bạn đâu. Nếu bạn định dùng Port nào để đ/k LCD thì bạn nên sử dụng nguyên Port đó nhé, như vậy vừa dễ lập trình, vừa dễ trong khi làm mạch, lại dễ dàng hơn trong việc kiểm soát lỗi nữa, tóm lại là nó thực tế hơn bạn ạ.
Còn việc thay vì sử dụng Port B, ta đổi sang dùng port khác thì quá dễ đúng không bạn, chắc không cần phải nói ra ở đây nhé. Bạn nên dung luôn các driver của CCS C cho dễ (ví dụ LCD420.c), sau đó có thể sửa đi đôi chút cho phù hợp với nhu cầu thực tế của bạn, ví dụ như bạn có thể tận dụng chân thiết lập chế độ đọc dữ liệu từ LCD xuống pic (vì k0 có nhu cầu đọc từ LCD xuống PIC) để làm việc khác.
Chúc bạn thành công
vdt vẫn chưa có mặt trong diễn đàn  
Old 06-03-2007, 09:00 AM   #139
hungnp
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 15
:
Chào bạn khangcodt,

Bạn chưa đọc kỹ chương trình của mình thì phải. Sẽ không có trường hợp ngắt xẩy ra mà không thực hiện công việc mà bạn mong muốn. Có chăng thì nó chậm hơn so với khi để công việc trong ngắt một chút. thời gian này không đáng kể chỉ khoảng vài 2ms. cái này không ảnh hưởng gì phải không?

Tại sao mình lại bảo không có chuyện như bạn nói.
Trong chương trình phục vụ ngắt mình đã sử dụng một bit 'bit_Timer0_Status', bit này có mục đích khi có ngắt thì bật nó lên để báo cho hàm main biết đã có ngắt xẩy ra. và kể cả khi hàm main đang làm những gì, ở đâu thì khi gặp lệnh if(bit_Timer0_Status) thì nó thực hiện công việc mong muốn. và khi thực hiện công việc này xong phải xóa bit này để dùng cho lần sau.
hungnp vẫn chưa có mặt trong diễn đàn  
Old 06-03-2007, 12:34 PM   #140
khangcodt
Đệ tử 2 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 27
:
Cám ơn bạn hungnp đã quan tâm.
Như mình đã nói nếu viết theo cách của bạn thì gần như chắc chắn sẽ không thực hiện được hàm ngắt theo mong muốn. Đã đành khi timer1 báo cho(bit_Timer0_Status) =1 (timer đã ngắt), nhưng có thể nói chắc chắn rằng khi chương trình đang kiểm tra 'if(bit_timer0_status)' thì timer chưa ngắt vì nó kiểm tra ngay bắt đầu hàm main. Sau khi đã kiểm tra như vậy rồi thì chương trình có quay lại để tiếp tục kiểm tra đâu mà gọi hàm 'ngắt phụ' như bạn viêt.

Nếu bạn không tin thì hãy lập thử một chương trình đơn giản sử dụng ngắt theo cách bạn viết và mô phỏng thử trên Proteus. (việc này đơn giản và không tốn nhiều thời gian,chắc không cần nói thêm!)

Tiện đây mình nói với bạn về các phương pháp trao đổi dữ liệu nói chung. Có 3 phương pháp chủ yếu là pp thăm dò (polling), pp ngắt (interrupt) và pp trao đổi trực tiếp (pp thú ba mình không nhớ rõ lắm). Làm như cách của bạn chính là chuyển từ pp ngắt sang pp thăm dò.

OKie???
__________
PS: maybe contact me at email:khangcodt@yahoo.com
khangcodt vẫn chưa có mặt trong diễn đàn  
Old 06-03-2007, 04:20 PM   #141
hungnp
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 15
:
Chào khangcodt,

Hóa ra bạn bảo mình là không cho cái if của mình vào trong cái while(true) của bạn. Thật ra cái đấy mình chỉ viết thí dụ thôi. Còn nếu bạn muốn sử dụng thì bạn phải tự làm thêm. Vì mình nghĩ trong một firmware cho vi điều khiển không có cái nào không có lệnh while(true){} cả. Còn nếu đọc đến đây mà bạn vẫn khăng khăng nó không thực hiện được ngắt thì... mình cũng bó tay rồi. Nếu cần mình sẽ cho bạn xem một chương trình của mình, mình đã viết và thành phẩm. Phải nói nó chạy phe phé.

Và cái thứ 2 mình muốn nói thêm. Mình chỉ đưa ra những phương án như trên cho bạn, để bạn tham khảo thôi chứ không phải hay ho gì. nên bạn không cần thiết phải so sánh nó với 3 cái mà bạn nói. Nói thật mình chả hiểu đếch gì về mấy cái đấy cả... hê hê.

Và thêm nữa. Nếu bạn có một sáng kiển nào hay hơn cho vấn đề của bạn thì mong được học hỏi. Thanks.
hungnp vẫn chưa có mặt trong diễn đàn  
Old 07-03-2007, 08:47 PM   #142
PIC_Phan
Đệ tử 1 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 24
:
Các bác cho em hỏi, Em dùng CCS C 4.014 có mục PROGRAMING A CHIP trong đó có tùy chọn ICD (enable) và MACHX (disable).Em không hiểu, nếu ta chọn ICD thì nạp cho PIC bằng mạch nạp theo chuẩn nào? Chẳng lẽ nó là mạch deburg? Trước giờ em chỉ dịch ra file hex sau đó dùng ic-prog nạp cho chip, nay hỏi để tăng vốn kiến thức 1 tẹo, mong các bác chỉ giúp.
(Xin lỗi trước nếu như vấn đề trên cũ rích và đặt sai chỗ)
PIC_Phan vẫn chưa có mặt trong diễn đàn  
Old 08-03-2007, 02:58 AM   #143
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 PIC_Phan View Post
Các bác cho em hỏi, Em dùng CCS C 4.014 có mục PROGRAMING A CHIP trong đó có tùy chọn ICD (enable) và MACHX (disable).Em không hiểu, nếu ta chọn ICD thì nạp cho PIC bằng mạch nạp theo chuẩn nào? Chẳng lẽ nó là mạch deburg? Trước giờ em chỉ dịch ra file hex sau đó dùng ic-prog nạp cho chip, nay hỏi để tăng vốn kiến thức 1 tẹo, mong các bác chỉ giúp.
(Xin lỗi trước nếu như vấn đề trên cũ rích và đặt sai chỗ)
Hãng CCS có một mạch nạp/debug gọi tên là ICD, tương tự như ICD 2 của Microchip, nhưng hai loại này không tương thích với nhau. ICD của CCS cũng có cổng nối tiếp và USB, dùng giao thức riêng của CCS.

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  
Old 08-03-2007, 02:55 PM   #144
PIC_Phan
Đệ tử 1 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 24
:
Cảm ơn bác namqn đã trả lời.Theo bác nói,em hiểu,nếu muốn nạp thẳng bằng CCS C thì ta phải dùng mạch của CCS C.Được, vừa biết vụ này thì tìm hiểu cho kĩ luôn.
Một lần nữa cám ơn bác namqn
PIC_Phan vẫn chưa có mặt trong diễn đàn  
Old 08-03-2007, 09:42 PM   #145
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 PIC_Phan View Post
Cảm ơn bác namqn đã trả lời.Theo bác nói,em hiểu,nếu muốn nạp thẳng bằng CCS C thì ta phải dùng mạch của CCS C.Được, vừa biết vụ này thì tìm hiểu cho kĩ luôn.
Một lần nữa cám ơn bác namqn
Bạn có thể đọc thêm về ICD của CCS ở đây:
http://www.ccsinfo.com/content.php?page=ICD

CCS cũng có 1 mạch nạp gọi là MachX.

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  
Old 12-03-2007, 08:55 PM   #146
manofpic
Nhập môn đệ tử
 
Tham gia ngày: Mar 2007
Bài gửi: 2
:
eo ôi! Trang này cũng toàn bài ví dụ hay! Em cảm ơn các admin, THANKS
manofpic vẫn chưa có mặt trong diễn đàn  
Old 14-03-2007, 03:03 PM   #147
fdv
Nhập môn đệ tử
 
Tham gia ngày: Jan 2007
Bài gửi: 8
:
cho mình hỏi nguồn 4,5 v pic có chạy được không
mình không tài nào tạo được nguồn 5v từ con 7805 được hết
Thanks nhiều
__________________
không có việc gì là lớn lao cả khi ta đã hoàn thành tốt việc nhỏ
fdv vẫn chưa có mặt trong diễn đàn  
Old 14-03-2007, 06:02 PM   #148
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
chắc bạn nói trừ hao thôi chứ thường thì áp sau 7805 khoảng 4,75V chạy tốt không vấn đề gì cả
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________
_ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _
. . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . .
thaithienanh vẫn chưa có mặt trong diễn đàn  
Old 15-03-2007, 04:33 PM   #149
fdv
Nhập môn đệ tử
 
Tham gia ngày: Jan 2007
Bài gửi: 8
:
mình mới hoc pic mình đang viết chương trình input output cho con 16f877a
chuong trinh mình viết như thế này không biết đúng không mà nó không chạy được

Code:
#include<16F877A.h>
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=10000000)
#define SRAM_SCL PIN_C3
#define SRAM_SDA PIN_C4
#USE RS232(BAUD=9600,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7,BITS=9)
main()
{
/*  setup_adc_ports(AN0_AN1_AN3);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);

   setup_ccp1(CCP_CAPTURE_FE);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);

   enable_interrupts(INT_CCP1);
   enable_interrupts(INT_EXT1);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);*/

while(1)
{
IF(input(pin_a0))
{
output_low(pin_b0);
}
else
{
output_high(pin_b0);
}
}//while loop
}
chương trình nạp vào pic được nhưng lại không chạy được ,
mình muốn nhập tín hiệu vào port a,xuất ra portb ,không biết bị sai chỗ nào nữa
mong các bạn xem giúp mình
các bạn có thể cho mình một vài ví dụ về vấn đề này không
cám ơn nhiều
__________________
không có việc gì là lớn lao cả khi ta đã hoàn thành tốt việc nhỏ

thay đổi nội dung bởi: namqn, 16-03-2007 lúc 02:58 AM.
fdv vẫn chưa có mặt trong diễn đàn  
Old 15-03-2007, 05:28 PM   #150
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
à cái này là do cấu hình bạn chọn là dao động nội (Cấu hình XT chạy mà HS không chạy thì có khả năng thạch anh bị overdrive khi cấu hình ở HS, theo Microchip thì có thể thêm vào một điện trở Rs giữa chân OSC2 và chân thạch anh (trong mấy cái datasheet đều có nói đến) nguyên văn của anh Namq), nếu có sẵn thạch anh ở đó bạn cấu hình dùng thạch anh là ok.
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________
_ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _
. . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . .
thaithienanh vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM


Múi giờ GMT. Hiện tại là 01:30 PM.


Đượ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