#include"lcd.h"
#include<pic16f1947.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//#include"config.h"
#define Delay_1us() asm("nop")
#define Delay_10us() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
void Delay_100us() {
Delay_10us(); //1
Delay_10us(); //2
Delay_10us(); //3
Delay_10us(); //4
Delay_10us(); //5
Delay_10us(); //6
Delay_10us(); //7
Delay_10us(); //8
Delay_10us(); //9
Delay_1us(); //6us
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
}
void Delay_ms(unsigned int ms)
{ unsigned int j;
for(j=ms;j>0;j--)
{
Delay_100us(); //1
Delay_100us(); //2
Delay_100us(); //3
Delay_100us(); //4
Delay_100us(); //5
Delay_100us(); //6
Delay_100us(); //7
Delay_100us(); //8
Delay_100us(); //9
Delay_10us(); //86us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
} }
void TimeDelay(unsigned int Timers)
{
unsigned int i;
while(Timers)
{
Timers--;
for(i=0;i<10;i++);
}
}
void SPI_SSSet(unsigned char Status)
{
if(Status)
{SPI_CS = 1;
Delay_ms(10);
// Delay_100us(1);
}
else
{SPI_CS = 0;
Delay_ms(10);
//Delay_100us(1);
}
}
void LCD_Init(void)
{
init_spi();
SPI_SCK = 1;
SPI_CS = 1;
Delay_ms(10);
SPI_SCK = 0;
Delay_ms(10);
SPI_SCK = 1;
Delay_ms(10);
}
void init_spi()
{
TRISBbits.TRISB0=0;
TRISBbits.TRISB1=0;
TRISBbits.TRISB2=0; //模拟spi端口
TRISDbits.TRISD3=0;
// TRISDbits.TRISD0=1;//按键
// TRISEbits.TRISE7=1;
// TRISEbits.TRISE6=1;
// TRISEbits.TRISE5=1;
// TRISEbits.TRISE4=1;//该5口无模拟输入功能
}
void PutChar(unsigned int x,unsigned int y,unsigned char a,unsigned char type)
{
SPI_SSSet(0);
SPI_Send(ASC_DISPLAY&CMD);
SPI_Send((x>>8)|DAT);
SPI_Send(x|DAT);
SPI_Send((y>>8)|DAT);
SPI_Send(y|DAT);
SPI_Send(type|DAT);
SPI_Send(a|DAT);
SPI_SSSet(1);
}
//void PutChars(unsigned int x,unsigned int y,unsigned int a,unsigned char type)
//{
//
// SPI_SSSet(0);
// SPI_Send(ASC_DISPLAY&CMD);
// SPI_Send((x>>8)|DAT);
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);
#include<pic16f1947.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//#include"config.h"
#define Delay_1us() asm("nop")
#define Delay_10us() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
void Delay_100us() {
Delay_10us(); //1
Delay_10us(); //2
Delay_10us(); //3
Delay_10us(); //4
Delay_10us(); //5
Delay_10us(); //6
Delay_10us(); //7
Delay_10us(); //8
Delay_10us(); //9
Delay_1us(); //6us
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
}
void Delay_ms(unsigned int ms)
{ unsigned int j;
for(j=ms;j>0;j--)
{
Delay_100us(); //1
Delay_100us(); //2
Delay_100us(); //3
Delay_100us(); //4
Delay_100us(); //5
Delay_100us(); //6
Delay_100us(); //7
Delay_100us(); //8
Delay_100us(); //9
Delay_10us(); //86us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
} }
void TimeDelay(unsigned int Timers)
{
unsigned int i;
while(Timers)
{
Timers--;
for(i=0;i<10;i++);
}
}
void SPI_SSSet(unsigned char Status)
{
if(Status)
{SPI_CS = 1;
Delay_ms(10);
// Delay_100us(1);
}
else
{SPI_CS = 0;
Delay_ms(10);
//Delay_100us(1);
}
}
void LCD_Init(void)
{
init_spi();
SPI_SCK = 1;
SPI_CS = 1;
Delay_ms(10);
SPI_SCK = 0;
Delay_ms(10);
SPI_SCK = 1;
Delay_ms(10);
}
void init_spi()
{
TRISBbits.TRISB0=0;
TRISBbits.TRISB1=0;
TRISBbits.TRISB2=0; //模拟spi端口
TRISDbits.TRISD3=0;
// TRISDbits.TRISD0=1;//按键
// TRISEbits.TRISE7=1;
// TRISEbits.TRISE6=1;
// TRISEbits.TRISE5=1;
// TRISEbits.TRISE4=1;//该5口无模拟输入功能
}
void PutChar(unsigned int x,unsigned int y,unsigned char a,unsigned char type)
{
SPI_SSSet(0);
SPI_Send(ASC_DISPLAY&CMD);
SPI_Send((x>>8)|DAT);
SPI_Send(x|DAT);
SPI_Send((y>>8)|DAT);
SPI_Send(y|DAT);
SPI_Send(type|DAT);
SPI_Send(a|DAT);
SPI_SSSet(1);
}
//void PutChars(unsigned int x,unsigned int y,unsigned int a,unsigned char type)
//{
//
// SPI_SSSet(0);
// SPI_Send(ASC_DISPLAY&CMD);
// SPI_Send((x>>8)|DAT);
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);