Thông báo

Collapse
No announcement yet.

giúp em về con 24c01 với

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

  • giúp em về con 24c01 với

    chào các anh ,em đang làm về cái quang báo 2 cái 8x8 nói vói con 89s52 em định nối thêm 24c02 để lưu font chử, nhưng kẹt 1 nổi em hok biết cách luu các mả font chử này vào eeprom .còn hiển thị các chử trên led thì em làm được rồi nhưng đưa nó vao eprom thì chịu em đã đọc qua datashet con 24c01 nhưng vẩn chưa biết cách truyền dử liệu cho nó .em cũng đả tham khảo nhiều bài trên diển đàn nhưng hok thấy cách truyền mả font vào con 24c01 cả .bác nào làm rồi thì giúp em với nha cảm ơn cấc nhnhieeuf

  • #2
    Bạn viết chương trình bằng C hay ASM có thể đẩy code cho mọi người góp ý cho là tôt nhất! về I2C này trong diễn đàn cũng đã đề cập rồi nưa mà!

    Comment


    • #3
      em viết = C thôi còn code thì em chưa viết vì hok biết cách viết cho con 24c01 mà còn cách truyền theo chuẩn ìc thì em củng đọc qua rồi , ai giúp em tí nha

      Comment


      • #4
        Tớ cũng đang tịt về vấn đề này ! Font chữ thì tớ để trong ROM con 8951 rồi ,còn 24C01 tớ định để lưu dòng chữ thôi, nghĩa là từ máy tính , qua con 8951 ta nạp vào ROM, rôi khi chạy ta gọi dòng chữ từ 24C01 ra, có đoạn Code mẫu đây , bác nào bớt chút thời gian giải thích cho em , nhiệm vụ của một số câu lệch và hàm cái !
        Code:
        ] 
        Chuong trìn di?u khi?n: 
        ;main.c 
        #include <AT89X52.H> 
         
        #define B9600   -3        //baud 9600 11.059MHz 
        #define B4800   -6        //baud 4800 11.059MHz 
        #define B2400   -12       //baud 2400 11.059MHz 
        #define B1200   -24       //baud 1200 11.059MHz 
         
        #define DBLED   P3_2 
        #define RomSize   512 
         
        extern void SetupSerial(char baud); 
        extern void TxChar(unsigned char ch); 
        extern unsigned char RxChar(void); 
        extern void TxStr(char *str); 
        void TxHex(unsigned char ch); 
        void TxCrLf(void); 
         
        void Delay(unsigned int loop); 
        bit Setup24c(void); 
        unsigned char ReadByte(unsigned int addr); 
        bit WriteByte(unsigned int addr, unsigned char ch); 
        void ShiftOut(unsigned char bytout); 
         
        void ReadXRom24C(void); 
        void ResetXRom24C(void); 
        void WriteXRom24C(unsigned char ch); 
         
        unsigned int Addr; 
         
        void main (void) 
        { 
          unsigned char ch; 
         Delay(55000); 
            SetupSerial(B9600); 
         TxStr("Eeprom 24Cxx"); 
         TxCrLf(); 
         
         Setup24c(); 
          Addr = 0; 
         
            while(1) 
            { 
          DBLED = 1; 
          if(RI) 
          { 
           DBLED = 0; 
           ch = RxChar(); 
           TxChar(ch); 
        WriteXRom24C(ch); 
         
           switch(ch) 
           { 
            case 0x17:    //Ctrl_W 
             ResetXRom24C(); 
             break; 
                              case 0x12:      //Ctrl_R 
             ReadXRom24C(); 
                                    break; 
            default: 
         
             break; 
           } 
          } 
         
            } 
         
        } 
         
        void ReadXRom24C(void) 
        { 
            unsigned char ch; 
          unsigned int j; 
         TxCrLf(); 
          TxStr("Read Xrom 24c:"); 
         TxCrLf(); 
         for(j=0;j<512;j++) 
            { 
                ch = ReadByte(j); 
          TxHex(ch); 
            } 
        } 
         
        void ResetXRom24C(void) 
        { 
          Addr = 0; 
        } 
         
        void WriteXRom24C(unsigned char ch) 
        { 
          if(ch >= 32 && ch <= 125) 
         { 
                WriteByte(Addr,ch); 
                Addr++; 
          
          if(Addr == RomSize) 
           Addr = 0; 
         } 
        } 
        
        #include <REG52.H> 
         
        sbit SCL =  P0^4; 
        sbit SDA =  P0^3; 
         
        sbit A0  =  P0^0; 
        sbit A1  =  P0^1; 
        sbit A2  =  P0^2; 
        sbit WP  =  P0^5; 
         
        #define SIG24C  0xA0 
        #define WR24C  0x00 
        #define RD24C  0x01 
        #define HI24C01  0x00 
        #define HI24C02  0x00 
        #define HI24C04  0x02 
        #define HI24C08  0x06 
        #define HI24C16  0x0e 
         
         
        void TxChar(unsigned char ch); 
         
        void Setup24c(void); 
        void Delay(unsigned int loop); 
        unsigned char ReadByte(unsigned int addr); 
        void WriteByte(unsigned int addr, unsigned char ch); 
        void ShiftOut(unsigned char bytout); 
         
        void Delay(unsigned int loop) 
        { 
         while(loop--); 
        } 
         
         
        void BaseClock(void) 
        { 
         Delay(4); 
          SCL = 1; 
         Delay(4); 
          SCL = 0; 
        } 
         
        void StartAccess(void) 
        { 
          SCL = 1; 
          SDA = 1; 
         Delay(4); 
          SDA = 0; 
          Delay(4); 
          SCL = 0; 
        } 
         
        void StopAccess(void) 
        { 
          SDA = 0; 
          SCL = 1; 
         Delay(4); 
          SDA = 1; 
         
         Delay(4); 
          SCL = 0; 
         
        } 
         
        void Setup24c(void) 
        { 
          unsigned char i; 
          A0 = 0; 
          A1 = 0; 
          A2 = 0; 
          WP = 0; 
         
         
          SCL = 1; 
          SDA = 1; 
         Delay(2); 
         for(i=0;i<9;i++) 
          BaseClock(); 
         StartAccess(); 
        } 
         
        void NoAck(void) 
        { 
          SDA = 1; 
         BaseClock(); 
        } 
         
        void Ack(void) 
        { 
          SDA = 0; 
         BaseClock(); 
        } 
         
        bit GetAck(void) 
        { 
          unsigned int i; 
         bit bSda; 
          SDA = 1; 
          Delay(2); 
          SCL = 1; 
         for(i=0;i<50000;i++) 
         { 
          Delay(100); 
          bSda = SDA; 
          if(bSda == 0) 
           break; 
         } 
          SCL = 0; 
         return(!bSda); 
        } 
         
        bit AckPoll(void) 
        { 
          unsigned char i; 
         for(i=0;i<1000;i++) 
         { 
          StartAccess(); 
          ShiftOut(SIG24C); 
          if(GetAck()) 
           return(1); 
         } 
         return(0); 
        } 
         
        void WaitTwr(void) 
        { 
            Delay(4000); 
        } 
         
        void ShiftOut(unsigned char bytout) 
        { 
          unsigned char i; 
         for(i=0;i<8;i++) 
         { 
            if((bytout & 0x80) == 0) 
           SDA = 0; 
          else 
           SDA = 1; 
          BaseClock(); 
            bytout = bytout << 1; 
         } 
        } 
         
        unsigned char ShiftIn(void) 
        { 
          unsigned char i,bytin; 
         
          bytin = 0; 
        bytin = bytin | SDA; 
         for(i=0;i<7;i++) 
         { 
          BaseClock(); 
            bytin = bytin << 1; 
            bytin = bytin | SDA; 
         } 
            return(bytin); 
        } 
         
        void WriteByte(unsigned int addr, unsigned char ch) 
        { 
          unsigned char DeAddr,HiAddr,LoAddr; 
          LoAddr = (unsigned char) addr; 
          HiAddr = (unsigned char) (addr >> 8); 
         
          DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C04); 
          //DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C08); 
         
         StartAccess(); 
          ShiftOut(DeAddr | WR24C); 
         GetAck(); 
         ShiftOut(LoAddr); 
         GetAck(); 
         ShiftOut(ch); 
         GetAck(); 
         StopAccess(); 
         WaitTwr(); 
         AckPoll(); 
        } 
         
        unsigned char ReadByte(unsigned int addr) 
        { 
          unsigned char ch,DeAddr,HiAddr,LoAddr; 
          ch = 0xff; 
          LoAddr = (unsigned char) addr; 
          HiAddr = (unsigned char) (addr >> 8); 
         
          DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C04); 
          //DeAddr = SIG24C | ((HiAddr <<1 ) & HI24C08); 
         
         StartAccess(); 
          ShiftOut(DeAddr | WR24C); 
         GetAck(); 
         ShiftOut(LoAddr); 
         GetAck(); 
         StartAccess(); 
          ShiftOut(DeAddr | RD24C); 
         GetAck(); 
          ch = ShiftIn(); 
        NoAck(); 
         StopAccess(); 
         return(ch); 
        } 
        #include <AT89X52.H> 
         
        void SetupSerial(char baud); 
        void TxChar(unsigned char ch); 
        unsigned char RxChar(void); 
        void TxStr(char *str); 
        void TxHex(unsigned char ch); 
        void TxCrLf(void); 
         
        void SetupSerial(char baud) 
        { 
            SCON = 0x52; 
            TMOD = 0x20; 
            TH1 = baud; 
            TF1 = 0; 
            TR1 = 1; 
        } 
         
        void TxChar(unsigned char ch) 
        { 
            while(!TI); 
            TI = 0; 
            SBUF = ch; 
        } 
         
        unsigned char RxChar(void) 
        { 
            RI = 0; 
            return(SBUF); 
        } 
         
        void TxStr(char *str) 
        { 
         while(*str) 
         { 
          TxChar(*str); 
          str++; 
         } 
        } 
         
        void TxNible(unsigned char ch) 
        { 
            if(ch < 10) 
            { 
         ch = ch + 48; 
                TxChar(ch); 
            } 
            else 
            { 
                ch= ch + 55; 
                TxChar(ch); 
            } 
        } 
         
        void TxHex(unsigned char ch) 
        { 
            unsigned char tmp; 
            tmp = (ch & 0xf0) >> 4; 
            TxNible(tmp); 
            tmp = ch & 0x0f; 
            TxNible(tmp); 
        } 
         
        void TxCrLf(void) 
        { 
         TxChar(13); 
         TxChar(10); 
        }
        Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X