Em muốn lập trình để đếm số lần nhấn nút(nút nhấn được nối với 1 chân bất kỳ) thì phải viết thế nào ạ, nhờ các bàc chỉ giùm
Thông báo
Collapse
No announcement yet.
Hỏi về cách đếm số lần nhấn nút
Collapse
X
-
Có 2 cách: có thể dùng ngắt ngoài or dùng cách quét phím.Attached Files
-
nút nối với chân bất kí thì ai sài ngắt ngoài đc. Viết như thế này này::
//Doan nay dung ngat dinh thoi la ok
if(PORTB.0==0)//Noi chan nao thi tuy ban
{
a=1;//Gan bien a=1
}
if(PORTB.0==1 && a==1)
{
dem++;//Tăng số lần bấm nút lên 1 đơn vị
a=0;
}
Phần cứng cho con tụ 104 // với nút bấm là ok/ Cách trên nhẹ nhàng nhất_ko phụ thuộc vào CT chính.
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
Comment
-
Em viết chương trình đếm số lần nhấn nút rồi xuất ra led 7 đoạn như sau nhưng nó lại không chạy, các bác chỉ giùm em với
#include <REGX52.H>
unsigned char z[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 8};
bit a;
unsigned char x;
void main()
{
x=0;
P2=z[x];
while(1)
{
if(P1_0==1)
{
a=1;
}
if(P1_0==0 && a==1)
{
x++;
}
P2=z[x];
}
}
Comment
-
k chạy là đúng . Nguyên nhân vì để đếm nhấn nút , thì động tác nhấn - nhả mới gọi là kết thúc quá trình nhấn nút
Code:#include <REGX52.H> unsigned char z[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 8}; unsigned char x; // chân P1.0 là nút , cổng P2 xuất giá trị . nhớ dùng con trở 10k nối chân P1.0 lên 5v void main() { P1.0=1; // khởi tạo chân P1.0 là chân nhập while(1) { if(!P1.0) { delay_ms(50);while(!P1.0);delay_ms(10); // chống nảy cho phím x++; if(x==10) x=0; P2= z[x]; } } }
Hàm delay_ms(unsigned char k) tự tạo . vào luồng "hứong dẫn lập trình 8051 trên Keil C" mà tìm hiểu kỹ hơn
Comment
-
Bây giờ em thêm phím ở P1_1 để giảm thì nó lại không chạy, các bác góp ý giùm xem em sai chỗ nào\
#include <REGX52.H>
unsigned char z[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 8};
unsigned char x;
void delay_ms(unsigned int ms)
{
unsigned int m;
unsigned char n;
for(m=0;m<ms;m++)
for(n=0;n<121;n++)
{}
}
void main()
{ P1_0=1;P1_1=1;
while(1)
{
if(!P1_0)
{ delay_ms(50);while(!P1_0);delay_ms(10);
x++;
if(x==10) x=0;
}
if(!P1_1)
{ delay_ms(50);while(!P1_0);delay_ms(10);
x--;
if(x==10) x=0;
}
P2=z[x];
}
}
Comment
-
Nguyên văn bởi phuong197 Xem bài viếtBây giờ em thêm phím ở P1_1 để giảm thì nó lại không chạy, các bác góp ý giùm xem em sai chỗ nào\
Code:#include <REGX52.H> unsigned char z[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}; unsigned char x; void delay_ms(unsigned int ms) { unsigned int m; unsigned char n; for(m=0;m<ms;m++) for(n=0;n<121;n++) {} } void main() { P1_0=1;P1_1=1; while(1) { if(!P1_0) { delay_ms(50);while(!P1_0);delay_ms(10); x++; if(x==10) x=0; } if(!P1_1) { delay_ms(50);while(!P1_0);delay_ms(10); x--; if(x==10) x=0; } P2=z[x]; } }
sai chỗ này nè
Code:if(!P1_1) { delay_ms(50);while(!P1_0);delay_ms(10); x--; if(x==10) x=0; }
Code:......... while(!P1_1); delay_ms(10); x--;if(x==0) x=10;
Comment
Bài viết mới nhất
Collapse
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 22:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 22:14 -
-
Trả lời cho Tự làm máy đo Cuộn cảmbởi bacthoHay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:48 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 21:43 -
-
Trả lời cho các bạn giúp mình về file HEX với!!!bởi bacthoBạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
-
Channel: Vi điều khiển họ 8051
Hôm qua, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 20:43 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Màn của e là LCD , e muốn thay thế bằng màn led thì có cáp chuyển đổi nào thực hiện đc việc đó ko nhỉ, nếu có bác mách e với....
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 16:34 -
-
bởi bqvietServo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí
Qua cổng song song LPT cổ
https://www.electronicsforu.com/elec...eed-controller
Qua cổng USB - xem thêm đám FT232RL-
Channel: Điện tử công nghiệp
22-11-2024, 15:56 -
Comment