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

📄 winiotest.cpp

📁 采用并口控制液晶显示,适合PC104的嵌入式应用
💻 CPP
字号:
#include <windows.h>
#include <stdio.h>



void LCD_DrawHz(u8 x,u8 y,const u8 *zm)
{
	u8 i;
	for(i=0;i<32;i++)
	{
		if(i&1)
		{
			LCD_PutPixel8(x + 8, y + (i >> 1), zm[i]);
		}
		else
		{
			LCD_PutPixel8(x, y + (i >> 1), zm[i]);		
		}			
	}
}

// 向LCD中写一个ASCII字符的点阵
void lcd_putc( u8 chASC)
{
	u8 i,j,k;
	u8 zm;		// 指向字母点阵数据

	for(i=0;i<ASC_FONT_H;i++)
	{
		zm = ASCK[chASC-' '][i];
		LCD_PutPixel8(x + 8, y + (i >> 1), zm);
	}
}

void LCD_PutHz(u8 x, u8 y, u16 charactor)
{
	switch(charactor)
	{
		case '西': LCD_DrawHz(x, y, HZ_xi);break;
		default: break;
	}
}

u8 LCD_Puts(u8 x, u8 y, u8 * str )
{
	for(;*str!=0;str++)
	{
		if(*str<0x7F)
		{
			LCD_Putc(*str);			/*是ASCII字符*/
		}
		else
		{
			hzchar hz = *str;
			hz <<= 8;
			str++;
			hz+=*str;					/*将汉字GB码整合为int*/
			LCD_PutHz(x, y, (u16) hz);				/*是汉字*/
		}
	}
	return true;
}

void main()
{
  bool bResult;
  int i;
  U16 pos;

  // Call InitializeWinIo to initialize the WinIo library.
  bResult = InitializeWinIo();

  if (bResult)
  {
    // Under Windows NT/2000/XP, after calling InitializeWinIo,
    // you can call _inp/_outp instead of using GetPortVal/SetPortVal
    //GetPortVal(0x378, &dwPortVal, 2);
//	dwPortVal=_inp(0x378);
//	printf("%4X\n",dwPortVal);
    //SetPortVal(0x378, 10, 4);
	//reset lcd
	LCD_Reset();
	printf("Reset finished.\n");
	//display off
//	LCD_WriteCMDNP(0x90);
	LCD_WriteCMDNP(0x80);
	LCD_WriteCMDNP(0x98);
	printf("Display off finished.\n");
	//TEXT HOME
	LCD_WriteCMD2P(0x40, 0x00, 0x00);
	printf("TEXT HOME finished.\n");
	//TEXT AREA
	LCD_WriteCMD2P(0x41, 30, 0x00);
	printf("TEXT AREA finished.\n");
	//GRAPHIC HOME
	LCD_WriteCMD2P(0x42, 0x00, 0x00);
	printf("GRAPHIC HOME finished.\n");
	//GRAPHIC AREA
	LCD_WriteCMD2P(0x43, 30, 0x00);
	printf("GRAPHIC AREA finished.\n");
	//TEXT ON, GRAPHIC OFF
	LCD_WriteCMDNP(0x98);
	printf("TEXT ON finished.\n");
	//TEXT WRITE "0"
	LCD_WriteCMD2P(0x24, 0x00, 0x00);
	printf("TEXT WRITE '0' finished.\n");
	LCD_WriteCMDNP(0xB0);
	for (i=0;i<0x2000;i++)
	{		
		LCD_CheckStatus();
		LCD_WriteData(0x00);
	}
	LCD_WriteCMDNP(0xB2);

	/*
	pos = 10 * 30 + 6;
	//LCD_WriteCMD2P(0x21, 10, 6);
	LCD_WriteCMD2P(0x24, pos & 0xff, pos >> 8);
	LCD_CheckStatus();
	LCD_WriteData(CHAR_0);
	LCD_WriteCMDNP(0xc0);		
	*/

	pos = 1 * 30 + 1;
	LCD_WriteCMD2P(0x24, pos & 0xff, pos >> 8);
	LCD_CheckStatus();
	LCD_WriteData(0xff);
	LCD_WriteCMDNP(0xc0);

    // When you're done using WinIo, call ShutdownWinIo

    ShutdownWinIo();
  }
  else
  {
    printf("Error during initialization of WinIo.\n");
    exit(1);
  }
}

⌨️ 快捷键说明

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