Thứ Ba, 2 tháng 10, 2012

Bài 7:lập trình led 7 seg

a) lập trình cho Led đơn: Led đơn nối với chân P3.0 của VĐK, theo sơ đồ mạch trên thì Led đơn tích cực mức 1 (sáng) và tắt ở mức 0.
Để thuận tiện, ta sẻ định nghĩa chân P3.0 như sau:
sbit LED = P3^0;
b) phím bấm nối với chân P1.0, nếu chân P1.0 bằng 0 tức là phím đang được nhấn, ngược lại nếu bằng 1 thì phím chưa được nhấn.
Ta cũng định nghĩa chân P1.0 như sau
sbit sw1 = P1^0;
c) lập trình cho Led 7 đoạn
Led 7 đoạn chẳng qua là 8 led đơn ghép lại ta có các led a,b,c,d,e,f,g, ghép lại với nhau và nối với VĐK theo thứ tự sau:

ở ví dụ này Led 7 đoạn tích cực ở mức 0 để đèn sáng số 0 ta làm như sau

à giá trị đưa vào P2 như sau 11000000 = C
d) chương trình:



#include"REGX51.h" // khai báo thư viện của VDK

sbit sw1 = P1^0; // định nghĩa chân P1.0
sbit LED = P3^0; // định nghĩa chân P3.0
unsigned char i,a; // khai báo a,i kiểu unsighned char tức là a và i có
// giá trị từ 0 à 255
void delay(unsigned int x) { // hàm delay tạo thời gian trể tùy vào tham số x
// truyền vào
while(x--);
}


unsigned char led_sang[10] =
{0xC0,0xF9,0xA4,0xb0,0x99 ,0x92,0x82,0xf8,0x80 ,0x98};
//Mảng chứa giá trị sáng của Led 7 đoạn (0à9)
void main (void) // hàm chính
{
i=0;
a=0;
sw1 = 1;//input
for(;;){
if(sw1==0)
{
P2=led_sang[i]; // HIEN THI LED 7 DOAN
i=i+1;
if (i==10) i=0;

a=i%2; //KIEM TRA SO CHAN LE
if (a==0)
LED = 1; //NEU CHAN THI BAT LEN
if (a==1)
LED=0; //LE THI TAT DI
delay(50000);
}
}
}
Quang Cao