![]() |
hỏi về quét 2 led 7 thanh
1 Attachment(s)
các anh ơi giúp em doạn code này với
em định cho 2 led đếm từ 00 đến 99 không dùng ngắt mà dùng delay nhưng khi chạy mô phỏng thì chỉ thấy nó nhấp nháy vài thanh của led thôi các anh kiểm tra code giúp em với em cam ơn #include <16F877A.h> #Fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use fast_io(c) #use fast_io(d) int8 font[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; void main () { unsigned int8 i; set_tris_c(0); set_tris_d(0); output_d(0xff); while(1) { for(i=0;i<=100;i++); { output_d(0xfe); output_c(font[i/10]); delay_ms(50); output_d(0xfd); output_c(font[i%10]); delay_ms(50); } } } |
1 Attachment(s)
Trích:
for(i=0;i<=100;i++); bỏ dấu chấm phẩy đi tạo thêm vòng lặp nữa để đếm chậm lại. thay 2con tranzitor bằng cổng đảo. Code:
#include <16F877A.h> |
Về chương trình bạn sửa như bác tdm đã chỉ giáo.
Còn về phần Mạch nguyên lý thì bạn dùng transitor hay cổng đảo cũng được, có điều bạn phải chú ý mã hóa kẻo bị đảo mã, nhưng theo mình bạn nên dùng transitor, như thế sau này sẽ dễ mở rộng cho những dự án cần dòng lớn hơn. Đồng thời bạn nên thêm trở hạn dòng vào các thanh cho LED. |
các bác cho e hỏi thăm. e lập trình cho 16f877a quét led 7 đoạn giảm dần nhưng khi về đến 00 thì nó đứng yên số 1. bác xem thử code em sai chỗ nào. e mới học nghề thôi. em ko biết gửi mô phỏng lên như thế nào. các bác thông cảm. cám ơn nhiều
code: #include <16f877a.h> #use delay(clock=4000000) #Fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use fast_io(d) #byte portd=0x08 #use fast_io(c) #byte portc=0x07 int8 i,j,k,m; Int8 bm[10]={0b00111111,0b00000110,0b01011011, 0b01001111,0b01100110,0b01101101,0b01111101, 0b00000111,0b01111111,0b01101111}; void main() { set_tris_d(0); Set_tris_c(0); while(1) { for(m=10;m>=0;m--) { for(k=0;k<=50;k++) { output_d(0b00000010); Output_c(bm[m/10]); delay_ms(40); output_c(bm[0]); output_d(0b00000001); Output_c(bm[m%10]); delay_ms(40); output_c(bm[0]) } } } } |
mình có làm 1 cái đếm từ 0000>>9999 bạn xem thử được không
#include <16f877a.h> //#include< def_877a.h> #fuses hs,nolvp,nowdt,put #use delay(clock=20000000) #use fast_io(B) #use fast_io(C) int16 gian,i,j,dem,nghin,tram,chuc,dv; unsigned char MA7DOAN[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D, 0x7D,0x07,0x7F,0x6F}; void main () { set_tris_b(0x00); set_tris_c(0x00); while (1) { for(dem=0;dem<=9999;dem++) { gian=dem; nghin=dem/1000; dem=dem%1000; tram=dem/100; dem=dem%100; chuc=dem/10; dv=dem%10; for(j=0;j<=100;j++) { output_c(0xbf); output_b(MA7DOAN[dv]); delay_us(1000); output_c(0xdf); output_b(MA7DOAN[chuc]); delay_us(1000); output_c(0xef); output_b(MA7DOAN[tram]); delay_us(1000); output_c(0Xf7); output_b(MA7DOAN[nghin]); delay_us(1000); } dem=gian; } } } |
Trích:
{ for(m=10;m>=0;m--) { bạn sửa thử là for(m=10;m=0;m--) hoặc for(m=10;m<1;m--) xem sao nha . |
cai nayf co bac nao dung ngat timer khong post len xem
|
Múi giờ GMT. Hiện tại là 01:39 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam