PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > RTOS và Thuật toán với 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

RTOS và Thuật toán với PIC RTOS và Các thuật toán dùng cho PIC/dsPIC/PIC32
Mod: phamminhtuan

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 23-01-2007, 12:01 PM   #1
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
Code:
/**********************************************************************************************
* Mo ta     : Nhan phim ma tran phim, 8 led portD hien so tuong ung 0-15, so nay cung duoc goi
*             len may tinh bang giao tiep RS232
*----------------------------------------------------------------------------------------------
* Phan cung : PIC16F877A, thach anh 10MHz
*             ma tran phim noi voi portB, 8 led don noi voi portD qua tro han dong 220R
*             Pic giao tiep RS232 voi may tinh
*----------------------------------------------------------------------------------------------
* Nguoi viet: nhh
* Ngay viet : 12/11/06
* Trinh dich: CCS C v3.013
***********************************************************************************************/
#include  <DEFS_16F877A.h>
#fuses    NOWDT,PUT,HS,NOPROTECT,NOLVP
#use      delay(clock = 10000000)
#use      rs232(baud = 9600,xmit = pin_C6,rcv = pin_C7)
#define   key_port PORTB
#define   key_tris TRISB
#define   led_port PORTD
#define   led_tris TRISD
/*---------------------------------------------------------------------------------------------
 Khai bao bien toan cuc
---------------------------------------------------------------------------------------------*/
const unsigned char number[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

/*---------------------------------------------------------------------------------------------
 Khai bao nguyen mau cac ham su dung
---------------------------------------------------------------------------------------------*/
void column_check(unsigned char);
void key_scan(void);

/*---------------------------------------------------------------------------------------------
 Ham kiem tra hang nao trong cot column xuong 0
---------------------------------------------------------------------------------------------*/
void column_check(unsigned char column)
{
   switch(column)
   {
      case 0:
      {
         if(!bit_test(key_port,0))
         {
            while(!bit_test(key_port,0));
            delay_ms(10);
            led_port = number[0];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,1))
         {
            while(!bit_test(key_port,1));
            delay_ms(10);
            led_port = number[1];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,2))
         {
            while(!bit_test(key_port,2));
            delay_ms(10);
            led_port = number[2];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,3))
         {
            while(!bit_test(key_port,3));
            delay_ms(10);
            led_port = number[3];
            printf("%u\n\r",led_port);
         }
      }
         break;
      case 1:
      {
         if(!bit_test(key_port,0))
         {
            while(!bit_test(key_port,0));
            delay_ms(10);
            led_port = number[4];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,1))
         {
            while(!bit_test(key_port,1));
            delay_ms(10);
            led_port = number[5];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,2))
         {
            while(!bit_test(key_port,2));
            delay_ms(10);
            led_port = number[6];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,3))
         {
            while(!bit_test(key_port,3));
            delay_ms(10);
            led_port = number[7];
            printf("%u\n\r",led_port);
         }
      }
         break;
      case 2:
      {
         if(!bit_test(key_port,0))
         {
            while(!bit_test(key_port,0));
            delay_ms(10);
            led_port = number[8];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,1))
         {
            while(!bit_test(key_port,1));
            delay_ms(10);
            led_port = number[9];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,2))
         {
            while(!bit_test(key_port,2));
            delay_ms(10);
            led_port = number[10];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,3))
         {
            while(!bit_test(key_port,3));
            delay_ms(10);
            led_port = number[11];
            printf("%u\n\r",led_port);
         }
      }
         break;
      case 3:
      {
         if(!bit_test(key_port,0))
         {
            while(!bit_test(key_port,0));
            delay_ms(10);
            led_port = number[12];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,1))
         {
            while(!bit_test(key_port,1));
            delay_ms(10);
            led_port = number[13];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,2))
         {
            while(!bit_test(key_port,2));
            delay_ms(10);
            led_port = number[14];
            printf("%u\n\r",led_port);
         }
         if(!bit_test(key_port,3))
         {
            while(!bit_test(key_port,3));
            delay_ms(10);
            led_port = number[15];
            printf("%u\n\r",led_port);
         }
      }
         break;
   }
}

/*---------------------------------------------------------------------------------------------
 Ham quet phim
---------------------------------------------------------------------------------------------*/
void key_scan(void)
{
   int count;
   for(count = 4;count <= 7; count++)
   {
      key_tris = 0xF0;                  // cot ngo vao, hang ngo ra
      key_port = 0xF0;                  // cot muc 1, hang muc 0
      if(!bit_test(key_port,count))     // cot count xuong 0 chua?
      {
         delay_ms(10);
         if(!bit_test(key_port,count))  // kiem tra lai cot count co xuong 0 ko?
         {
            key_tris = 0x0F;            // cot ngo ra, hang ngo vao
            key_port = 0xEF;            // cot 0 xuong 0
            column_check(0);
            key_port = 0xDF;            // cot 1 xuong 0
            column_check(1);
            key_port = 0xBF;            // cot 2 xuong 0
            column_check(2);
            key_port = 0x7F;            // cot 3 xuong 0
            column_check(3);
         }
      }
   }
}

/*---------------------------------------------------------------------------------------------
 Chuong trinh chinh
---------------------------------------------------------------------------------------------*/
void main(void)
{
   led_tris = 0x00;
   led_port = 0xFF;
   while(true)
   {
      key_scan();
   }
}
File Kèm Theo
File Type: rar Key_scan.rar (9.4 KB, 401 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   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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Góp ý: Kỹ thuật và trình bày falleaf Đóng góp ý kiến 6 03-03-2008 09:36 PM
Hỏi về kỹ thuật bảng mechanics Cơ bản về vi điều khiển và PIC 1 05-10-2006 10:58 AM
Thuật toán với PIC falleaf dsPIC - Bộ điều khiển tín hiệu số 16-bit 3 16-02-2006 09:22 AM
Diễn đàn nhìn luộm thuộm quá noisePIC Đóng góp ý kiến 2 13-07-2005 11:58 PM
Kỹ thuật bảng falleaf Cơ bản về vi điều khiển và PIC 0 06-07-2005 05:49 PM


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