📄 cx65m16.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 + -