Các bạn giúp mình với. Hiện tại mình đang làm 1 mạch đếm sản phẩm dùng VI ĐIều Khiển AVR. Số xung mình định đếm là từ 0--99, sau đó ngắt. Kết quả hiển thị ra 2 LED 7 thanh. Mình chỉ biết nối ra 1 led và cho nó đếm từ 0-9 thôi. Còn sang Led thứ 2 thì mình ko biết làm như thế nào cả. Mã BCD từ 0-->99 mình lấy từ 8 chân của PORTB của Vi điều khiển. Các chỉ giúp mình cách ghép nối 2 LED đc ko. Mình cám ơn nhiều
Thông báo
Collapse
No announcement yet.
Giải mã BCD sang LED 7 thanh dùng 7447.
Collapse
X
-
Mình viết code cho AVR như thế này rồi mà chạy mô phỏng không thể đc . Các bạn giúp mình sửa lỗi được ko. Mình cám ơn nhiêu
int main(void){
DDRB=0xFF; //PORTB la output PORT
PORTB=0x00;
DDRD=0x00; //khai bao PORTD la input de ket noi Button kich vao chan T0
PORTD=0xFF; //su dung dien tro keo len cho PORTD
TCCR0=6;// CS02=1, CS01=1, CS00=0: xung nhip tu chan T0, up
TCNT0=0;
while (1){ //vòng lặp
if (TCNT0<10) PORTB=TCNT0;
BCD=TCNT0/10; //Chuyển từ mã nhị phân sang số BCD
BCD<<4;// Dịch BCD sang trái 4 bit
BCD=TCNT0%10+BCD;//Lấy phần dư của phép chia TCNT0 cho 10 cộng với BCD
PORTB=BCD;
if (bit_is_clear(PIND,7)) TCNT0=0; //Reset bo dem neu chan PD7=0
}
return 0;
}
Comment
-
đã dùng vđk còn tốn tiền mua con 7447 làm gì. mình mới làm đếm sp bằng con at8 đây chỉ cần 1 port đưa mã led 4 chân của 1 port quét led là ok rồi
vd code:
#include <mega8.h>
#include <delay.h>
#define data PORTD //??t bi?n data là PORTD
#define led1 PORTC.0
#define nut PINC.3
#define led2 PORTC.1
#define xung PINC.5
#define bao PORTB.0
unsigned char led7[10]={ 0b11000000, // so "0"
0b11111001, // so "1"
0b10100100, // so "2"
0b10110000, // so "3"
0b10011001, // so "4"
0b10010010, // so "5"
0b10000010, // so "6"
0b11111000, // so "7"
0b10000000, // so "8"
0b10011000 // so "9"
};
unsigned char chucai[2]={ 0b10100001, //d
0b11000001 //u
};
int a,b,i,xung_truoc,check,count;
void hienthi(int k)
{a=k/10;
b=k%10;
led1=1;
led2=0;
data=led7[a];
delay_us(20);
led1=led2=0;
led1=0;
led2=1;
data=led7[b];
delay_us(20);
led1=led2=0;
}
void hiendu()
{
led1=1;
led2=0;
data=chucai[0];
delay_us(20);
led1=0;
led2=1;
data=chucai[1];
delay_us(20);
led1=led2=0;
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
PORTB=0x00;
DDRB=0x01;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State6=T State5=P State4=P State3=P State2=T State1=0 State0=0
PORTC=0x38;
DDRC=0x03;
// Port D initialization
// Func7=In Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTD=0x7F;
DDRD=0x7F;
i=00;
check=0;
count=0;
while (1)
{ if(nut==0) //tr??ng h?p ??m t? do
{
hienthi(i);
if(xung==1) //n?u xung=1
xung_truoc=1; //gán xung_truoc=1
if(xung==0 && xung_truoc==1) //n?u xung ?ang chuy?n wa 0 và xung tr??c =1
{
i++;
if(i>99)
i=0;
xung_truoc=0;
}
}
else //tr??ng h?p ??m 10 thì báo ??
{ if(xung==1)
xung_truoc=1;
if(xung==0 && xung_truoc==1)
{
i++;
check=0;
xung_truoc=0;
}
if(check==1) //xét ?i?u ki?n check n?u check=1 thì nó th?c hi?n l?nh d??i hi?n ch? "du"
{
hiendu();
bao=1;
}
else //ng??c l?i khi check=0
{
bao=0; //?èn báo ko sag1
if(i==10) //n?u s?n ph?m =10
{
hienthi(i); //hi?n s?n ph?m ra
if(count<150)
{
count++;
continue; //t? câu l?nh if là ?? hi?n ?c s? 10, l?nh continue là g?p nó s? quay v? vòng code ??u tiên
}
else //n?u count l?n h?n 150
count = 0;
delay_ms(50);
bao=1;
check=1;
i=0;
}
else
hienthi(i);
}
}
};
}
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Mua anten ở đâu?bởi tmcodonAnten bạn thu nguồn sóng nào vậy? Nếu xem truyền hình thì giờ k làm đc anten nữa rồi
-
Channel: Ăng ten và truyền sóng
16-11-2024, 15:34 -
-
Trả lời cho Mạch nguồn đôi dùng 7812 và 7912bởi tmcodonThank bác nhá. Tìm mãi mới thấy. Giờ vọc đã xem sao...
-
Channel: Hỗ trợ học tập
16-11-2024, 10:39 -
-
bởi tungdqEm cần tìm sơ đồ mạch một số Main máy tính đời cao như Asrock B560M-HDV, các cao nhân chỉ giúp với. Thank!
-
Channel: Các mạch điện ứng dụng
15-11-2024, 08:27 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677nhân tiện cho mình hỏi thêm về cái phần test hipot (cao áp),là để kiểm tra độ bền cách điện giưa các cuộn dây,mà thấy thông số test thường ở mức 4kvac,vậy nếu mấy con fail đó xài bình thường vẫn dduocj phải không ạ,vì điện mình làm gì lên tới mức đó
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:52 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677máy đo số vòng thì cty có ,mà nó to quá,tưởng có máy nào gọn gọn bỏ túi được thì tiện hơn,vì đi lại nhiều...
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:47 -
-
bởi tmcodonMình thấy diễn đàn có chuyên mục quảng cáo rồi mà. Bạn đóng góp để mở luồng riêng
-
Channel: Hướng dẫn sử dụng diễn đàn
09-11-2024, 13:36 -
-
bởi Nicole08Xin chào mọi người, tôi đã sử dụng Flashforge Inventor 2 được gần 5 năm và rất hài lòng với nó, nhưng tuần trước đã xảy ra sự cố. Có vẻ như động cơ bước đưa sợi in vào đầu nóng đã bị hỏng. Mọi thứ khác có vẻ ổn trên máy...
-
Channel: Điện tử dành cho người mới bắt đầu
09-11-2024, 12:55 -
Comment