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

📄 lcdx122.c

📁 中文LCD_122*32点阵驱动程序
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#include <eeprom.h>
#include "iodata.h"


#define set_lcd_data       (PORTC|=(1<<1))
#define clr_lcd_data       (PORTC&=~(1<<1))
#define set_lcd_clk        (PORTC|=(1<<0))
#define clr_lcd_clk        (PORTC&=~(1<<0))


/*
	 LCD_write(0x80,0);
	 LCD_write('O',1);
	 LCD_write('K',1);
*/
unsigned char dispchar[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

void LCD_write(unsigned char data,unsigned char rs);


void LCD_initial() 
	 {
	LCD_write(0x30,0);
	LCD_write(0x06,0);
	LCD_write(0x0c,0);
	LCD_write(0x01,0);   /*clr screen*/
	}		
void LCD_clr() 
	 {
	 LCD_write(0x01,0);   /*clr screen*/
	 }	
void LCD_write(unsigned char data,unsigned char rs) 
{
	unsigned char temp;
	unsigned char count;
	set_lcd_data;
	clr_lcd_clk;
	for (count=0;count<5;count++)
	{
	 	set_lcd_clk;
		clr_lcd_clk;
	}//*5 bits 1*/
	clr_lcd_data;    /*1 bit 0*/
	set_lcd_clk;
	clr_lcd_clk;
	if (rs) set_lcd_data;
	else clr_lcd_data;    /*rs=0 instrution*/
	set_lcd_clk;
	clr_lcd_clk;
	clr_lcd_data;    /*1 bit 0*/
	set_lcd_clk;
	clr_lcd_clk;
	
	if (data&0x80) set_lcd_data;//high 4 bit
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;
	if (data&0x40) set_lcd_data;
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;
	if (data&0x20) set_lcd_data;
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;	
	if (data&0x10) set_lcd_data;
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;
	
	clr_lcd_data;    /*4 bit 0*/		
	for (count=0;count<4;count++)
	{
	 	set_lcd_clk;
		clr_lcd_clk;
	}
	
	
	if (data&0x08) set_lcd_data;//low 4 bit
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;	
	if (data&0x04) set_lcd_data;
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;
	if (data&0x02) set_lcd_data;
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;
	if (data&0x01) set_lcd_data;
	else clr_lcd_data;
	set_lcd_clk;
	clr_lcd_clk;
		
	clr_lcd_data;    /*4 bit 0*/		
	for (count=0;count<4;count++)
	{
	 	set_lcd_clk;
		clr_lcd_clk;
	}
}	

void lcd_BCD(unsigned char data_hex)
	 {
	  unsigned char bit_h,bit_l;	
	  bit_h=((data_hex&0b11110000)>>4);         //用0屏蔽
	  bit_l=data_hex&0b00001111;                //用0屏蔽
	  LCD_write(dispchar[bit_h],1);
	  LCD_write(dispchar[bit_l],1);
	  LCD_write(' ',1);
	  }
	  
void lcd_num3(unsigned int data_hex)
	 {
	  unsigned int bit4,bit3,bit2,bit1,bit0;	
	  bit4=data_hex/10000;
	  bit3=data_hex/1000-bit4*10; 
	  bit2=data_hex/100-bit4*100-bit3*10;
	  bit1=data_hex/10-bit4*1000-bit3*100-bit2*10;
	  bit0=data_hex-bit4*10000-bit3*1000-bit2*100-bit1*10;
	  
	  LCD_write(dispchar[bit4],1);
	  LCD_write(dispchar[bit3],1);
	  LCD_write(dispchar[bit2],1);
	  LCD_write(dispchar[bit1],1);
	  LCD_write(dispchar[bit0],1);
	  LCD_write(' ',1);
	  }
	  

⌨️ 快捷键说明

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