Thông báo

Collapse
No announcement yet.

giúp đỡ em vphuwuwowng pháp quét led 7seg với..

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • giúp đỡ em vphuwuwowng pháp quét led 7seg với..

    Em chào cả nhà. có bác nào giải thích hộ em một vấn đền nhỏ này với ạ. chả là thế này , em đang làm cái đồ án đồng hồ vạn niên và có một xíu ở phần hiện thị led 7seg mong bác nào biết thì chỉ giáo dùm. mạch của em quét tới 23 con led 7seg lận. và đây là chương trình con để quét 23 led.
    //void T1_ISR(void) interrupt 3 // Dung ngat Timer1 de hien thi 23 Led_7D
    {
    TR1=0;
    TF1=0;
    TH1=-1000/256; // Gia tri cho Timer1: 1000(us) x 15 = 15(ms)
    TL1=-1000%256;
    if(Display==0)
    {
    index++;
    if(index==1)
    {
    Data=sec;
    P0=0x00; E11=1; E12=1;
    P2=0x00;
    P0=led7_data[Data%10];//xuat gia tri hang don vi
    E11=0;E12=1;
    }
    if(index==2)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x01;
    chuc=Data/10; //xuat gia tri hang truc
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1;}
    }
    //************************************************** ****************************
    if(index==3)
    {
    Data=min;
    P0=0x00; E11=1; E12=1;
    if(set==1 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x02;
    P0=led7_data[Data%10];
    E11=0;E12=1;
    }
    }
    if(index==4)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x03;
    chuc=Data/10;
    P0=led7_data[chuc];
    E11=0;E12=1;
    }
    //************************************************** ****************************
    if(index==5)
    {
    if(AM_PM==1)
    {
    if(hour>12) Data=hour-12;
    else
    {
    if(hour==0) Data=12;
    else Data=hour;
    }
    }
    else Data=hour;
    P0=0x00; E11=1; E12=1;
    if(set==2 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x04;
    P0=led7_data[Data%10];
    E11=0;E12=1;
    }
    }
    if(index==6)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x05;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    //************************************************** ****************************
    if(index==7)
    {
    if ((day<8)&&(day>1)) Data=day;
    else if (day==1) Data=10;
    P0=0x00; E11=1; E12=1;
    if(set==3 && bat_nhay==1){ index++; }
    else
    {
    P2=0x06;
    P0=led7_data[Data];
    E11=0;E12=1;
    }
    }
    //************************************************** ****************************
    if(index==8)
    {
    Data=date;
    P0=0x00; E11=1; E12=1;
    if(set==4 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x07;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    }
    if(index==9)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x08;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    //************************************************** ****************************
    if(index==10)
    {
    Data=month;
    P0=0x00; E11=1; E12=1;
    if(set==5 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x09;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    }
    if(index==11)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x0a;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    //************************************************** ****************************
    if(index==12)
    {
    Data=year_20;
    P0=0x00; E11=1; E12=1;
    if(set==6 && bat_nhay==3){ index++; index++; index++; index++; }
    else
    {
    P2=0x0b;
    P0=led7_data[Data/10];
    E11=0;E12=1;
    }
    }
    if(index==13)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x0c;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    if(index==14)
    {
    Data=year;
    P0=0x00; E11=1; E12=1;
    P2=0x0d;
    P0=led7_data[Data/10];
    E11=0; E12=1;
    }
    if(index==15)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x0e;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    if(index==16)
    {
    Data=DATEAL;
    P0=0x00; E11=1; E12=1;
    P2=0x00;
    chuc=Data/10;//xuat gia tri hang don vi
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=1;E12=0; }
    }
    if(index==17)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x10;
    P0=led7_data[Data%10]; //xuat gia tri hang truc
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==18)
    {
    Data=MONTHAL;
    P0=0x00; E11=1; E12=1;
    P2=0x20;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=1;E12=0; }

    }
    if(index==19)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x30;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==20)
    {
    Data=yearal_20;
    P0=0x00; E11=1; E12=1;
    P2=0x40;
    P0=led7_data[Data/10];
    E11=1;E12=0;
    }
    if(index==21)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x50;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==22)
    {
    Data=YEARAL;
    P0=0x00; E11=1; E12=1;
    P2=0x60;
    P0=led7_data[Data/10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==23)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x70;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    if(index==24) index=0;
    }

    if(Display==1)
    {
    index++;
    if(index==1)
    {
    Data=sec;
    P0=0x00; E11=1; E12=1;
    P2=0x00;
    chuc=led7_data[Data%10];//xuat gia tri hang don vi
    if(chuc!=0){
    P0=chuc;
    E11=0;E12=1; }
    }
    if(index==2)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x01;
    chuc=Data/10; //xuat gia tri hang truc
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1;}
    }
    //************************************************** ****************************
    if(index==3)
    {
    Data=min;
    P0=0x00; E11=1; E12=1;
    if(set==1 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x02;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    }
    if(index==4)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x03;
    chuc=Data/10;

    P0=led7_data[chuc];
    E11=0;E12=1;
    }
    //************************************************** ****************************
    if(index==5)
    {
    if(AM_PM==1)
    {
    if(hour>12) Data=hour-12;
    else
    {
    if(hour==0) Data=12;
    else Data=hour;
    }
    }
    else Data=hour;
    P0=0x00; E11=1; E12=1;
    if(set==2 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x04;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    }
    if(index==6)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x05;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    if(index==7)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x06;
    P0=led7_data[1];
    E11=0; E12=1;
    }
    if(index==8)
    {
    Data=a_min;
    if(alarm==1 && bat_nhay==1){ index++; index++; }
    else
    {
    P0=0x00; E11=1; E12=1;
    P2=0x0a;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    }
    if(index==9)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x09;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    if(index==10)
    {
    if(AM_PM==1)
    {
    if(a_hour>12) Data=a_hour-12;
    else
    {
    if(a_hour==0) Data=12;
    else Data=a_hour;
    }
    }
    else Data=a_hour;
    if(alarm==2 && bat_nhay==1){ index++; index++; }
    else
    {
    P0=0x00; E11=1; E12=1;
    P2=0x08;;
    P0=led7_data[Data%10];
    E11=0;E12=1;
    }
    }
    if(index==11)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x07;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    if(index==12)
    {
    P0=0x00; E11=1; E12=1;
    if(alarm==3 && bat_nhay==2){ index++; index++; index++; index++; }
    else
    {
    P2=0x0c;
    P0=led7_data[0];
    E11=0;E12=1;
    }
    }
    if(index==13)
    {
    P0=0x00; E11=1; E12=1;
    if(on_off==1)
    {
    P2=0x0d;
    P0=0x37;
    E11=0;E12=1;
    }
    else
    {
    P2=0x0d;
    P0=0x71;
    E11=0;E12=1;
    }
    }
    if(index==14)
    {
    P0=0x00; E11=1; E12=1;
    if(on_off==1)
    {
    P2=0x0e;
    P0=0x00;
    E11=0;E12=1;
    }
    else
    {
    P2=0x0e;
    P0=0x71;
    E11=0;E12=1;
    }
    }
    if(index==15)
    {
    P0=0x00; E11=1; E12=1;
    if(a_hour>12)
    {
    P2=0x0b;
    P0=0x40;
    E11=0;E12=1;
    }
    else
    {
    P2=0x0b;
    P0=0x00;
    E11=0;E12=1;
    }
    }
    if(index==16)
    {
    Data=DATEAL;
    P0=0x00; E11=1; E12=1;
    P2=0x00;
    chuc=Data/10;//xuat gia tri hang don vi
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=1;E12=0; }
    }
    if(index==17)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x10;
    P0=led7_data[Data%10]; //xuat gia tri hang truc
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==18)
    {
    Data=MONTHAL;
    P0=0x00; E11=1; E12=1;
    P2=0x20;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=1;E12=0; }

    }
    if(index==19)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x30;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==20)
    {
    Data=yearal_20;
    P0=0x00; E11=1; E12=1;
    P2=0x40;
    P0=led7_data[Data/10];
    E11=1;E12=0;
    }
    if(index==21)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x50;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==22)
    {
    Data=YEARAL;
    P0=0x00; E11=1; E12=1;
    P2=0x60;
    P0=led7_data[Data/10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==23)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x70;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    if(index==24) index=0;
    }
    if(Display==2)
    {
    index++;
    if(index==1)
    {
    Data=sec;
    P0=0x00; E11=1; E12=1;
    P2=0x00;;
    chuc=led7_data[Data%10];//xuat gia tri hang don vi
    if(chuc!=0){
    P0=chuc;
    E11=0;E12=1; }
    }
    if(index==2)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x01;
    chuc=Data/10; //xuat gia tri hang truc
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1;}
    }
    //************************************************** ****************************
    if(index==3)
    {
    Data=min;
    P0=0x00; E11=1; E12=1;
    if(set==1 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x02;
    P0=led7_data[Data%10];
    E11=0;E12=1;
    }
    }
    if(index==4)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x03;
    chuc=Data/10;

    P0=led7_data[chuc];
    E11=0;E12=1;
    }
    //************************************************** ****************************
    if(index==5)
    {
    if(AM_PM==1)
    {
    if(hour>12) Data=hour-12;
    else
    {
    if(hour==0) Data=12;
    else Data=hour;
    }
    }
    else Data=hour;
    P0=0x00; E11=1; E12=1;
    if(set==2 && bat_nhay==1){ index++; index++; }
    else
    {
    P2=0x04;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    }
    if(index==6)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x05;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    if(index==7)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x06;
    P0=led7_data[2];
    E11=0; E12=1;
    }
    if(index==8)
    {
    Data=a_min1;
    if(alarm1==1 && bat_nhay==1){ index++; index++; }
    else
    {
    P0=0x00; E11=1; E12=1;
    P2=0x0a;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    }
    if(index==9)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x09;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    if(index==10)
    {
    if(AM_PM==1)
    {
    if(a_hour1>12) Data=a_hour1-12;
    else
    {
    if(a_hour1==0) Data=12;
    else Data=a_hour1;
    }
    }
    else Data=a_hour1;
    if(alarm1==2 && bat_nhay==1){ index++; index++; }
    else
    {
    P0=0x00; E11=1; E12=1;
    P2=0x08;
    P0=led7_data[Data%10];
    E11=0; E12=1;
    }
    }
    if(index==11)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x07;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=0;E12=1; }
    }
    if(index==12)
    {
    P0=0x00; E11=1; E12=1;
    if(alarm1==3 && bat_nhay==2){ index++; index++; index++; index++; }
    else
    {
    P2=0x0c;
    P0=led7_data[0];
    E11=0; E12=1;
    }
    }
    if(index==13)
    {
    P0=0x00; E11=1; E12=1;
    if(on_off1==1)
    {
    P2=0x0d;
    P0=0x37;
    E11=0; E12=1;
    }
    else
    {
    P2=0x0d;
    P0=0x71;
    E11=0; E12=1;
    }
    }
    if(index==14)
    {
    P0=0x00; E11=1; E12=1;
    if(on_off1==1)
    {
    P2=0x0e;
    P0=0x00;
    E11=0; E12=1;
    }
    else
    {
    P2=0x0e;
    P0=0x71;
    E11=0; E12=1;
    }
    }
    if(index==15)
    {
    P0=0x00; E11=1; E12=1;
    if(a_hour1>12)
    {
    P2=0x0b;
    P0=0x40;
    E11=0; E12=1;
    }
    else
    {
    P2=0x0b;
    P0=0x00;
    E11=0; E12=1;
    }
    }
    if(index==16)
    {
    Data=DATEAL;
    P0=0x00; E11=1; E12=1;
    P2=0x00;
    chuc=Data/10;//xuat gia tri hang don vi
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=1;E12=0; };
    }
    if(index==17)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x10;
    P0=led7_data[Data%10]; //xuat gia tri hang truc
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==18)
    {
    Data=MONTHAL;
    P0=0x00; E11=1; E12=1;
    P2=0x20;
    chuc=Data/10;
    if(chuc!=0){
    P0=led7_data[chuc];
    E11=1;E12=0; }

    }
    if(index==19)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x30;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==20)
    {
    Data=yearal_20;
    P0=0x00; E11=1; E12=1;
    P2=0x40;
    P0=led7_data[Data/10];
    E11=1;E12=0;
    }
    if(index==21)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x50;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==22)
    {
    Data=YEARAL;
    P0=0x00; E11=1; E12=1;
    P2=0x60;
    P0=led7_data[Data/10];
    E11=1;E12=0;
    }
    //************************************************** ****************************
    if(index==23)
    {
    P0=0x00; E11=1; E12=1;
    P2=0x70;
    P0=led7_data[Data%10];
    E11=1;E12=0;
    }
    if(index==24) index=0;
    }

    //************************************************** ****************************
    TR1=1;
    }

    và vấn đề của em là các bác cho em hỏi cái bien desplay trong chương trình là để làm gì vậy ạ? có phải là đê quản lý cái số lần quét led không ạ? và biến index có phải là để chọn led để cấp nguồn trong tổng số 23 led không ạ?
    Last edited by vanthan25092; 16-06-2013, 00:34.

  • #2
    Thông thường người ta đặt tên hàm và tên biến trùng với chức năng của chúng.
    Display là một biến toàn cục và nghĩa của nó là “hiển thị”. Nó có 3 trạng thái tương ứng với 3 cách thức hiển thị khác nhau, chắc chắn là có liên quan đến hiển thị lúc chỉnh giờ. Chức năng của nó không thể hiểu hết thông qua hàm này đâu. Ngoài hàm này ra, bạn hãy xem những cái hàm mà những điều kiện tác động lên biến Display làm nó bị thay đổi thì bạn sẽ hiểu hơn về nó. Mình thấy chương trình bạn đang tham khảo hơi bị cồng kềnh.

    nguyễn sĩ tú CNT48DH đhhh
    phone: 0969132917

    Comment


    • #3
      23 led: Đủ nhiệt không em
      Be quan. Plz contact through email:

      Comment


      • #4
        Nguyên văn bởi Lenh Ho Xem bài viết
        23 led: Đủ nhiệt không em
        em quét 23 led mach vẫn chạy ngon lanh. thâm chi 23 led loại bé+ 4 led loại 2.5 inth vẫn ok!

        Comment


        • #5
          Nguyên văn bởi tiensitu86 Xem bài viết
          Thông thường người ta đặt tên hàm và tên biến trùng với chức năng của chúng.
          Display là một biến toàn cục và nghĩa của nó là “hiển thị”. Nó có 3 trạng thái tương ứng với 3 cách thức hiển thị khác nhau, chắc chắn là có liên quan đến hiển thị lúc chỉnh giờ. Chức năng của nó không thể hiểu hết thông qua hàm này đâu. Ngoài hàm này ra, bạn hãy xem những cái hàm mà những điều kiện tác động lên biến Display làm nó bị thay đổi thì bạn sẽ hiểu hơn về nó. Mình thấy chương trình bạn đang tham khảo hơi bị cồng kềnh.
          em cảm ơn nhé!

          Comment

          Về tác giả

          Collapse

          vanthan25092 Tìm hiểu thêm về vanthan25092

          Bài viết mới nhất

          Collapse

          Đang tải...
          X