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
-
bởi thanghiCùng với sự bùng nổ của công nghệ và xu hướng chuyển đổi số, ngành điện tử đang trở thành một trong những lĩnh vực thu hút nhiều doanh nhân và nhà đầu tư. Việc thành lập công ty trong ngành này không chỉ giúi hạn ở việc sản xuất phần cứng mà còn mở rộng sang các dịch vụ...
-
Channel: Xu hướng, nhu cầu và thị trường
hôm nay, 21:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
-
Trả lời cho hỏi về thiết kế mạch tuần tự trên proteusbởi Hatruong1309
-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
Comment