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

📄 cx65m16.c

📁 用于AVR单片机上的
💻 C
字号:
#include <avr/pgmspace.h>
#include "CX65M16.h"

void delay_1ms(void)
{
 unsigned int i;
  for (i=1;i<1580;i++)
  ;
}
void delay(unsigned int n)
{
  unsigned int i=0;
  for(i=0;i<n;i++)
  delay_1ms();
} 


void LCD_Initialize(void)
{
 prog_char  a[] = {0xEF, 0x00, 0xEE, 0x04, 0x1B, 0x04, 0xFE, 0xFE, 0xFE, 0xFE, 0xEF, 0x90, 0x4A, 0x04,
 0x7F, 0x3F, 0xEE, 0x04, 0x43, 0x06  };
 prog_char  b[] = {0xEF, 0x90,  0x09, 0x83,  0x08, 0x00,  0x0B, 0xAF,  0x0A, 0x00,  0x05, 0x00,  0x06, 0x00,
 0x07, 0x00,  0xEF, 0x00,  0xEE, 0x0C,  0xEF, 0x90,  0x00, 0x80,  0xEF, 0xB0,  0x49, 0x02 ,
 0xEF, 0x00,  0x7F, 0x01,  0xE1, 0x81,  0xE2, 0x02,  0xE2, 0x76,  0xE1, 0x83};
 unsigned int i;
 DDRB=0XFF;
 PORTB|= (1<<LCD_CS );
 PORTB&=~(1<<LCD_RESET ); 
 PORTB|= (1<<LCD_CS );
 PORTB|= (1<<LCD_DATA );
 PORTB&=~(1<<LCD_SCK );
 PORTB|= (1<<LCD_RS );
 PORTB|= (1<<LCD_RESET);
 for(i=0;i<4;i++)
 LCD_Send(0xFD,0);
 delay(50);
 for(i=0;i<20;i++)
 LCD_Send(a[i],0);		 
 delay(7);
 for(i=0;i<40;i++)
 LCD_Send(b[i],0);
 delay(50);
 LCD_Send(0x80,0);
 LCD_Send(0x01,0);
 LCD_Send(0xEF,0);
 LCD_Send(0x90,0); LCD_Send(0x00,0); LCD_Send(0x00,0);
}

void LCD_Send(uint8_t data,unsigned int n)
{    
     DDRB=0XBF; 
	 SPCR=0X50;
	 SPSR=0X01;
	if(!n)                      //n=0;命令;n=1;数据
	     PORTB|= (1<<LCD_RS);  //RS=1;
	else 
         PORTB&=~(1<<LCD_RS ); //RS=0;
		 PORTB&=~(1<<LCD_CS ); //CS=0;
    SPDR = data;			 			// 传送数据到SPI寄存器
    while ((SPSR & (1 << SPIF)) == 0);	// 等待数据传送完?
    //PORTB |= (1<<LCD_CS) ;			// 关断LCD SPI通讯
}

void LCD_Send16(uint16_t dat,unsigned int n)
{
   LCD_Send(dat>>8,n);
   LCD_Send(dat,n);
}






⌨️ 快捷键说明

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