° Led 7 doan được ứng dung trong rất nhiêu trong các thiết bị trong thực tê, trong các thiệt bị đo, trong các bảng hiệu, nó có tác dụng hiên thị sô liệu.... s 4 led 7 thanh anot chung,
Trang 1DIEU KHIEN VAO RA VOI LED 7 DOAN
Trang 2° Led 7 doan được ứng dung trong rất nhiêu trong các thiết
bị trong thực tê, trong các thiệt bị đo, trong các bảng hiệu,
nó có tác dụng hiên thị sô liệu
s 4 led 7 thanh anot chung, 4 chan anot chung (chân dương)
được nôi với 4 transitor đê ta có thê quét led sử dụng 4
chân của PORTD, các chân điêu khiển sáng các thanh còn
lại được nỗi song song nhau va đưa vào PORTB của AVR
và có thứ tự như sau: Từ bit 0 2 6 ứng với từ A 2 G Bit
thứ 7 là dâu châm
Trang 3kLed3
MỆCC
Q
US
e
d
c
Led 7 Seq x4
Sơ d6 noi day trén KIT AVR
Trang 4na
Chương
trình chính
Sơ đô thuật toán:
y
Cho (d) số bắt
kì <=9999
y
Tinh toan cac gia tri hang nghìn - >Đơn
VỊ
F
Quét led
y
Đẩy dữ tính
toán ra các led
Trang 5
2.Thực hành:
void daydulieu(unsigned char x)// Ham dua du lieu ra PORT
{
switch(x) // Tuy thuoc vao bien dau vao ma dua du lieu ra tu 0 9 { //logic 1 tat led, logic O bat led
case 0: { PORTB=0xC0; break; } // So 0
case 1: { PORTB=OxF9; break; } //So 1 case 2: { PORTB=0xA4; break; } // So 2
case 3: { PORTB=OxB0; break; } // So 3 case 4: { PORTB=0x99; break; } // So 4 case 5: { PORTB=0x92; break; } // So 5 case 6: { PORTB=0x82; break; } // So 6 case 7: { PORTB=OxF8; break; } // So 7 case 8: { PORTB=0x80; break; } // So 8 case 9: { PORTB=0x90; break; } // So 9
Trang 6void hienthi(int n)
se
b=(n-a*1000)/100; // lay hang tram c=(n-a*1ooo-b*1oo)/1o; //lay hang chuc
d=(n-a*1ooo-b*1oo-c*1o);// lay hang don vi
// Quet led
Trang 7PORTD=O0xFE;// led dau tien
daydulieu(d);// day ra hang don vi delay ms(10);// tre
PORTB=0xFF:;// tat toan bo led
PORTD=0xFD;//led thu hai daydulieu(c);// dua ra hang chuc delay ms(10);// tre
PORTB=O0xFF:;// tat toan bo led
PORTD=0xEB;
daydulieu(b);
delay ms(10);
PORTB=OxFF;
PORTD=0xE7;
daydulieu(a);
delay ms(10);
PORTB=OxFF;
Trang 8CodeVisionAVR - 7 thanh.pr] - [E:`cvavr` 1ACKY`Led 7 thanh' 7 thanh.c]
fe| bl>lB| #| =| | ›|s›|£a| &|w| [els
ao | +[Ð[[ 4
void hienthi(fint n)
int a,b,c,d;
#/ Lay cac so cac hang a= n/1000; // lay hang nghin b= (n-a*1l000) /100; ## lay hang tran
c=(n-a*l000-b*100)/10; // lay hang chuc
d= (n-a*lOO0-b*100-c*10);// lay hang don vi
ff Quet led
PORTD=OxFE;// led dau tien
daydulieu(d);// day ra hang don vi
delay ms(10);// tre
PORTB=OxFF;// tat toan bo led
PORTD=OxFD;//led thu hai daydulieu(c);// dua ra hang chuc delay ms(10);// tre
PORTB=OxFF;// tat toan bo led PORTD=OxFB;
daydulieu(b);
delay ms(10);
PORTB=OxFF;
PORTD=OxF?;
daydulieu(a);
delay ms(10);
PORTB=OxFF;
void main(void) /* Declare your local variables here
f/f Input/Output Ports initialization
Trang 9
Trong vong while(1) trong ham main ta chi dung mot cau
lệnh gọi hàm hiền thị như sau:
while(1)
{
hienthi(1234):
Chú ý: trong bài này vi néu dua cac PORTD va PORTB lúc khởi tạo bằng
0x00 thì tật cả các led sẽ sáng do đó tại các câu lénh khoi tao cho hai PORT
này các bạn hãy gán cho nó giá trị 0xFE như hình sau:
Trang 10CodeYisionAVR - 7 thanh.pr] - [E:`cvavr` 1ACKY`Led 7 thanh' 7 thanh.c]
// Timer/Counter Z initialization f/f Clock source: System Clock f/f Clock value: Timer 2 Stopped
/*f Mode: Normal top=FFh
#/ OCZ output: Disconnected ASSR=0x00;
TCCRZ=0x00;
TCNTZ=0x00;
OCRZ=0x00;
## External Interrupt(s) initialization
ff INTO: Off
## TNT1: Off
## TNT2: Off MCUCR=0x00;
McCuUCSR=0x00;
f/f Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
f/f Analog Comparator initialization f/f Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
SFIOR=0x00;
while (1)
{
f/f Place your code here
hienthi (4567);
}¿
Trang 11
/f Pune?=In Func6=In FuncS=In Func4=In Func3=In FuncZ=In Funcl=In FuncO=In
ff State?=T State6=T StateS=T Stated=T StateS=T StateZ=T Statel=T State0=T
PORTA=0x00;
DDRA=0x00;
fe] le leal S| =| | › |›:|£| a|m| e|"3|% get | 4
/f Port B initialization /f Pune?=Out Func6=Out FuncS=Out Funcd4=Out Func3=Out FuncZ=Out Funcl=Out FuncO=Out
ff State?=0 State6=0 StateS=0 Stated=0 StateS=0 StateZ=0 Statel=0 StateN=0
PORTB=OxFF;
DDRB=OxFF;
/f Port C initialization
ff Fune?=In Func6=In FuncS=In Funed=In Func3=In FuneZ=In Funcl=In FuncO=In
ff State?=T State6=T StateS=T Stated=T StateS=T StateZ=T Statel=T Štate0=T
PORTC=0x00;
DDRC=0x00;
## Port D initialization
/f Pune?=Out Func6=Out FuncS=Out Funcd4=Out Func3=Out FuneZ=Out Funcl=Out FuncO=Out /f State?=0 State6=0 StateS=0 Stated=0 StateS=0 StateZ=0 Statel=0 StateN=0
PORTD=OxFF;
DDRD=OxFF;
ff Timer/Counter 0 initialization
## Clock source: System Clock
ff Clock value: Timer 0 Stopped /f Mode: Normal top=FFh
f/f OCO output: Disconnected
TCCRO=0x00;
TCNTO=0x00;
OCRO=0x00;
/f Timer/Counter 1 initialization
/f Clock source: System Clock