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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 18-11-2009, 08:51 AM   #1
hangocminh1989
Đệ tử 6 túi
 
Tham gia ngày: Apr 2009
Bài gửi: 132
:
em vẫn chưa khai báo được cái nút nhấn,hum ny em không mang theo code và cái sơ đồ,cả nhà có ai đã làm thành công nhiều về vấn đề này xin giúp đỡ em với,có code và sơ đồ luôn thi càng tốt,hic,mệt cái này quá,
thanks
hangocminh1989 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-11-2009, 09:31 AM   #2
nhamdtk4
Đệ tử 3 túi
 
nhamdtk4's Avatar
 
Tham gia ngày: Feb 2009
Bài gửi: 47
:
Trích:
Nguyên văn bởi hangocminh1989 View Post
em vẫn chưa khai báo được cái nút nhấn,hum ny em không mang theo code và cái sơ đồ,cả nhà có ai đã làm thành công nhiều về vấn đề này xin giúp đỡ em với,có code và sơ đồ luôn thi càng tốt,hic,mệt cái này quá,
thanks
It's here:
Code:
#include<16f877a.h>
#fuses nowdt,hs,noprotect,nodebug
#use delay(clock=20M)

#bit button2   =0x008.2
#bit button1   =0x008.0

void main()
{
   int a=5;
   set_tris_b(0x00);
   set_tris_d(0xff);
   output_b(0);
   while(true)
   {
      if(button1) {delay_ms(40); while(button1){}; a++;}
      if(button2) {delay_ms(40); while(button2){}; a--;}      
      output_b(a);
   }
}
File Kèm Theo
File Type: rar Button_T_G_16F.rar (13.8 KB, 52 lần tải)

thay đổi nội dung bởi: nhamdtk4, 18-11-2009 lúc 09:37 AM.
nhamdtk4 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-11-2009, 09:42 AM   #3
ngoyeungoc
Nhập môn đệ tử
 
Tham gia ngày: Nov 2007
Bài gửi: 8
:
Dùng PIC điều khiển động cơ bước

Chào mọi người !Mình đang viết chương trình điều khiển Step Motor nhưng đang mắc kẹt lại ở chỗ này không tìm được cách giải quyết mấy ngày nay rồi.Đã cố gắng nhưng không ra nên rất mọi người giúp đỡ mình với.Đây là code của mình
Code:
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#byte portb=0x06
#byte intcon=0x000B
#bit RB4=portb.4
#bit RB5=portb.5
#bit RB6=portb.6
#bit RB7=portb.7
#bit RBIF=intcon.0 //dinh nghia co ngat RB
#bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB
int a=0x11,speed=1000;
// Chuong trinh ngat
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE)) 
   { 
      //Quay nguoc chieu kim dong ho
      {
      if(RB4==0)
         while (true)
            {
               rotate_left(&a,1);
               portb=a;
               delay_ms(1000);
            }
          
      }      
      //Quay cung chieu kim dong ho
      {
      if(RB5==0)
         while (true)
            {
               rotate_right(&a,1);
               portb=a;
               delay_ms(1000);
            } 
      }
      //Quay nguoc chieu kim dong ho nhanh dan
      {
      if(RB6==0)
         {
            speed=-50;
            while (true)
               {
                  rotate_left(&a,1);
                  portb=a;
                  delay_ms(speed);
               }
         } 
      }
      //Quay cung chieu kim dong ho nhanh dan
      {
      if(RB7==0)
         {
            speed=-50;
            while (true)
               {
                  rotate_right(&a,1);
                  portb=a;
                  delay_ms(speed);
               }
         } 
      }
   RBIF=0; //Xoa co ngat RB      
   }
}
// Chuong trinh chinh
main()
{
set_tris_b(0xF0);
portb=0x0F;
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(true)
   {
  
   }
}
Nội dung của bài mình là điều khiển chiều quay và tốc độ của động cơ(mình đã chú thích trên đoạn code).Lỗi mình gặp phải là khi mình ấn SW để động cơ quay nhanh dần thì nó quay nhanh thật nhưng nhấn nữa thì tốc độ không tăng nữa mà vẫn giữ nguyên tốc độ.Các bạn có thể giúp mình sữa lại sao cho mỗi lần mình nhấn SW để tăng tốc độ động cơ thì nó tăng dần .Và mình hỏi thêm 1 điều nữa sao mỗi lần mình cho quay cùng chiều đồng hồ thì lúc đầu nó quay ngược chiều một bước rồi mới quay cùng chiều(và ngược lại).Có cách nào khắc phục không giup mình với.
Mình cảm ơn các bạn nhiều.
Mình còn file mô phỏng mà không biết upload lên diễn đàn sao cả,đành up lên mediafire vậy.Mong các bạn chỉ bảo thêm.
Link download :

thay đổi nội dung bởi: ngoyeungoc, 25-11-2009 lúc 10:12 AM.
ngoyeungoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-11-2009, 10:29 PM   #4
ngoyeungoc
Nhập môn đệ tử
 
Tham gia ngày: Nov 2007
Bài gửi: 8
:
Ui,các bạn đâu rồi??? Sao không thấy ai giúp đỡ mình hết dzậy! Mình đang rất cần...Help me!
ngoyeungoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-12-2009, 03:47 AM   #5
0903579509
Đệ tử 4 túi
 
Tham gia ngày: Mar 2007
Nơi Cư Ngụ: Da Nang
Bài gửi: 69
:
Trích:
Nguyên văn bởi ngoyeungoc View Post
Ui,các bạn đâu rồi??? Sao không thấy ai giúp đỡ mình hết dzậy! Mình đang rất cần...Help me!
Tôi không hiểu lắm về Code của bạn, nhưng tôi thấy với đoạn code trên, vi điều khiển không bao giờ thoát khỏi chương trình ngắt khi chạy vòng lặp while(1). Thêm vào đó ngắt xãy ra rất nhanh, chỉ cần một động tác nhấn phím, ngắt đã xãy ra nhiều lần do rung phím, kết quả hàm delay_ms() trở thành giá trị tối thiểu -> chỉ nhấn 1 lần tốc độ động cơ đã lên tối đa.
Thân!
0903579509 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-12-2009, 11:41 PM   #6
ngoyeungoc
Nhập môn đệ tử
 
Tham gia ngày: Nov 2007
Bài gửi: 8
:
Mình cảm ơn bạn.Các bạn có thể giải thích rõ về PWM của PIC không.Trong luồng "CCS C cho PIC16F877A" mình đọc qua nhưng không hiểu rõ lắm.Mình đang lập trình điều khiển cho động cơ bước(loai 6 dây ra). Để điều khiển tốc độ động cơ thì phải dùng PWM(đoạn code trên mình dùng delay để thay đổi tốc độ nhưng không được). PIC 16F877A chỉ có 2 ngõ ra RC1 và RC2 là dùng trong PWM,trong khi mình cần 4 ngõ vào điều khiển.Các bạn hướng dẫn cho mình cách dùng PWM để điều khiển tốc độ cho động cơ bước 4 pha với.Mình cảm ơn nhiều!
ngoyeungoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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


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