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

📄 lcd_12232.c

📁 AVR对液晶12232串行读取LCD12232上有个并口与串口跳线请选串口
💻 C
字号:
#include <iom16v.h>
//#include <macros.h>
//E--CLK
#define CLK PB3
//RS--CS
#define CS  PB1
//RW--SID
#define SID PB2
//#define isda_y (DDRD&=~(1<<SDA),PORTD|=(1<<SDA))   
//#define iscl_y (DDRD&=~(1<<SCL),PORTD|=(1<<SCL)) 
//#define isda_n (DDRD|=(1<<SDA),PORTD&=~(1<<SDA))  
//#define iscl_n (DDRD|=(1<<SCL),PORTD&=~(1<<SCL)) 
/*#define CLK_SET  (DDRB&=~(1<<CLK),PORTB|=(1<<CLK))   
#define CLK_CLR  (DDRB|=(1<<CLK),PORTB&=~(1<<CLK))
#define CS_SET  (DDRB&=~(1<<CS),PORTB|=(1<<CS))
#define CS_CLR  (DDRB|=(1<<CS),PORTB&=~(1<<CS))   
#define SID_SET  (DDRB&=~(1<<SID),PORTB|=(1<<SID))
#define SID_CLR  (DDRB|=(1<<SID),PORTB&=~(1<<SID))    
*/
#define CLK_SET         PORTB |= 0x08     //PB3--e
#define CLK_CLR           PORTB &= ~0x08
#define CS_SET          PORTB |= 0x02			//PB1--rs
#define CS_CLR          PORTB &= ~0x02
#define SID_SET          PORTB |= 0x04			//PB2---rw
#define SID_CLR          PORTB &= ~0x04

#define uchar             unsigned char 
////////////////////////////////////////////////////////////////////////
//LCD显示用到的三个变量:
////////////////////////////////////////////////////////////////////////
//uchar lcdrefresh;  //是否需要刷新
//uchar lcdcodedsp[4]; //显示存储数组
uchar lcdsplycnt;  //指示显示存储数组循环指
uchar stu;

//#define stu7 stu[7]
//#define  stu0 stu[0];
void delay5ms()
{
	register int i;
	for (i=0;i<40000;i++)
	;
}

void delay50us()
{
	register int i;
	for (i=0;i<1000;i++)
	;
}	
/*
void init()
{	
	unsigned char in,i;
	
	DDRB  |= 0xFF;  // Set SCK, MOSI & SS PB1,2,3 as outputs
  //PORTB &= 0x5F;  // clear bits MOSI, & SCK	
}
*/

//----------------忙检测----------------------
void check()
{
 uchar i;
 do
 {
  CS_SET;  
  SID_SET;
    for(i=0;i<8;i++)
     {
     CLK_CLR;
     if(i<6)SID_SET;
     else SID_CLR;
     CLK_SET;   
     }
    for(i=0;i<16;i++)
       {
     CLK_CLR;
     CLK_SET;
     if(i<=3||(i>=8&&i<=11))
       {
       
	   //sprintf("%S",stu);
	  
	   stu<<=1;
	   if((PINB & 0x80)==0x80)
       stu|=0x01;
	   else
	   stu&=~0x01;
       }
   }
    CS_CLR;
 }while(stu & 0x80==0x80); 
}
//-----Z--------------------------------------
void wcom(uchar x)
{
//*****************************************
//RS,RW :L L写指令     L H read busy, acc *
//       H L MUP to DR H H DR to MUP      *
//E  H->L   IO->DR                        *
//   H      DR->IO                        *
//*****************************************
 uchar i=0;
check();
 CS_SET; //RS_SET 
 for(i=0;i<8;i++)
 {
   if(i<5)SID_SET;//RW_SET
   else SID_CLR;//RW_CLR
    CLK_CLR;//E_CLR
    CLK_SET; //E_SET
 } 
 for(i=0;i<16;i++)
 {
   if(i<4||(i>=8&&i<=11))
  {
   
   if((x & 0x80)==0x80)  
   SID_SET;//RW
   else
   SID_CLR;//RW
   x<<=1;
   } else SID_CLR;//RW
  CLK_CLR; //E
  CLK_SET;//E
 } 
 CS_CLR;//RS
}
//****************************************
void wdat(uchar x)
{
 uchar i=0;
    stu=x;
 check();
CS_SET; 
 for(i=0;i<8;i++)
 {
     if(i<5||i==6)SID_SET;
     else SID_CLR;
  CLK_CLR;
  CLK_SET;
 } 
 for(i=0;i<16;i++)
 {
   if(i<4||(i>=8&&i<=11))
  {
    
  if((x & 0x80)==0x80)  
   SID_SET;
   else
   SID_CLR;
   x<<=1; 
   }
    else SID_CLR;
  CLK_CLR; CLK_SET;
 } 
    CS_CLR;
}
void ShowMessage(uchar addr,uchar num,uchar  *ptr)
{
 uchar i;
    wcom(addr);
 for (i=0;i<num;i++) wdat(ptr[i]);
}
/*-----------------------------------------------------------------------------
----------------------------------------------------------------------初始化*/
void InitLcd()
     {
    wcom(0X30);
   wcom(0X3C);
   wcom(0X38);
   wcom(0X01);
   wcom(0X80);
   check();
   lcdsplycnt=0;
      //ShowMessage(0x95,13,"你好,小笨笨:");
      ShowMessage(0x90,13,"WWW.szvcn.com");
  }
/*-----------------------------------------------------------------------------
----------------------------------------------------------------------初始化*/
void main()
{
	//unsigned char in,i,da;
	DDRB  |= 0xFF;	
	DDRA = 0x0F;	/* output */
	PORTA &= 0xF0;	/* all off */ 
InitLcd();
	while(1)
	{
	
	};
}

⌨️ 快捷键说明

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