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

📄 12864._c

📁 12864.rar
💻 _C
字号:

//*****************利用LCD液晶显示图形和文字******************//
#include <iom16v.h> 
#include <macros.h>
#include "delay.h"
#define LCD12864 TRUE 
//************数据端口为PA1,时钟端口为PA3********************//             

#define LCD_DATAL PORTA&=~BIT(1)        
#define LCD_DATAH PORTA|=BIT(1) 
#define LCD_CLKL PORTA&=~BIT(3)
#define LCD_CLKH PORTA|=BIT(3)

/*******************************************************/
/******   函数名称: lcd_out                       ******/
/******   功    能: 将每一位送入到LCD中           ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/
void lcd_out(unsigned char send_byte)
{    
    unsigned char i,s;
 	for (i=0;i<8;i++)
	{
	 if((send_byte&0x80)==0)
	 {
	     LCD_DATAL;
	 }
	 else
	 {
	     LCD_DATAH;
	 }      //送数据
	 LCD_CLKL;
	 LCD_CLKH;
	 send_byte=send_byte<<1;
	}
	delay(256);
}
/*******************************************************/
/******   函数名称: WR_dat                        ******/
/******   功    能: 将数据写入LCD                  ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/

void WR_dat(unsigned char dat)
{
     unsigned char s;
	 s=dat&0xf0;
	 lcd_out(0xfa);
	 lcd_out(s);
	 s=dat&0x0f;
	 s<<=4;
	 lcd_out(s);
}
/*******************************************************/
/******   函数名称: WR_control                     ******/
/******   功    能: 将指令写入LCD                  ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/
void WR_control(unsigned char dat)
{
     unsigned char s;
	 s=dat&0xf0;
	 lcd_out(0xf8);
	 lcd_out(s);
	 s=dat&0x0f;
	  s<<=4;
	 lcd_out(s);
}
/*******************************************************/
/******   函数名称:  lcd_control                  ******/
/******   功    能:使用整体显示,基本指令集         ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/
void lcd_control()          
{
	WR_control(0x30);
	WR_control(0x0C);
}
/*******************************************************/
/******   函数名称: lcd_clear()                   ******/
/******   功    能: 清屏                          ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/
void lcd_clear()
{
  int i;
  WR_control(0x01);
  for(i=0;i<5000;i++)	//	延时5ms
	{
		asm("nop");
		asm("nop");
		
	} 
}
/*******************************************************/
/******   函数名称: LCD_set_xy()                  ******/
/******   功    能: 设置LCD显示坐标               ******/
/******   参    数: 显示字符串的位置,X:0-15,Y:0-1*****/
/******   返回值  : 无                            ******/
/*******************************************************/
void LCD_address( unsigned char x, unsigned char y )
{
 	unsigned char address;
	switch(x)
	{
	 	case 0:
			   address = 0x80 + y;		   //计算显示地址
			   break;
		case 1:
			   address = 0x90 + y;		   //计算显示地址
			   break;
		case 2:
			   address = 0x88 + y;		   //计算显示地址
			   break;
		case 3:
			   address = 0x98 + y;		   //计算显示地址
			   break;
		default:address = 0x80 + y;
	}
	WR_control( address);	  	   	   		   //写地址命令
}

/*******************************************************/
/******   函数名称: LCD_write_string()            ******/
/******   功    能: 中英文字符串显示函数          ******/
/******   参    数:    *s--英文字符串指针          ******/
/******             X、Y--显示字符串的位置        ******/
/******   返回值  : 无                            ******/
/*******************************************************/
void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
    
 	LCD_address( X, Y );		   				//写显示地址
    while (*s) 	   	 						//是否到字符串尾
    {
     	WR_dat (*s );						//写显示数据
		s ++;								//字符串地址加1
 	}
}


/******************************************************************************/ 
//函数功能:将BCD码转换为ASCII码函数 
//输入数据:BCD       
//输出:ASCII
//详见SCII码表
/******************************************************************************/ 

unsigned char BCD_ASCII(unsigned char bcd) 
{ 
    bcd &= 0x0F; 
    if(bcd > 9)  
    bcd +=('7');     // 将A~F转换为ASCII 
    else 
    bcd += '0';         // 将0~9转换为ASCII 0~9 
    return(bcd); 
} 
/*******************************************************/
/******   函数名称: LCD_writeasc                     ******/
/******   功    能: 输入ASCII码显示对应的字符        ******/
/******   参    数: 无                               ******/
/******   返回值  : 无                               ******/
/*******************************************************/ 

void  LCD_writeasc(unsigned char x, unsigned char y, unsigned char data)
{
    LCD_address(x,y);
	WR_dat(data);
	}
/*******************************************************/
/******   函数名称: Lcd_INT()                     ******/
/******   功    能: LCD初始化                     ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/ 
void Lcd_INT()
{
  DDRA|=BIT(1);
  DDRA|=BIT(3);
  lcd_control();
  lcd_clear();
}
/*******************************************************/
/******   函数名称: lcd_writechar                     ******/
/******   功    能: 输入10进制数转化为16进制数       ******/
/******   参    数: 无                               ******/
/******   返回值  : 无                               ******/
/*******************************************************/
void lcd_writechar(unsigned char X,unsigned char Y,unsigned char number)
{
    LCD_address(X,Y);
	WR_dat(BCD_ASCII(number>>4));
	WR_dat(BCD_ASCII(number));
}

void lcd_write2(unsigned char X,unsigned char Y,unsigned char number)
{
    LCD_address(X,Y);
	
	WR_dat(BCD_ASCII(number%100/10));
	WR_dat(BCD_ASCII(number%10));
}

//#if LCD12864==TRUE					//条件编译指令
//#pragma data:code 					//指定存储位置为Flash
const unsigned char Bitmap[]={/*--  宽度x高度=128x64图像  --*/



0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x06,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFE,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x10,0x01,0xFF,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xFC,0x00,0x00,0xC8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xF0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x08,0x00,0x04,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0xF0,0x09,0xE0,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x00,0x08,0x20,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x00,0x08,0x20,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0xC0,0x00,0x0F,0xE0,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x3F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x20,0x0F,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFC,0x00,0x40,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x80,0x01,0x00,0x00,0x00,
0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x06,0x20,0x01,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x03,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x9F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x3C,0x0C,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x0F,0xC0,0x00,0x00,0x00,0x24,0x30,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x3C,0x00,0x00,0x00,0x24,0x40,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xE4,0x80,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x80,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x1E,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x03,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x00,0x00,0x55,0x00,0x89,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

/*******************************************************/
/******   函数名称: ShowBmp()                     ******/
/******   功    能: 显示一幅128*64的BMP位图       ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/
void ShowBmp(void)
{
	unsigned int i,a,x=0,y=0;
	WR_control(0x34);		//关闭绘图显示功能	 				
	for(a=0;a<32;a++)						
	{										
	 	WR_control(0x80+a);						
		WR_control(0x80);						
		for(i=0;i<8;i++)					
		{									
			WR_dat(Bitmap[y+x]);			
			WR_dat(Bitmap[y+x+1]);			
			x+=2;							
		}									
		x=0;								
		for(i=0;i<8;i++)					
		{									
			WR_dat(Bitmap[512+y+x]);		
			WR_dat(Bitmap[512+y+x+1]);		
			x+=2;							
		}									
		x=0;								
		y+=16;								
	}										
	WR_control(0x36); //打开绘图显示功能					
	delay_nus(80);							
	WR_control(0x30);	//基本指令						
	delay_nus(80);							
}
//#endif	
		  					//条件编译结束
void main()
{
Lcd_INT();
//LCD_writeasc(2,1,64);
//lcd_writechar(3,1,16);
//lcd_write2(0,0,12);
//LCD_Write_string(1,4,"45445");
ShowBmp(); 
}

⌨️ 快捷键说明

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