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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 01-09-2007, 05:02 PM   #11
cuopbienquin
Đệ tử 2 túi
 
cuopbienquin's Avatar
 
Tham gia ngày: Jun 2007
Bài gửi: 43
:
Mình thật sự cảm ơn bạn thaithienthanh rất nhiều về vấn đề này.Mình đã làm lại và chạy ngon lành.Nhưng để thực tế hơn mình đã làm một cái keypadcalulate thay cho mấy cái button .Mạch như sau:

Code:#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define RS RD0
#define RW RD1
#define E RD2
#define LCD PORTC
/*Ham yeu cau goi lenh dieu khien LCD*/
void comnwrt(void)
{
RS = 0;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
/*Ham yeu cau goi du lieu hien thi len LCD*/
void datawrt(void)
{
RS = 1;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
#int_RB
void ngat_RB(void)
{
if(RBIE && RBIF)
{
//hang A
if ((RB0) && (RB4))
{
LCD = '7';
datawrt();


}
if (RB0 && RB5)
{

LCD = '8';
datawrt();


}
if (RB0 && RB6)
{

LCD = '9';
datawrt();


}
if (RB0 && RB7)
{

LCD = ':';
datawrt();


}
//Hang B
if ((RB1) && (RB4))
{
LCD = '4';
datawrt();


}
if (RB1 && RB5)
{

LCD = '5';
datawrt();


}
if (RB1 && RB6)
{

LCD = '6';
datawrt();


}
if (RB1 && RB7)
{

LCD = 'x';
datawrt();


}
//Hang C
if ((RB2) && (RB4))
{
LCD = '1';
datawrt();


}
if (RB2 && RB5)
{

LCD = '2';
datawrt();


}
if (RB2 && RB6)
{

LCD = '3';
datawrt();


}
if (RB2 && RB7)
{

LCD = '-';
datawrt();


}
//Hang D
if ((RB3) && (RB4))
{
LCD = 0x0C;
comnwrt();


}
if (RB3 && RB5)
{

LCD = '0';
datawrt();


}
if (RB3 && RB6)
{

LCD = '=';
datawrt();


}
if (RB3 && RB7)
{

LCD = '-';
datawrt();


}

}
}

void main(void)
{
set_tris_b(0b00001111);
set_tris_c(0);
set_tris_d(0);
portb=0;
portc=0;
portd=0;

enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_TO_L);
LCD = 0x38; // Hai hang, ma tran dot 5*7, 8 bit interface
comnwrt();
LCD = 0x0C; // Bat hien thi, tat con tro
comnwrt();

while(true)
{
}
}
Khi compile thì chương trình dịc ok nhưng khi mô phỏng mình lại thấy LCD tiếp tục đứng im .Hee, mong các bạn tiếp tục giúp đỡ cho trọn vẹn nha.
Mình làm về project này là để làm một cái smallcal có dạng như trên hình vẽ, mình cùng đang tìm hiểu thuật toán của nó,đây là thuật toán trong sách Interfacing PIC về các phép tình đơn giản:
Calculate result
IF key = ‘+’, Add
IF key = ‘-‘, Subtract
IF key = ‘x’, Multiply
IF key = ‘/’, Divide
Add Add Num1 + Num2
Load result, CALL Two digits
Subtract Subtract Num1 – Num2
IF result negative, load minus sign, CALL Display character
Load result, CALL Display character
Multiply
REPEAT
Add Num1 to Result
Decrement Num2
UNTIL Num2= 0
Load result, CALL Two digits
Divide
REPEAT
Subtract Num2 from Num1
Increment Result
UNTIL Num1 negative
Add Num2 back onto Num1 for Remainder
Load Result, CALL Display character
Load Remainder, CALL Display character
Two digits
Divide result by 10, load MSD, CALL Display character
Load LSD, CALL Display character
Mình viết bằng ASM thì được chứ còn CCS thì non tay lắm .Mong các bạn giúp đỡ mình hoàn thành project này.Cảm ơn nhiều.Chúc vui.
File Kèm Theo
File Type: rar LCDKEYPAD.rar (14.5 KB, 347 lần tải)

thay đổi nội dung bởi: cuopbienquin, 01-09-2007 lúc 05:13 PM.
cuopbienquin vẫn chưa có mặt trong diễn đàn  
 


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 ve I2C ( pic16f877a ) mafd_47a MPASM 26 07-05-2024 08:55 AM
TUT về USART trong PIC16F877A mafd_47a MPASM 11 04-05-2024 04:43 AM
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à 07:47 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