コード例 #1
0
//Function to Write Data on LCD
void lcd_wr_char(char letter)
{
	char temp;
	temp = letter;
	temp = (temp & 0xF0);
	lcd_port &= 0x0F;
	lcd_port |= temp;
	sbit(lcd_port,RS);
	cbit(lcd_port,RW);
	sbit(lcd_port,EN);
	_delay_ms(5);
	cbit(lcd_port,EN);

	letter = letter & 0x0F;
	letter = letter<<4;
	lcd_port &= 0x0F;
	lcd_port |= letter;
	sbit(lcd_port,RS);
	cbit(lcd_port,RW);
	sbit(lcd_port,EN);
	_delay_ms(5);
	cbit(lcd_port,EN);
}
コード例 #2
0
// Write 32 bits to display register and latch
void writeDisplayData(uint32_t data)
{
	// shift out data
	for (uint8_t i = 0; i < 4; i++)
	{
		// send byte over SPI
		SPDR = data >> (8 * (3 - i));
		// wait for transmission complete
		while(!(SPSR & (1 << SPIF)));
	}

	// latch register data
	sbit(OUTPORT(DISP_LATCH_PORT), DISP_LATCH_BIT);
	_delay_us(10);
	cbit(OUTPORT(DISP_LATCH_PORT), DISP_LATCH_BIT);
}
コード例 #3
0
void Reed_Solomon::encode(const bvec &uncoded_bits, bvec &coded_bits)
{
  int i, j, iterations = floor_i(static_cast<double>(uncoded_bits.length())
                                 / (k * m));
  GFX mx(q, k), cx(q, n);
  GFX r(n + 1, n - k);
  GFX uncoded_shifted(n + 1, n);
  GF mpow;
  bvec mbit(k * m), cbit(m);

  coded_bits.set_size(iterations * n * m, false);

  if (systematic)
    for (i = 0; i < n - k; i++)
      uncoded_shifted[i] = GF(n + 1, -1);

  for (i = 0; i < iterations; i++) {
    //Fix the message polynom m(x).
    for (j = 0; j < k; j++) {
      mpow.set(q, uncoded_bits.mid((i * m * k) + (j * m), m));
      mx[j] = mpow;
      if (systematic) {
        cx[j] = mx[j];
        uncoded_shifted[j + n - k] = mx[j];
      }
    }
    //Fix the outputbits cbit.
    if (systematic) {
      r = modgfx(uncoded_shifted, g);
      for (j = k; j < n; j++) {
        cx[j] = r[j - k];
      }
    }
    else {
      cx = g * mx;
    }
    for (j = 0; j < n; j++) {
      cbit = cx[j].get_vectorspace();
      coded_bits.replace_mid((i * n * m) + (j * m), cbit);
    }
  }
}
コード例 #4
0
//Function to Write Command on LCD
void lcd_wr_command(unsigned char cmd)
{
	unsigned char temp;
	temp = cmd;
	temp = temp & 0xF0;
	lcd_port &= 0x0F;
	lcd_port |= temp;
	cbit(lcd_port,RS);
	cbit(lcd_port,RW);
	sbit(lcd_port,EN);
	_delay_ms(5);
	cbit(lcd_port,EN);
	
	cmd = cmd & 0x0F;
	cmd = cmd<<4;
	lcd_port &= 0x0F;
	lcd_port |= cmd;
	cbit(lcd_port,RS);
	cbit(lcd_port,RW);
	sbit(lcd_port,EN);
	_delay_ms(5);
	cbit(lcd_port,EN);
}
コード例 #5
0
//Function to Reset LCD
void lcd_set_4bit()
{
	_delay_ms(1);

	cbit(lcd_port,RS);				//RS=0 --- Command Input
	cbit(lcd_port,RW);				//RW=0 --- Writing to LCD
	lcd_port = 0x30;				//Sending 3
	sbit(lcd_port,EN);				//Set Enable Pin
	_delay_ms(5);					//Delay
	cbit(lcd_port,EN);				//Clear Enable Pin

	_delay_ms(1);

	cbit(lcd_port,RS);				//RS=0 --- Command Input
	cbit(lcd_port,RW);				//RW=0 --- Writing to LCD
	lcd_port = 0x30;				//Sending 3
	sbit(lcd_port,EN);				//Set Enable Pin
	_delay_ms(5);					//Delay
	cbit(lcd_port,EN);				//Clear Enable Pin

	_delay_ms(1);

	cbit(lcd_port,RS);				//RS=0 --- Command Input
	cbit(lcd_port,RW);				//RW=0 --- Writing to LCD
	lcd_port = 0x30;				//Sending 3
	sbit(lcd_port,EN);				//Set Enable Pin
	_delay_ms(5);					//Delay
	cbit(lcd_port,EN);				//Clear Enable Pin

	_delay_ms(1);

	cbit(lcd_port,RS);				//RS=0 --- Command Input
	cbit(lcd_port,RW);				//RW=0 --- Writing to LCD
	lcd_port = 0x20;				//Sending 2 to initialise LCD 4-bit mode
	sbit(lcd_port,EN);				//Set Enable Pin
	_delay_ms(5);					//Delay
	cbit(lcd_port,EN);				//Clear Enable Pin

	
}
コード例 #6
0
int main(void)
{
	// init hardware setup
	init();

	// setup temperature resolution
	// write temperature register pointer
	i2c_start(TEMPSENS_ADDRESS, I2C_WRITE);
	i2c_write(0x01);
	i2c_write(0b01100000);
	i2c_stop();

    while(1)
    {
		// change mode by pressed button
		if (button1Pressed())
		{
			mode = MODE_1;
		}
		else if (button2Pressed())
		{
			mode = MODE_2;
		}
		else if (button3Pressed())
		{
			mode = MODE_3;
		}

		// mode1
		if (mode == MODE_1)
		{
			// read analog value from potentiometer
			uint32_t pot = readAnalog(POT_CHANNEL);
			pot *= 4888;
			pot += 500;
			pot /= 1000;

			if (++mydelay >= 10)
			{
				writeDisplayNumber(pot, 0);
				mydelay = 0;
			}
			

			// led1 on
			sbit(OUTPORT(LED1_PORT), LED1_BIT);
		}
		else
		{
			// led1 off
			cbit(OUTPORT(LED1_PORT), LED1_BIT);			
		}

		// mode2
		if (mode == MODE_2)
		{

			int16_t temp = readTemperature();
			writeDisplayTemp(temp, 2);

			// led2 on
			sbit(OUTPORT(LED2_PORT), LED2_BIT);
		}
		else
		{
			// led2 off
			cbit(OUTPORT(LED2_PORT), LED2_BIT);
		}

		// show potentiometer value		
		if (mode == MODE_3)
		{
			// led3 on
			sbit(OUTPORT(LED3_PORT), LED3_BIT);
			
			mode3();
			
			/*
			if (mydelay < 12)
			{
				// turn-on buzzer
				// frequency 2kHz
				ICR1 = 2000;
				OCR1A = 1000;
				// write to display
				writeDisplayData(convertBcd(DIGIT_MINUS, DIGIT_MINUS, DIGIT_BLANK, DIGIT_BLANK, 255));
			}
			else
			{
				// turn-on buzzer
				// frequency 2kHz
				ICR1 = 4000;
				OCR1A = 2000;
				// write to display
				writeDisplayData(convertBcd(DIGIT_BLANK, DIGIT_BLANK, DIGIT_MINUS, DIGIT_MINUS, 255));			}
			if (++mydelay >= 25) mydelay = 0;
			*/
		}
		else
		{
			// turn-off buzzer
			ICR1 = 0;
			// led3 off
			cbit(OUTPORT(LED3_PORT), LED3_BIT);
		}


		// wait until all mode buttons are released
		while (button1Pressed() || button2Pressed() || button3Pressed());
		_delay_ms(20);
    }
}