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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 04-06-2006, 02:48 AM   #1
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Quá tuyệt vời, chân thành cảm ơn nhh về loạt bài viết này.

Trân trọng
falleaf vẫn chưa có mặt trong diễn đàn  
Old 06-06-2006, 11:03 AM   #2
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
LCD_8bit interface, có kiểm tra cờ bận.

Bài cuối về LCD. Hoạt động theo 8bit interface, có hỏi cờ bận đảm bảo LCD luôn thực thi đúng lệnh yêu cầu ! Chú ý việc hỏi cờ bận là hết sức cần thiết!

Một điều nữa là Protues mô phỏng cho LCD hơi cà thoạt, nên dùng Picsimulator.Tốt nhất kiếm 1 chú LCD làm cho xom!

Chương trình hiển thị dòng chữ "WONDERFUL PICVIETNAM!",tham khảo source code của CCS C.
Code:
/*-----------------------------------------------------------------------------
* Author  	: nhh
* Date    	: 05/04/06
* Hardware	: PIC16F877A
* Compiler  	: CCS C 3.249
* Description   : Hien thi LCD
*=============================================================================*/
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define E  RD2
#define RS RD0
#define RW RD1
#byte lcd_data = 0x06   // Dia chi PORTB

/* Khai bao nguyen mau cac ham su dung */
byte lcd_read_byte();
void lcd_send_byte( byte address, byte n );
void lcd_init();
void lcd_gotoxy( byte x, byte y);
void lcd_putc( char c);
void lcd_refresh();

/* Doc mot byte tu LCD */
byte lcd_read_byte()
{
   byte read_byte;
   set_tris_B(0xFF);       // PORTB = input
   RW = 1;
   delay_cycles(1);
   E  = 1;
   delay_cycles(1);
   read_byte = lcd_data;
   E  = 0;
   set_tris_B(0x00);       // PORTB = output
   return(read_byte);
}

/* Goi 1byte den LCD */
void lcd_send_byte( byte address, byte n )
{
   RS = 0;
   while ( bit_test(lcd_read_byte(),7) ) ;
   RS = address;
   delay_cycles(1);
   RW = 0;
   delay_cycles(1);
   E  = 0;
   lcd_data = n;
   delay_cycles(1);
   E = 1;
   delay_us(2);
   E = 0;
}

/* Khoi tao ban dau cho LCD */
void lcd_init()
{
    byte const lcd_init_string[4] = {0x38, 0x0C, 1 , 6};
    byte i;
    set_tris_B(0x00);
    RS = 0;
    RW = 0;
    E  = 0;
    delay_ms(15);
    for(i=1;i<=3;++i)
       {
         lcd_data = 3;
         delay_cycles(1);
         E = 1;
         delay_us(2);
         E = 0;
         delay_ms(5);
       }
    lcd_data = 2;
    delay_cycles(1);
    E = 1;
    delay_us(2);
    E = 0;
    delay_ms(5);
    for(i=0;i<=3;++i)
      {
         lcd_send_byte(0,lcd_init_string[i]);
      }
}

/* Nhay den vi tri (x,y) tren LCD,nhay nham y se bao loi */
void lcd_gotoxy( byte x, byte y)
{
   byte address;
   switch(y)
      {
         case 1:  address=0;
                  address+=x-1;
                  lcd_send_byte(0,0x80|address);
                  break;
         case 2:  address=0x40;
                  address+=x-1;
                  lcd_send_byte(0,0x80|address);
                  break;
         default :lcd_init();
                  lcd_putc("ERROR Y POSITION");
                  while(true); // Dung tai day!
      }
}

/* Hien thi ki tu hoac chuoi ra LCD */
void lcd_putc( char c)
{
   lcd_send_byte(1,c);
}

/* Hien thi ki tu hoac chuoi ra LCD */
void lcd_refresh()
{
   lcd_send_byte(0,1);
   lcd_send_byte(0,6);
}

/* Ham main */
void main (void)
{
   set_tris_B(0);    //PORTB = output
   set_tris_D(0);    //PORTD = output

   lcd_init();

   lcd_gotoxy(5,1);
   lcd_putc("WONDERFUL");

   lcd_gotoxy(4,2);
   lcd_putc("PICVIETNAM!");
}


Nên gom các hàm trên thành 1 file lcd_8bit.c chẳng hạn, đến khi sử dụng chỉ việc include nó vào cho khỏe...
File Kèm Theo
File Type: rar WDF_PVN.rar (87.9 KB, 2759 lần tải)
__________________
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 19-08-2006, 09:17 PM   #3
bigtitan
Đệ tử 3 túi
 
Tham gia ngày: Oct 2005
Bài gửi: 47
:
Trích:
Nguyên văn bởi nhh
Bài cuối về LCD. Hoạt động theo 8bit interface, có hỏi cờ bận đảm bảo LCD luôn thực thi đúng lệnh yêu cầu ! Chú ý việc hỏi cờ bận là hết sức cần thiết!

Một điều nữa là Protues mô phỏng cho LCD hơi cà thoạt, nên dùng Picsimulator.Tốt nhất kiếm 1 chú LCD làm cho xom!
Sao em thấy cái PICsimlator này nó tét ra kết quả lâu quá.ngồi đợi nó chạy ra hàng chữ HELLO muốn....tắt mày cho rồi.Mặc dù thiết lập mức độ chạy hết công suất(Ctrl+F5 thì phải) nhưng ó vẫn rề quá.Hay là còn chỗ nào nữa.Các bác chỉ giúp.
bigtitan vẫn chưa có mặt trong diễn đàn  
Old 20-08-2006, 01:12 AM   #4
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 bigtitan
Sao em thấy cái PICsimlator này nó tét ra kết quả lâu quá.ngồi đợi nó chạy ra hàng chữ HELLO muốn....tắt mày cho rồi.Mặc dù thiết lập mức độ chạy hết công suất(Ctrl+F5 thì phải) nhưng ó vẫn rề quá.Hay là còn chỗ nào nữa.Các bác chỉ giúp.
Lại nữa rồi, PIC Simulator để kiểm tra logic của chương trình, chứ không phải để thử xem máy tính của bạn chạy nhanh đến mức nào. Bạn vào đọc thêm trong luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=330

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 16-06-2006, 06:04 PM   #5
tact
Nhập môn đệ tử
 
tact's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 10
:
Các bác viết bài nhiệt tình quá. Em không biết các bác lấy thời giân đâu mà viết nữa. Khâm phục! Khâm phục!
Em đọc rất nhiều bài của các bác viết. Nhưng em chưa thấy bài nào nói về vấn đề XTAL. giả sử em có 1 con thạch anh 12M, em muốn config cho nó chạy ở 48MHz, theo các bác, cần phải làm thế nào?
__________________
"Ai nắm được tri thức trước sẽ là người đi trước"

PICAT="Programmable Intelligent Computer in Auto Technology"

Không biết thông tin này có giúp gì được cho các bạn không:

PICAT- Thông tin giáo dục, công nghệ & công nghiệp
tact vẫn chưa có mặt trong diễn đàn  
Old 16-06-2006, 07:47 PM   #6
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 tact
Các bác viết bài nhiệt tình quá. Em không biết các bác lấy thời giân đâu mà viết nữa. Khâm phục! Khâm phục!
Em đọc rất nhiều bài của các bác viết. Nhưng em chưa thấy bài nào nói về vấn đề XTAL. giả sử em có 1 con thạch anh 12M, em muốn config cho nó chạy ở 48MHz, theo các bác, cần phải làm thế nào?
Câu hỏi của bạn không hoàn toàn rõ ràng.

Bạn hẳn là không thể bắt thạch anh 12 MHz chạy ở 48 MHz, do đó tôi hiểu theo một cách khác.

Nếu bạn muốn config. một con PIC chạy ở 48 MHz với thạch anh 12 MHz, cần thỏa mãn 2 điều kiện: con PIC phải có khả năng chạy ở 48 MHz (tôi không ủng hộ overclocking), và phải có một mạch nhân tần số (bên trong PIC hay bên ngoài, thường là các bộ PLL).

Bạn kiểm tra lại các điều kiện, nếu phần cứng của bạn thỏa điều kiện đã nêu, bạn có thể hỏi tiếp về cách config., nêu rõ chip cần được config.

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 18-06-2006, 06:01 PM   #7
TTL
Đệ tử 3 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 50
:
Bài viết này em sử dụng Lcd 2 hàng để hiển thị giá trị anlog đưa vào ở kênh A và dưa ra các cổng nối tiếp, thời gian để thay dổi giá trị ADC là 1s. (trong ccs chỉ hổ trợ Lcd 2 hàng nhưng basic lại rất hổ trợ rất nhiều LCD, mình muốn viết điều khiển LCD bằng Basic, nhưng lại muốn nhúng nó vào trong ccs phải làm sao mong các bác chỉ giúp)

/* bai tap su dung chuyen doi ADC the hien len LCD va goi qua cong RS232 sau 1s
(su dung ngat int_ad) */

#include "16f877a.h"
#use delay(clock=4000000)
#fuses nowdt,protect
#use rs232(baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7)

#include "lcd.c"

long int a;
int x,y,z,t;

#int_ad
isr()
{
x=(a/100)+48; //lay ma Ascii cua gia tri ad
y=((a/10)-(a/100))+48;
z=(a%10)+48;
lcd_putc("\f");//xoa man hinh lcd
printf("Gia tri Digital: %ld \n",a);
lcd_putc("Digital:");
lcd_putc(x );
lcd_putc(y );
lcd_putc(z );
delay_ms(1000);
lcd_putc("\f") ;
}

main()
{
lcd_init();
enable_interrupts(int_ad);
enable_interrupts(global);
setup_port_a(all_analog);
setup_adc(adc_clock_internal);
set_adc_channel(0);
printf("Mach ADC \n");
lcd_putc("khoi tao lcd");
while(1)
{
a=read_adc();
}
}
TTL vẫn chưa có mặt trong diễn đàn  
Old 20-06-2006, 08:01 PM   #8
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
Trong thư viện của CCS C không chỉ hỗ trợ LCD 2 hàng thôi đâu bạn, trong thư mục Drivers có 16*2, 20*2 và cả LCD graphic nữa.Bạn tìm kĩ trong đó!
__________________
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 21-06-2006, 01:53 PM   #9
Sangcao
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 25
:
Trang nay hay the ma it nguoi viet bai nhi?

Bác Nhh viết bài nhiều nhiều dể anh em học tập tí!

thay đổi nội dung bởi: falleaf, 21-06-2006 lúc 05:55 PM.
Sangcao vẫn chưa có mặt trong diễn đàn  
Old 08-07-2006, 05:30 PM   #10
MoH
Đệ tử 1 túi
 
Tham gia ngày: Dec 2005
Bài gửi: 18
:
CCSC hỗ trợ LCD graphic cũng rất tốt, rất dễ ứng dụng, nhưng các bạn chú ý chân của LCD graphic hơi ngược nguồn so với LCD thường,
chân 1. VDD
2. VSS
Hic, chính vì sơ ý không để ý cái này mà em mất toi con LCD 128x64
MoH vẫn chưa có mặt trong diễn đàn  
Old 10-07-2006, 12:04 AM   #11
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi MoH
CCSC hỗ trợ LCD graphic cũng rất tốt,
Bác có thể nói rõ đó là file nào ko?

Trích:
nhưng các bạn chú ý chân của LCD graphic hơi ngược nguồn so với LCD thường,
chân 1. VDD
2. VSS
Hic, chính vì sơ ý không để ý cái này mà em mất toi con LCD 128x64
LCD graphic nhiều loại lắm, mỗi loại lại có 1 kiểu chân, nếu ko có đúng datasheet của nó thì đừng bao giờ đoán mò. Tui mém tiu 1 con 128x64, vì ko có datasheet nên nhìn đại con nào giống giống rồi mắc thử, hix.
bien_van_khat vẫn chưa có mặt trong diễn đàn  
Old 09-07-2006, 11:59 PM   #12
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
hì, tui hài lòng với CCS C chỉ trừ duy nhất 1 cái báo lỗi:
Attempt to create a pointer to a constant ->x(
bien_van_khat vẫn chưa có mặt trong diễn đàn  
Old 20-07-2006, 01:05 PM   #13
MoH
Đệ tử 1 túi
 
Tham gia ngày: Dec 2005
Bài gửi: 18
:
HÌ, xin lỗi mình đã hơi vội vàng, đúng là có nhiều kiểu chân của LCD Graphic khác nhau.
Còn file exp của CCSC dùng cho LCD Graphic là EX_GLCD
MoH vẫn chưa có mặt trong diễn đàn  
Old 21-07-2006, 08:05 AM   #14
briantk_1988
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Princeton University, NJ, US
Bài gửi: 42
:
Send a message via Yahoo to briantk_1988
Các bác ơi, cháu không có CSC C, nếu bác nào có upload lên được không?

Cám ơn rất nhiều
briantk_1988 vẫn chưa có mặt trong diễn đàn  
Old 02-08-2006, 10:54 AM   #15
hpecom
Đệ tử 2 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 45
:
Trích:
Nguyên văn bởi briantk_1988
Các bác ơi, cháu không có CSC C, nếu bác nào có upload lên được không?

Cám ơn rất nhiều
Bé Briantk_1988 vào đây nhé
http://www.picvietnam.com/forum/showthread.php?t=21
Àh mà bé học lớp chồi mấy? Chắc thần đồng đất Việt đây!
Chúc bé mau ăn chóng lớn.
__________________
Biết thì nói là biết,
Không biết thì nói là không biết,
..
hpecom vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá

Ðiều Chỉnh
Xếp Bà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
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à 03:32 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