PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Nút bấm trong CCS (http://www.picvietnam.com/forum/showthread.php?t=10283)

tuananh.bkhn 24-07-2011 06:30 PM

Nút bấm trong CCS
 
Chào mọi người. Mình mới học lập trình PIC bằng CCS nên có một số vấn đề không hiểu lắm mong mọi người giúp đỡ. Mình đang lập trình về nút bấm và hiển thị ra LED 7 thanh. Mình đã lập trình và thấy mô phỏng trên proteus thì chạy rồi nhưng hình như là mạch của mình sai thì phải:
Đây là mạch của mình:
https://lh5.googleusercontent.com/-6...800/mach_1.png

Và đây là code cho mạch trên(ĐÃ CHẠY).

Code:

#include <16f877a.h>
#include <def_877a.h> 
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT         
#use delay(clock=20000000) 
       
                                                                                                                               
           
void main()                   
{
  unsigned char font[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};     
  TRISB = 0x00;
  PORTB = 0xFF;
  TRISC = 0xFF;                                                                                                                 
  unsigned char count = 3;                                     
  while(1)                                                 
  {                                   
      if(input(PIN_C7)==1) 
      count--;         
      while(input(PIN_C7));
      delay_ms(10);
     
      if(input(PIN_C6)==1)
      count++;
      while(input(PIN_C6));
      delay_ms(10);
      PORTB = font[count];               
                     
  }                                         
                                 
}

Nhưng có lẽ không ai làm mạch nút bấm kiểu đó.

Với mạch như thế này thì mình ko biết viết code ra sao:

https://lh4.googleusercontent.com/-W...800/mach_2.png

Mong các bạn giúp đỡ mình. Xin cảm ơn.

shakespeare_a18 24-07-2011 10:44 PM

với mạch sau khi ấn nút, áp tại chân C6,C7 là 0. Code đổi thành
if(input(PIN_C7)==0)

pstin 25-07-2011 10:25 AM

Mạch trên sửa lại chút ít: Nối điện trở 10k xuống mass, trước khi vào chân vdk thêm điện trở 4.7k nữa là ok, sẽ thành nút nhấn kích Vcc, không cần thêm tụ, nếu thêm tụ thì lâu ngày tụ nạp xả nhiều lần sẽ làm "chai" nút nhấn.

tuananh.bkhn 25-07-2011 06:02 PM

Cảm ơn mọi người nhé. Mới học nên cũng hơi bỡ ngỡ. Giờ thì mình cũng đã c0de xong rồi. Thanks again.

haneishun 26-07-2011 01:50 AM

void lcd_put_int(int16 num){
int16 temp;
unsigned char i = 0, c[5];????
temp = num;
if (temp != 0) {
while(temp){
c[i++] = temp%10; ????
temp /= 10;??????
}
while(i) lcd_putc(c[--i] + '0');??????
}
else lcd_putc('0');??????
}
va lam the nao de hien thi so thap phan 123,4 len LCD ???
ai co the giai thick tung cho em danh dau ???? dc ko a.em moi hoc len chua hieu ro cho nay lam


Múi giờ GMT. Hiện tại là 06:49 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam