uwezi icon

20200708_m32u4_pcf8576

uwezi | PRO | 07/09/20 05:40:33 PM UTC | 0 ⭐ | 1775 👁️ | Never ⏰ | []
C |

1.73 KB

|

None

|

0 👍

/

0 👎

/*
 * 20200708_m32u4_pcf8576.c
 *
 * Created: 2020-07-08 21:09:00
 * Author : uwezi
 */
 
#include <avr/io.h>
#include <util/delay.h>
#include "i2cmaster.h"
 
#define i2c_pcf8576   0x40
 
void init(void)
{
  DDRE = (1 << PE6);
  i2c_init(1,152);
}
 
void all_off(void)
{
  uint8_t j;
  i2c_start_wait(0b01110000);     
  i2c_write(0b11100000);          
  i2c_write(0);
  for (j=0; j<20; j++)
  {
    i2c_write(0x00);
  }
  i2c_stop();
  _delay_ms(10);
}
 
#define fONE   0b00000110
#define fTWO   0b01111010
#define fTHREE 0b00111110
#define fFOUR  0b10100110
#define fFIVE  0b10111100
#define fSIX   0b11111100
#define fSEVEN 0b00001110
#define fEIGHT 0b11111110
#define fNINE  0b10111110
#define fZERO  0b11011110
#define fSYM   0b00000001
 
uint8_t framebuffer[16] = {fONE,fTWO,fTHREE,fFOUR,fFIVE,fSIX,fSEVEN,fEIGHT,fNINE,fZERO,fONE,fTWO,fTHREE,fFOUR,fFIVE,fSIX};
uint8_t adresses[16] = {0x02,0x06,0x08,0x0a,0x0c,0x0e,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x24,0x26};
 
int main(void)
{
  uint8_t adr=0, j;
  init();
  _delay_ms(100);           
  i2c_start_wait(0b01110000);     
  i2c_write(0b11100000);       
 
  // C 1 0 LP E B M1 M0
  i2c_write(0b11011000);       
  i2c_write(0b01110101);        
  i2c_stop();
 
  while(1)
  {
    {
      PORTE |= (1 << PE6);
      _delay_ms(1);
      PORTE &= ~(1 << PE6);
    }
    all_off();
 
    i2c_start_wait(0b01110000);     
    i2c_write(0b11100000);        
    i2c_write(0);
 
    for (j=0; j<20; j++)
    {
      if (j==adresses[adr]/2)
      {
        i2c_write(framebuffer[adr] | fSYM);
      }
      else
      {
        i2c_write(0);
      }
    }
    i2c_stop();
 
    adr ++;
    adr %= 16;
 
    _delay_ms(300);
  }
  return 0;
}

Comments