⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 how to use display EL16032
💻 C
字号:
/***********************************************************************
 *                                                                     *
 *      Project Name:   Demo board for graphic LCD EL 16032            *
 *      Description:    											   *
 *                                                                     *
 *      Processor:      uPD78F9177                                     *
 *      Revision:       1.0                                            *
 *      Date:           08.12.2003                                     *
 *      Compiler:       C crosscompiler IAR 2.22                       *
 *      Author:                                            *
 *      Company:                                                       *
 *      Email:                                       *
 *                                                                     *
 ***********************************************************************/

#include <in78000.h>
#include "Df9177ay.H"
#include "appcfg.h"
#include "LCD_el16032.h"

bit bButton_0;
bit bButton_1;
unsigned char Time;
unsigned char Wait;


// interrupt from watch timer
interrupt [INTWT_vect] void vWatchTimer(void)
{
	Time++;
}
//-----------------------------------------------------------------------------
// interrupt handler for PWM on timer TM80
interrupt [INTTM80_vect] void vTimer80(void)
{
}
//----------------------------------------------------------------------------- 
interrupt [INTWTI_vect] void vWatchTimerI(void)
{
}
//-----------------------------------------------------------------------------  
interrupt [INTTM81_vect] void vTimer81(void)
{
	Wait++;
}
//-----------------------------------------------------------------------------
interrupt [INTP0_vect] void vINTP0(void)
{
  if (!Button1) bButton_0 = TRUE;
}   
interrupt [INTP1_vect] void vINTP1(void)
{
  if (!Button2) bButton_1 = TRUE;
}
//-----------------------------------------------------------------------------
//			function for  waiting, variable cekej x 10ms
void delay(unsigned char Cekej)
{
	Wait = 0;
	TCE81 = 1;        		// Operation enable
	while (Wait < Cekej);
	TCE81 = 0;        		// Operation disable
}
//----------------------------------------------------------------------------- 
void init_app(void)
{
	PCC  = 0x00;                       // Clock generator setting - Use high speed mode
  	// port setting
  	PM5 = 0xF0;                        // Port 5 to output
	P5 = 0x00;							
	P2 = 0x00;                         
  	PM2 = 0x80;                         // Port to output 
  	P3  = 0xFF;
  	PM3 = 0xF3;                          // Port to input and pin P3.0, P3.1 as output
  	PUB3 = 0xFF;                         // pullup resistors ON
  	PM0  = 0xC0;                         // Port to output
  	// Watch Timer
  	WTM = 0x53;                         // set watch timer from mainclock
  	WTMK = 0;
  	WTIMK = 0;
  	WTIF = 0;
	// nastaveni casovace TM81  
    TMC81 = 0x82;                 // Timer 0 Fx/2^8
    CR81 = 0x20;                  // 9.98 us
    TCE81 = 0;                    // Operation disable
    TMIF81 = 0;                   // enable interupt from TM81
    TMMK81 = 0;                   // enable interrupt service for TM81
    // 8 Bit PWM on TM80
    PM2.6 = 0;
    TMC80   = 0x81;   // Timer 80 - 19,5 kHz
    TCE80 = 1;        // Operation enable
    PWME80 = 1;       // PWM output enable
    TOE80 = 1;        // output enable
    CR80    = 128;    // 
    TMIF80  = FALSE;                   // Clear interrupt
    TMMK80  = FALSE;                   // Enable Timer50 Interrupt
	// ******* Obsluha vnejsich preruseni ****************
	INTM0 = 0x00;
	PIF0 = FALSE;
	PMK0 = FALSE;
	PIF1 = FALSE;
	PMK1 = FALSE;
	CSIM20 = 0x00;   
}
//-----------------------------------------------------------------------------
void set_pwm(unsigned char PWM_CR)
{
 TCE80 = 0;
 CR80 = PWM_CR;
 TCE80 = 1;
}
//----------------------------------------------------------------------------
void kriz(void)
{
	char i,j;
	lcd_init(0);                            
	lcd_write_cmd(0x3E);
	lcd_write_cmd(ROW_ENABLE);
	lcd_clear_graf();
	for (j=0x80;j<0xA0;j++)
	{
		for (i = 0x80;i<0x8A;i++)
		{   
			lcd_write_cmd(j);
			lcd_write_cmd(i);
			if (j%2)
			{
				lcd_write_data(0xAA);
				lcd_write_data(0xAA);
			}
			else
			{
			 	lcd_write_data(0x55);
				lcd_write_data(0x55);
			}
		}
		lcd_write_cmd(0x0F);
	}	
}
//----------------------------------------------------------------------------
void combi(void)
{ 
	char j;
	unsigned char a = 0x80;
	unsigned char b = 0x00;
	unsigned char c = 0x00;
	unsigned char d = 0x02;
  	lcd_clear_graf();
	lcd_init(0);
	lcd_write_cmd(FIRST_LINE);
	lcd_text("Toto je Text        ");
	lcd_write_cmd(SECOND_LINE);
	lcd_text("Tohle taky          ");                            
	lcd_write_cmd(0x3E);
	lcd_write_cmd(ROW_ENABLE);
	for (j=0x80;j<0xA0;j++)
	{   
		lcd_write_cmd(j);
		lcd_write_cmd(0x87);
		lcd_write_data(0x80);
		lcd_write_data(0x00);
	}
	for (j=0x80;j<0xA0;j++)
	{   
		lcd_write_cmd(j);
		lcd_write_cmd(0x88);
		lcd_write_data(0x00);
		lcd_write_data(0x01);
	}
	lcd_write_cmd(0x80);
	lcd_write_cmd(0x87);
	lcd_write_data(0xFF);
	lcd_write_data(0xFF);
	lcd_write_cmd(0x9F);
	lcd_write_cmd(0x87);
	lcd_write_data(0xFF);
	lcd_write_data(0xFF);

	lcd_write_cmd(0x80);
	lcd_write_cmd(0x88);
	lcd_write_data(0xFF);
	lcd_write_data(0xFF);
	lcd_write_cmd(0x9F);
	lcd_write_cmd(0x88);
	lcd_write_data(0xFF);
	lcd_write_data(0xFF);
	
	for (j=0x81;j<0x9F;j++)
	{
		lcd_write_cmd(j);
	 	lcd_write_cmd(0x87);
	 	a = (a >>1);
		lcd_write_data(a|0x80);
		lcd_write_data(b);
		b = b >> 1;
		if (a == 0x01) b = 0x80;

		lcd_write_cmd(j);
		lcd_write_cmd(0x88);
		lcd_write_data(c);
		lcd_write_data(d|0x01);
		d = d << 1;
		c = c << 1;
		if (!d && (j<0x89)) c = 0x01;	
	}
	lcd_write_cmd(0x0F);
}
//-----------------------------------------------------------------------------
void picture(char Mod)
{	
	unsigned char i,j;
	switch (Mod)
	{
		case 0:	lcd_init(0);
				lcd_write_cmd(FIRST_LINE);
				lcd_text("First line of GraLCD");
				lcd_write_cmd(SECOND_LINE);
				lcd_text("Second line of GrLCD");
				break; 
		case 1:	lcd_write_cmd(0x3E);
				lcd_write_cmd(ROW_ENABLE);
				for (j=0x80;j<0xA0;j++)
				{
					for (i = 0x80;i<0x8A;i++)
					{   
					lcd_write_cmd(j);
					lcd_write_cmd(i);
					lcd_write_data(0xFF);
					lcd_write_data(0xFF);
					}
				lcd_write_cmd(0x0F);
				}
				break;
		case 2: kriz();break;
		case 3: combi();break;
	}			
}
//-----------------------------------------------------------------------------

void main(void)
{
	unsigned char PWM_Reg = 0xFF;
	char Mod = 0x00;
	_DI();                             	// Disable all interrupts
	init_app();                        	// Peripheral settings
	_EI();                             	// Enable all interrupts                   
	lcd_init(0);						// Init LCD display
	lcd_text(" Display EL 160x32 ");
	lcd_write_cmd(SECOND_LINE);
	lcd_text("Demonstration Elatec");
	Time = 0;
    while (Time < 20);
    Time = 0;
    lcd_clear_graf();
    bButton_1 = TRUE;
	while (1)
  	{  
		if(bButton_0)
      	{
        	bButton_0 = FALSE;
			PWM_Reg = PWM_Reg + 50;
        	set_pwm(PWM_Reg); 
       	}
    	if(bButton_1)
      	{
        	bButton_1 = FALSE;
       		picture(Mod);
       		Mod++;
        	Mod = Mod % 4;
    	} 
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -