Chào các bạn, mình đang làm mạch sau:
MÌnh làm mạch trên bằng con 89S51, mình đã lập trình được và chạy thử trên protues 7.8.
Sau đây là mạch demo của mình trên protues ( mình nén file rar, phiền các bạn đổi đuôi nhé)
mach demo.rar.doc
MÌnh dùng 7805 làm nguồn, đây là mạch orcad của nó :
CÒn đây là file orcad chi tiết :
Desktop.rar.doc
còn đây là code của mình
Mạch chạy mô phỏng tốt, nhưng khi mình làm mạch thật ( cắm ra bo ) thì nó lại gặp một số vấn đề sau:
- mình lập trình cho led 7 đoạn lúc đầu tắt ( P2=255 , thế nhưng lúc bật nó lại sáng mờ mờ cả 7 thanh . mình phát hiện nó sáng mơ mờ là do điện áp trên các chân P2 nó ở tầm 2.5V( <5V nguồn) nên mới thế.
- MÌnh nạp bằng mạch STK 500, dùng AVR studio thấy nạp bình thường ( ngon lành) nhưng khi chạy thử thì như trên. Hay tại mình chưa thiết lập đúng cho 8051 nhỉ
Mong các bạn giúp với, tuần sau mình phải nộp cho thầy rồi. Mình xin cám ơn trước
làm mạch điều chỉnh độ sáng led
- Lập trình bằng C
- Hiện thị ra led 7 đoạn 9 cấp độ sáng
- dùng VĐK 8051
- Lập trình bằng C
- Hiện thị ra led 7 đoạn 9 cấp độ sáng
- dùng VĐK 8051
Sau đây là mạch demo của mình trên protues ( mình nén file rar, phiền các bạn đổi đuôi nhé)
mach demo.rar.doc
MÌnh dùng 7805 làm nguồn, đây là mạch orcad của nó :
CÒn đây là file orcad chi tiết :
Desktop.rar.doc
còn đây là code của mình
/* ================================================== =========
mo ta: mach dieu khien do sang led don
phan cung: led don, led 7 thanh, 89s51
thach anh: 12Mhz
================================================== =====*/
#include <REGX51.H>
#include<stdio.h>
void hienthi(unsigned char x)
{ switch(x)
{ case 0: { P2=64; break;}
case 1: { P2=121; break;}
case 2: { P2=36; break;}
case 3: { P2=48; break;}
case 4: { P2=25; break;}
case 5: { P2=18; break;}
case 6: { P2=2; break;}
case 7: { P2=120; break;}
case 8: { P2=0; break;}
case 9: { P2=16; break;}
case 10: { P2=255;break;}
}
}
unsigned char a=5 , dem=0, x=0,y ;
void delay(long int t )
{ unsigned long int i;
for( i=0; i<=t; i++);
}
void battat ()
{
if (P1_3==0){
delay(300);
while ( P1_3==0)
{;}
x++;
}
if (x%2==0){ hienthi(10);
EA=0;
TR0=0;
}
else { hienthi(a);
EA=1;
TR0=1;
}
}
void lenxuong ()
{
if(( P1_1==0)&(P1_2==1))
{delay(300);
while( P1_1==0)
{;}
a++;
if (a==10) a=9;
}
else if ((P1_1==1)&(P1_2==0))
{delay(300);
while ( P1_2==0)
{
;// khoong lam gi
}
a--;
}
}
void khoitaotimer(void)
{
EA=0;
TMOD=0x02;// 8 BIT AUTO RELOAD
TH0=0x9B;
TL0=0x9B;
ET0=1;
EA=1;
TR0=1;
}
void ngattimer (void) interrupt 1// ngat timer 0
{
TR0=0;
dem++;
if( dem<=a)P1_0=1;
else P1_0=0;
if ( dem==10) dem=0;
TR0=1;
}
void main(void)
{ khoitaotimer();
while(1)
{ battat();
lenxuong();
} }
mo ta: mach dieu khien do sang led don
phan cung: led don, led 7 thanh, 89s51
thach anh: 12Mhz
================================================== =====*/
#include <REGX51.H>
#include<stdio.h>
void hienthi(unsigned char x)
{ switch(x)
{ case 0: { P2=64; break;}
case 1: { P2=121; break;}
case 2: { P2=36; break;}
case 3: { P2=48; break;}
case 4: { P2=25; break;}
case 5: { P2=18; break;}
case 6: { P2=2; break;}
case 7: { P2=120; break;}
case 8: { P2=0; break;}
case 9: { P2=16; break;}
case 10: { P2=255;break;}
}
}
unsigned char a=5 , dem=0, x=0,y ;
void delay(long int t )
{ unsigned long int i;
for( i=0; i<=t; i++);
}
void battat ()
{
if (P1_3==0){
delay(300);
while ( P1_3==0)
{;}
x++;
}
if (x%2==0){ hienthi(10);
EA=0;
TR0=0;
}
else { hienthi(a);
EA=1;
TR0=1;
}
}
void lenxuong ()
{
if(( P1_1==0)&(P1_2==1))
{delay(300);
while( P1_1==0)
{;}
a++;
if (a==10) a=9;
}
else if ((P1_1==1)&(P1_2==0))
{delay(300);
while ( P1_2==0)
{
;// khoong lam gi
}
a--;
}
}
void khoitaotimer(void)
{
EA=0;
TMOD=0x02;// 8 BIT AUTO RELOAD
TH0=0x9B;
TL0=0x9B;
ET0=1;
EA=1;
TR0=1;
}
void ngattimer (void) interrupt 1// ngat timer 0
{
TR0=0;
dem++;
if( dem<=a)P1_0=1;
else P1_0=0;
if ( dem==10) dem=0;
TR0=1;
}
void main(void)
{ khoitaotimer();
while(1)
{ battat();
lenxuong();
} }
- mình lập trình cho led 7 đoạn lúc đầu tắt ( P2=255 , thế nhưng lúc bật nó lại sáng mờ mờ cả 7 thanh . mình phát hiện nó sáng mơ mờ là do điện áp trên các chân P2 nó ở tầm 2.5V( <5V nguồn) nên mới thế.
- MÌnh nạp bằng mạch STK 500, dùng AVR studio thấy nạp bình thường ( ngon lành) nhưng khi chạy thử thì như trên. Hay tại mình chưa thiết lập đúng cho 8051 nhỉ
Mong các bạn giúp với, tuần sau mình phải nộp cho thầy rồi. Mình xin cám ơn trước
Comment