Esempio n. 1
0
File: uv3r.c Progetto: andyn/UV3RMod
void updateLCDDisplay()
{
  int i;
  //Display LCD display
  for(i=0; i<12; i++)
  {
    if (i>5)
    {
      unsigned short mask = 0;
      mask |= ((displayBuff[(i-6)*4+2]&0xF0)>>4);
      mask |= ((displayBuff[(i-6)*4+3]&0xF0));
      mask |= ((displayBuff[(i-6)*4+4]&0xF0)<<4);
      mask |= ((displayBuff[(i-6)*4+5]&0xF0)<<8);
      displaySegment(gtkArea,  7+(i-6)*17, 3, 1, mask);
    } else {
Esempio n. 2
0
int main(void) {
	uint8_t i;       // general loop counter
	uint8_t j;       // general loop counter
	uint8_t bmapidx; // index to bitmap
	uint8_t segment; // bitmap segment to be displayed in buffer
	
    // Set 4051 CBA input address pins as output
    DDRD |= ((1 << A) | (1 << B) | (1 << C));

	// Set PORTC pins for anode rows as output
	DDRC |= ((1 << AR0) | (1 << AR1) | (1 << AR2)
			| (1 << AR3)| (1 << AR4));

	// Set PB0 as output
	DDRB |= (1 << PB0);
	PORTB &= ~(1 << PB0);
	
	// clear the anode rows
	PORTC &= ~((1 << AR0) | (1 << AR1)
		| (1 << AR2)| (1 << AR3)| (1 << AR4));
		
    while (1) {
		bmapidx = 0;
		while (bmapidx < 4) {
			segment = bitmap[bmapidx];

			// clear 4051 CBA input address pins 
			PORTD &= ~((1 << A) | (1 << B) | (1 << C));
			// set 4051 CBA input address pins
			PORTD |= (bmapidx+1 << 2); // shift 2 to skip PD0 and PD1
			
			if (segment > 30) {
				for (j = 0; j < 3; j++) {
					PORTB ^= (1 << PB0);
					_delay_ms(500);
					PORTB ^= (1 << PB0);
					_delay_ms(500);
				}
			}
			displaySegment(segment);

			bmapidx++;
			
		}
    }
 
    return 0;
}