![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
![]() |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
|
|
#1 |
|
Đệ tử 2 túi
Tham gia ngày: Nov 2008
Bài gửi: 42
: |
Oa oa anh ơi, được rồi . Ha ha, thank anh nhiều lắm . May quá, em sửa mãi mà ko được, giờ mới được.
|
|
|
|
|
|
#2 |
|
Đệ tử 2 túi
Tham gia ngày: Nov 2008
Bài gửi: 42
: |
à, em còn 1 vấn đề là, em ghi giá trị đọc được từ ADC vào biến ADCvalue, sau đó, em dùng hàm chuyển đổi kiểu :
sprintf(Nhietdo, "%d",ADCvalue ); rồi dùng lệnh lcd_putstr(Nhietdo) (Hàm của anh Nam viết ở trang 2) để hiển thị lên LCD mà ko thấy gì cả. Anh xem hộ em mới |
|
|
|
|
|
#3 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
|
#4 |
|
Đệ tử 2 túi
Tham gia ngày: Jan 2009
Bài gửi: 32
: |
cho em hỏi :
em làm mạch LCD nhưng đi dây nhầm nối 4 chân data của LCD : DB0...DB3 thì có chạy được ko?(theo tutorial thì là DB4...DB7) Nếu được thì code phải sửa như nào? em cảm ơn. |
|
|
|
|
|
#5 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
|
#6 |
|
Đệ tử 1 túi
|
Hiển thị giá trị cua ADC ra LCD
Các bác cho em hỏi thêm nhé!
Em muốn hiển thị giá trị của đầu vào ADC ra LCd thi lam thế nào nhỉ? Giá trị của ADC được lưu ở ADCBUF, nhưng giá trị đó là dạng số nguyên. Khi muốn hiện thị dạng số thực ra LCD thì làm thế nào? Mình có thể chuyển đổi kiểu dữ liệu từ số nguyến sang dạng khác được ko? Mong sớm nhận được hồi âm của các bác. |
|
|
|
|
|
#7 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
|
#8 |
|
Đệ tử 1 túi
|
Em đã thử nhưng không thành công. Bác có thể nói cụ thể hơn không nhỉ?
Em dùng lệnh sprintf nhưng trình biên dịch báo lỗi. Có cách nào khác để chuyển dữ liệu từ float sang chuỗi ký tự không bác? |
|
|
|
|
|
#9 |
|
Đệ tử 2 túi
|
TUT của bác Nam về LCD trong C30 có áp dụng cho PIC24 được không ạ
__________________
Best Regard. |
|
|
|
|
|
#10 |
|
Đệ tử 2 túi
|
Đoạn code sau em dựa vào thư viện lcd_lib_8bit của CCS, chạy trên CCS cho PIC24FJ128GA010 rùi nhưng khi chỉnh sửa cho sang C30 thì không báo lỗi nhưng cũng không thấy hiện tượng gì, các bác giúp em với
Code:
#include <p24FJ128GA010.h>
#include <string.h>
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2)
_CONFIG2( FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_HS & FNOSC_PRI)
///////////////////////
#define RS LATD15
#define RW LATD5
#define E LATD4
#define LCD PORTE
/*Ham yeu cau goi lenh dieu khien LCD*/
void comnwrt(void)
{
LATDbits.RS = 0;
LATDbits.RW = 0;
LATDbits.E = 1;
LATDbits.E = 0;
DelayMs(1);
}
/*Ham yeu cau goi du lieu hien thi len LCD*/
void datawrt(void)
{
LATDbits.RS = 1;
LATDbits.RW = 0;
LATDbits.E = 1;
LATDbits.E = 0;
DelayMs(1);
}
void lcd_init(void)
{
DelayMs(100); // Tao tre 100ms cho LCD khoi dong
LCD = 0x38; // Hai hang, ma tran dot 5*7, 8 bit interface
comnwrt();
LCD = 0x0C; // Bat hien thi, tat con tro
comnwrt();
}
void lcd_putcmd(unsigned int Cx)
{
LCD=Cx;
comnwrt();
}
void lcd_putchar(char Cx)
{
unsigned char x=0;unsigned char i=0;
x=(strlen(Cx));
for(i=0;i<=x;i++)
{
if(Cx==' ')i=i+2;
LCD=Cx;
datawrt();
}
}
///////////////////
int main(void)
{
_TRISD4=0;
LATDbits.E=0;
_TRISD5=0;
LATDbits.RW=0;
_TRISD15=0;
LATDbits.RS=0;
TRISE=0xFFF0;
lcd_init();
DelayMs(1000);
lcd_putcmd(0x01);
while(1);
{
lcd_putcmd(0x80);
lcd_putchar("PIC");
DelayMs(5000);
}
}
__________________
Best Regard. |
|
|
|
|
|
#11 |
|
Đệ tử 1 túi
Tham gia ngày: Sep 2007
Bài gửi: 12
: |
Cám ơn anh Nam. Hàm delay là do em thử một trị khác trị tính toán ban đầu nên nó lung tung,không chính xác. Loay hoay tìm nhưng rốt cuộc lại bị lỗi là chưa gọi hàm Init_TMR1(). Một bài học đắt giá cho kinh nghiệm rất ít của em. Sau khi gửi lên máy tính xong, trong hàm main em viết thêm một câu lệnh nhận rất đơn giản (với biến temp em khai bao thuoc kieu char) rồi sau đó gửi ngược lên. Tuy nhiên nó lại không chạy. Nhân đây cho em hỏi, nếu mình muốn nhận về một chuỗi ký tự thì mình tách chuỗi thế nào để nhận được .
************************************************** ******* int main(void) { InitClock(); // This is the PLL settings Init_TMR1(); InitUART1(); // Initialize UART2 for 9600,8,N,1 TX/RX while(1) { // The ever versatile Infinite Loop! if (U1STAbits.URXDA==1) { temp=U1RXREG; delay_ms(10); U1TXREG=temp; } } } ************************************************** ****** Còn khi em thử dùng hàm sau để kiểm tra thử : ******************************* if (U1STAbits.URXDA==1){ U1TXREG='A'; } else {delay_ms(50); U1TXREG='B'; } ******************************** thì kết quả là trên máy tính luôn nhận 'A'. thay đổi nội dung bởi: harakiri, 08-11-2009 lúc 04:28 PM. |
|
|
|
|
|
#12 | |
|
Trưởng lão PIC bang
|
Trích:
Đoạn code đầu tiên của bạn có gọi hàm delay_ms(), không rõ hàm này sẽ delay bao lâu, do đó không nên dùng nó. Đoạn code thứ hai thì rơi vào tình trạng nếu U1STAbits.URXDA bằng '1' thì nó sẽ luôn luôn rơi vào nhánh if, vì trong nhánh if đó bạn không bao giờ đọc dữ liệu ra khỏi bộ đệm để cờ URXDA được xóa về '0'. Trong đoạn code thử của bạn, bạn nên bỏ hẳn lệnh gọi hàm delay_ms() đi, và phát ngay sau khi nhận được dữ liệu xem. Như vậy dsPIC sẽ chờ đến khi có dữ liệu và phát trả lại dữ liệu ngay khi đọc từ bộ đệm. Đây là cách tôi vẫn thử các module UART. 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 |
|
|
|
|
|
|
#13 |
|
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 29
: |
Xem giùm em cái này với
em đang tập hiện LCD với dspic 30f4013. em có tham khảo mấy bài trong này và chỉnh sửa lại. Nhưng mà không thấy nó chạy gì cả. Anh em nào hảo tâm giúp mình với
|
|
|
|
|
|
#14 |
|
Nhập môn đệ tử
Tham gia ngày: Aug 2005
Bài gửi: 1
: |
Cho mình hỏi chút. Đã ai gặp trường hợp các chân RE8,RF2,RF3 không cấu hình được cho mục đích IO, các chân khác vẫn bình thường và thử qua một số mạch in khác nhau vẫn gặp trường hợp tương tự. Sử dụng module của dsPic như UART hay I2C vẫn chạy bình thường. Mình thử mọi cách mà ko được. Chắc cấu hình sai ở đâu đấy. Có bạn nào gặp trường hợp tương tự thì trả lời giúp.
|
|
|
|
|
|
#15 |
|
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 146
: |
bạn phải cho biết loại chip mình dùng, có thể là cả mạch và code của bạn nữa thì mọi người mới giúp được.
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com |
|
|
|
![]() |
| Tags |
| alphanumeric lcd, input read |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|
Similar Threads
|
||||
| Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
| Học CCS thông qua Tutorial PICVIETNAM | FFGmember | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 105 | 08-09-2017 04:12 PM |
| dsPIC Tutorial 2-Các kỹ thuật cơ bản | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 33 | 17-10-2013 11:09 PM |
| dsPIC Tutorial 5-Module ADC và MCPWM | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 83 | 12-09-2013 10:33 PM |
| dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 16 | 22-08-2012 12:35 AM |
| dsPIC Tutorial 4-Module UART và I2C | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 76 | 09-05-2012 10:55 AM |