Thông báo

Collapse
No announcement yet.

Nhận 1 số tự nhiên 3 chữ số bất kỳ hiển thị led 7 đoạn??

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

  • Nhận 1 số tự nhiên 3 chữ số bất kỳ hiển thị led 7 đoạn??

    Code:
    #include <REGX51.H>
    sbit A1 = P1^0;
    sbit A2 = P1^1;
    sbit A3 = P1^2;
    char str[3];
    unsigned char i=0,tram,chuc,donvi;
    int x;
    code unsigned char dataled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    void delay(int time)
    {int n;
    for(n=0;n<time;n++)
    {
    ;
    }
    }
    
    
    void hienthi(unsigned char num)
    {A1 = 1;
    P0  = dataled[num/100];
    delay(50);
    A1 = 0;
    P0 = 0xff;
    
    A2 = 1;
    P0 = dataled[num/10%10];
    delay(50);
    A2 = 0;
    P0 = 0xff;
    
    A3 = 1;
    P0 = dataled[num%10];
    delay(50);
    A2 = 0;
    P0 = 0xff;
    }
    void Setup_isr()
    {
    SCON = 0x52; 	  /* Che do 1: 8-bit UART, cho phep truyen   */
    TMOD = 0x20;	  /* timer 1 che do 2: 8-Bit tu dong nap lai.          */
    TH1 = 0xfd ;	  /* toc do 9600 baud                */
    TL1 = 0xfd ;
    TI = 0;			  /* co ngat nha^n.=0*/
    RI=0;			  /* co ngat' truye^n =0*/
    TR1 = 1;			 /* timer 1 run                           */
    ES   =1;			 /* cho phep ngat noi tiep */
    }
    //===========================
    void nhan(void) interrupt 4	  //Chuong trinh con dung ngat noi tiep
    {
    	char ch;
    	if(RI)
    	{
    		   RI=0;       	  
               ch=SBUF;
    		   str[i]=ch;
    		   i++;
    		   if(i==3)
    		   {
    		   donvi = str[0]-48;
    		   chuc = str[1]-48;
    		   tram = str[2]-48;
    		   x= tram*100+chuc*10+donvi;
    		   str[3]=0;
    		   i=0;}}}
     void main()
     {
     Setup_isr();
     EA=1;
     while(1)
     { 
     hienthi(x);
     }
     }
    Trên đây là code e viết, các bác chỉ giúp e nó sai ở đâu mà hiển thị ko đúng vs ạ. e xin cám ơn
    Nguyễn Huy Biên - 01649 802 694
    gmail :

  • #2
    cái này không ai giúp e ạ??
    Nguyễn Huy Biên - 01649 802 694
    gmail :

    Comment


    • #3
      theo mình thì bạn là phần nhận các số từ giao diện rùi truyền mã xuống cho chíp ứng với mỗi mã là 1 số các này có thể code hơi dài nhưng mình nghĩ là có thể

      Comment


      • #4
        Nguyên văn bởi dtcn_112 Xem bài viết
        theo mình thì bạn là phần nhận các số từ giao diện rùi truyền mã xuống cho chíp ứng với mỗi mã là 1 số các này có thể code hơi dài nhưng mình nghĩ là có thể
        thanks bạn. Nhưng nếu mỗi mã ứng với 1 số thì giả sử mình gửi từ 0- 1 000 000 thì být làm sao được.
        ở đây mình cho dữ liệu nhận được vào buffer sau đó lại tách để hiển thị, nhưng ko hiểu làm sao mà nó hiển thị sai hết cả
        Nguyễn Huy Biên - 01649 802 694
        gmail :

        Comment


        • #5
          A=123;
          led1=A%10; //ket qua led1=3(chia lay du),tra bang ma led 7 doan,voi dia chi led1
          A=A/10;
          led2=A%10;//ket qua led2=2,tra bang ma
          A=A/10;
          led3=A%10;//ket qua led3=1
          ban tu tao ra vong lap voi so led 7 doan dang hien thi chinh la so vong lap.ok.
          , , ,

          Comment


          • #6
            Nguyên văn bởi rptdnmqs Xem bài viết
            A=123;
            led1=A%10; //ket qua led1=3(chia lay du),tra bang ma led 7 doan,voi dia chi led1
            A=A/10;
            led2=A%10;//ket qua led2=2,tra bang ma
            A=A/10;
            led3=A%10;//ket qua led3=1
            ban tu tao ra vong lap voi so led 7 doan dang hien thi chinh la so vong lap.ok.
            oh. thanks bạn. nhưng ở đây mình đang mắc ở chỗ tách dư liệu nhận được từ cổng UART ấy, dữ liệu mình nhận được toàn sai thôi
            Nguyễn Huy Biên - 01649 802 694
            gmail :

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X