![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Mar 2010
Bài gửi: 11
: |
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: ![]() 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]; } } Với mạch như thế này thì mình ko biết viết code ra sao: ![]() Mong các bạn giúp đỡ mình. Xin cảm ơn. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Aug 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 22
: |
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) |
![]() |
![]() |
![]() |
#3 |
Đệ tử 7 túi
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
: |
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.
|
![]() |
![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Mar 2010
Bài gửi: 11
: |
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.
|
![]() |
![]() |
![]() |
#5 |
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 24
: |
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 |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|