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 06-06-2008, 10:48 AM   #1
daothienbao
Nhập môn đệ tử
 
Tham gia ngày: Jul 2007
Bài gửi: 4
:
Xem giúp mình phần ngắt PorB và hiển thị LCD với

Hi all, mình đang làm bài tập về PIC6f877. Mình muốn đo hiển thị và điều khiển tốc độ động cơ dùng 16f877, trong lúc thực hiện mình gặp khó khăn như sau:
Đầu tiên mình chỉ viết phần đo và hiển thị tốc độ động cơ thôi, nên chương trình chỉ có 1 chế độ, không cần phải chuyển chế độ nữa. Nhưng làm tiếp thì mình cần nó chuyển sang cả chế độ đợi nhập giá trị thay đổi, và điều khiển tốc độ động cơ dùng PWM. Mình dùng 3 button vào portB (ngắt RB) để thực hiện điều này, nút 1 là chuyển các chế độ, nút 2, 3 là để tăng giảm giá trị. Mình mới thử đến phần nút 1 là chuyển chế độ thôi thì gặp vấn đề sau:
- Đầu tiên mình chỉ muốn nó đo tốc độ,thì chạy khá ổn, LCD có hiển thị, nhưng khi đến phần chuyển chế độ thì PortD của Pic chỉ thấy mỗi DR4 là phát tín hiệu, còn lại thì không, tức là không hiển thị được ra LCD, mà mình chỉ thêm phần ngắt RB và hàm switch thôi, k hiểu sao nữa.
- Tiếp theo mình tạm cho phần hiển thị "tinhtoan_hienthi(so_vong)" này vào trong chương trình ngắt RB, coi như là nếu ấn nút button 1 thì bắt đầu hiển thị, tạm chưa chuyển sang cái khác thi thấy nó cứ lặp lại hàm này liên tục, minh thấy lạ vì chỉ có 1 lần ngắt (ngắt theo sườn) mà lại lặp lại liên tục.
Mình muốn dùng ngắt RB để tăng biến đếm a, sau đó switch a từ 0 đến 4 để thực hiện các chương trình khác nhau như đo và hiển thị, chuyển sang trạng thái chờ và đọc đầu vào thay đổi, điều khiển tốc độ bằng PWM, mong mọi giúp đỡ. Đây là code của mình

Code:
#include "C:\Documents and Settings\Hikaru\Desktop\pro2\lan2.h"
#include "def_877a.h"
#include<lcd_lib_4bit.c>
#use delay(clock=20000000)
int8 nghin,tram,chuc,donvi,a;
int16 count,so_vong,int_count1,x;
void tinhtoan_hienthi(int16 x);
void tinhtoan_hienthi(int16 x) // thuc hien tach so va dua ra hien thi luon
{nghin = x / 1000 + 0x30;
x = x % 1000;
 tram = x / 100 + 0x30; // tách s? hàng tram
 x = x % 100; // chia l?y ph?n d?
 chuc = x / 10 + 0x30; // tách l?y ph?n ch?c
 donvi = x % 10 + 0x30; // ph?n don v?
printf(lcd_putchar,"hien thi toc do");
 lcd_putcmd(0xC0);
 printf(lcd_putchar,"toc do=");
 lcd_putchar(nghin);
 lcd_putchar(tram);
 lcd_putchar(chuc);
 lcd_putchar(donvi);
}
#define INTS_PER_SECOND1 19
#int_rtcc                           // Ngat Timer 0
void Timer0_isr()                   // Dem so vong quay dong co
{
   count++;
}

#INT_TIMER1                        // Chuong trinh ngat Timer 1
void Timer11_isr() {                // Ham duoc goi khi TImer1 tran (65535->0)
                                   // Xap xi 19 lan / giay
    if(--int_count1==0)
    {
      int_count1 = INTS_PER_SECOND1;
      so_vong = (count*255 + get_timer0())/100;
      count = 0;
      set_timer0(0);
    }
}
#int_RB // ham kiem tra dau vao
void RB_isr()
{
lcd_putcmd(0x01);
a++;
if(a==4) a=1;}
void program1();
void program2();
void program3();
void main()
{
 setup_timer_0 (RTCC_DIV_1|RTCC_EXT_H_TO_L);  // Timer0 is Counter
   set_timer0(0);
set_timer1(0);
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
enable_interrupts(INT_RB);
count = 0;
int_count1 = INTS_PER_SECOND1;
  so_vong = 0;
  a = 0;
  TRISA = 0xFF;
  trisB = 0xFF;
  portb = 0xff;
  RD2 = 1;
  trisD = 0;
lcd_init();
delay_ms(200);
printf(lcd_putchar,"hello");
//ext_int_edge(L_to_H);

while(1)
{
switch(a)
{
case 1: program1();break;
case 2: program2();break;
case 3: program3();break;
}
}
}
void program1()
{tinhtoan_hienthi(so_vong);
delay_ms(500);
}
void program2()
{
delay_ms(500);}
void program3()
{
delay_ms(500);

còn đây là mạch của mình
Hình Kèm Theo
File Type: jpg mach.JPG (249.8 KB, 53 lần tải)

thay đổi nội dung bởi: namqn, 06-06-2008 lúc 04:52 PM.
daothienbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫ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


Múi giờ GMT. Hiện tại là 11:44 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