mong các bạn giúp mình các quét và đọc giá trị của 3 phím BCD này với. giá trị của mỗi phím được lưu vào mỗi biến tương ứng và hiển thị các biến này trên led 7seg. cảm ơn các bạn rất nhiều!
Thông báo
Collapse
No announcement yet.
các bạn giúp mình cách quét và đọc phím BCD này với
Collapse
X
-
có nghĩa là mình mua đc switch BCD mình muốn thử đọc switch đó rồi lưu vào 1 biến tương ứng. nếu mỗi phím mắc vào từng PORT của VĐK thì mình đã làm đc rồi nhưng sử dung cách quét phím để tiết kiệm chân VĐK thì mình không biết nên làm ntn? rất mong mọi người giúp đỡ (vì nếu quét đc 3 phím này thì mình sẽ phát triển quét nhiều phím hơn) . mình đang rất cầnVũ xuân Lợi
YM!:
Comment
-
đây là code mà mình đã lập trình nhưng vẫn không đc. E nhờ các cao bác xem giúp E xem E còn sai chỗ nào mà nó không chạy! E xin trân thành cảm ơn!
/************************************************** ***
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
HP InfoTech, Development Tools for Microcontrollers, C Compilers, In-System Programmers
Project :
Version :
Date : 3/24/2012
Author : NeVaDa
Company :
Comments:
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 8.001000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
************************************************** ***/
#include <mega8.h>
#include <delay.h>
#define A PIND.0
#define B PIND.1
#define C PIND.2
#define D PIND.3
unsigned char _7_segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6 f};
unsigned char Quetphim [4]={0xEf,0xDf,0xBf,0x7f};
unsigned char tmp1=0, tmp2=0, tmp3=0, tmp4=0, tmp5,tmp6;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
;
}
void Quetbanphim(void)
{
unsigned char x,y;
for(x=0;x<4;x++)
{
DDRD=0xf0;
PORTD=Quetphim[x];
/* Xu li so lieu danh cho dau vao so 1 */
if(x==0)
{
for(y=0;y<100;y++)
{
if(A==1 & B==1 & C==1 & D==1) { tmp1 = 0;}
if(A==0 & B==1 & C==1 & D==1) { tmp1 = 1;}
if(B==0 & A==1 & C==1 & D==1) { tmp1 = 2;}
if(A==0 & B==0 & C==1 & D==1) { tmp1 = 3;}
if(C==0 & A==1 & B==1 & D==1) { tmp1 = 4;}
if(A==0 & C==0 & B==1 & D==1) { tmp1 = 5;}
if(B==0 & C==0 & A==1 & D==1) { tmp1 = 6;}
if(A==0 & B==0 & C==0 & D==1) { tmp1 = 7;}
if(D==0 & A==1 & B==1 & C==1) { tmp1 = 8;}
if(A==0 & D==0 & B==1 & C==1) { tmp1 = 9;}
}
}
/* Xu li so lieu danh cho dau vao so 2 */
if(x==1)
{
for(y=0;y<100;y++)
{
if(A==1 & B==1 & C==1 & D==1) { tmp2 = 0;}
if(A==0 & B==1 & C==1 & D==1) { tmp2 = 1;}
if(B==0 & A==1 & C==1 & D==1) { tmp2 = 2;}
if(A==0 & B==0 & C==1 & D==1) { tmp2 = 3;}
if(C==0 & A==1 & B==1 & D==1) { tmp2 = 4;}
if(A==0 & C==0 & B==1 & D==1) { tmp2 = 5;}
if(B==0 & C==0 & A==1 & D==1) { tmp2 = 6;}
if(A==0 & B==0 & C==0 & D==1) { tmp2 = 7;}
if(D==0 & A==1 & B==1 & C==1) { tmp2 = 8;}
if(A==0 & D==0 & B==1 & C==1) { tmp2 = 9;}
}
}
/* Xu li so lieu danh cho dau vao so 3*/
if(x==2)
{
for(y=0;y<100;y++)
{
if(A==1 & B==1 & C==1 & D==1) { tmp3 = 0;}
if(A==0 & B==1 & C==1 & D==1) { tmp3 = 1;}
if(B==0 & A==1 & C==1 & D==1) { tmp3 = 2;}
if(A==0 & B==0 & C==1 & D==1) { tmp3 = 3;}
if(C==0 & A==1 & B==1 & D==1) { tmp3 = 4;}
if(A==0 & C==0 & B==1 & D==1) { tmp3 = 5;}
if(B==0 & C==0 & A==1 & D==1) { tmp3 = 6;}
if(A==0 & B==0 & C==0 & D==1) { tmp3 = 7;}
if(D==0 & A==1 & B==1 & C==1) { tmp3 = 8;}
if(A==0 & D==0 & B==1 & C==1) { tmp3 = 9;}
}
}
/* Xu li so lieu danh cho dau vao so 3*/
if(x==3)
{
for(y=0;y<100;y++)
{
if(A==1 & B==1 & C==1 & D==1) { tmp4 = 0;}
if(A==0 & B==1 & C==1 & D==1) { tmp4 = 1;}
if(B==0 & A==1 & C==1 & D==1) { tmp4 = 2;}
if(A==0 & B==0 & C==1 & D==1) { tmp4 = 3;}
if(C==0 & A==1 & B==1 & D==1) { tmp4 = 4;}
if(A==0 & C==0 & B==1 & D==1) { tmp4 = 5;}
if(B==0 & C==0 & A==1 & D==1) { tmp4 = 6;}
if(A==0 & B==0 & C==0 & D==1) { tmp4 = 7;}
if(D==0 & A==1 & B==1 & C==1) { tmp4 = 8;}
if(A==0 & D==0 & B==1 & C==1) { tmp4 = 9;}
}
}
}
tmp5= tmp1*10 + tmp2;
tmp6= tmp3*10 + tmp4;
}
// Declare your global variables here
void hienthi()
{
PORTB.0 = 0;
PORTC = _7_segment[tmp5/10];
delay_us(7);
PORTC = 0x00;
PORTB.0 = 1;
PORTB.1 = 0;
PORTC = _7_segment[tmp5%10];
delay_us(7);
PORTC = 0x00;
PORTB.1 = 1;
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTB=0xFF;
DDRB=0xFF;
// Port C initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0x7F;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=1 State6=1 State5=1 State4=1 State3=P State2=P State1=P State0=P
PORTD=0xFF;
DDRD=0xF0;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 7.813 kHz
TCCR0=0x05;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x41;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
Quetbanphim();
hienthi();
}
}Vũ xuân Lợi
YM!:
Comment
-
phần quét phím của bạn quá phức tạp và dài
theo như code trên thì cậu viết = codevision, vậy hãy vào thư mục cài của nó cái cái example các ví dụ trong đó có keypad mở ra mà tham khảo, keypad có nhiều cách quét, tham khảo rồi tự phát triểnWebsite chính thức đổi địa chỉ website thành
Mời các bạn ghé thăm !!!
Comment
-
cảm ơn bác đã góp ý. nhưng E mới tìm hiểu về lập trình. bây giờ E đang mới làm quen nên trong cách lập trinh chưa tối ưu hóa đc thuật toán. E mong Bác xem giúp E code mà E đã lập trình bên trên có gì sai ma không chạy đc. còn để tối ưu hơn thi chăc chắn sau này E sẽ phải phát triển thêm. rất mong đc sự giúp đỡVũ xuân Lợi
YM!:
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Tôi biết và tôi biết.
Sẽ bắt đầu với cái Sồn La, rồi mấy mạch nguồn vớ vỉn.... Rồi sẽ đèn led...
Cuộc đời là những chuyến xe, nên sẽ có:
Xe đạp điện, xe máy điện, xe ô tô điện, xe cấp cứu điện, xe tang điện.
Rồi xem.-
Channel: Điện tử công suất
hôm nay, 01:38 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vấn đề là thu ánh sáng rồi phát ra ánh sáng cơ. Hồi mẫu giáo cô bảo đừng làm, lão không nhớ à?
Tốt nhất im mồm....-
Channel: Điện tử công suất
hôm nay, 01:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietBài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
-
Channel: Tâm tình dân kỹ thuật
14-02-2025, 16:15 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanỞ đtvn này mới biết đến 2 loại mạch
1 step down
2 step up
Bây giờ anh lưu vong làm thuê bên nước lạ còn làm ra cái mach vừa up vùa dow luôn.
Tính chất là:
1 Đầu vào bằn ra cho nối thẳng
2 Đầu vào cao hơn...-
Channel: Điện tử công suất
14-02-2025, 00:51 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanHa ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....-
Channel: Điện tử công suất
14-02-2025, 00:42 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
-
Channel: Điện tử công suất
13-02-2025, 17:02 -
-
Trả lời cho Tiếng Anh cho người Việtbởi hankhungdtMình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
-
Channel: Tâm tình dân kỹ thuật
13-02-2025, 08:43 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi ti500Chúc mừng bác đã chỉnh sửa thành công, nhưng theo em thì video hơi rối nếu bác muốn gửi cho bên supplier xem.
Nếu là em thì em chỉ cần nối dây để hiển thị liên tục điện áp ở ngõ ra là 220Vdc trước khi gắn LED, kế đến là cắm...-
Channel: Điện tử công suất
13-02-2025, 07:39 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanTrước khi có đủ thực lực thì chỉ làm vì mình thôi đừng nghĩ đến chuyện khác cái mạch toàn dãi tiện sử dụng nhưng tỷ lệ hư hỏng phải bảo hành cũng cao hơn ,lợi bất cập hại .
-
Channel: Điện tử công suất
13-02-2025, 07:22 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vâng, em biết chứ bác, thực tế thì có rất nhiều điều tế nhị rất khó áp dụng được những gì tốt đẹp nhất mà chúng ta tìm ra (và nhiều khi mình nghĩ là tốt nhưng lại không tốt cho người khác). Tuy nhiên, ĐT đã và đang chọn sự sẻ...
-
Channel: Điện tử công suất
12-02-2025, 13:01 -
Comment