pic操作lcd 模拟spi 9非标准spi 9位数据位
来源:互联网 发布:eddie griffin 知乎 编辑:程序博客网 时间:2024/06/08 13:46
#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);
// SPI_Send(y|DAT);
// SPI_Send(type|DAT);
// SPI_Send((a>>8)|DAT);
// SPI_Send(a|DAT);
// SPI_SSSet(1);
//}
void ShowString(unsigned int x,unsigned int y,unsigned char *p,unsigned char type)
{
unsigned char length=0;
unsigned char i=0;
length =strlen(p);
for (length;length>0;length--)
{
// i++;
SPI_SSSet(0);
SPI_Send(ASC_DISPLAY&CMD);
switch(type)
{ case LCD_ASC8_FONT:SPI_Send(((x+(8*i))>>8)|DAT);
SPI_Send((x+(8*i))|DAT); break;
case LCD_ASC12_FONT:SPI_Send(((x+(12*i))>>8)|DAT);
SPI_Send((x+(12*i))|DAT); break;
case LCD_ASC16_FONT:SPI_Send(((x+(16*i))>>8)|DAT);
SPI_Send((x+(16*i))|DAT); break;
}
SPI_Send((y>>8)|DAT);
SPI_Send(y|DAT);
SPI_Send(type|DAT);
SPI_Send((p[i])|DAT);
SPI_SSSet(1);
i++;
}
}
//void PutString(unsigned int x,unsigned int y,unsigned char *p,unsigned char type)
//{
//
// SPI_SSSet(0);
// SPI_Send(ASC_STR_DISPLAY&CMD);
// SPI_Send((x>>8)|DAT);
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);
// SPI_Send(y|DAT);
// SPI_Send(type|DAT);
//
// while(*p!=0)
// {
// SPI_Send((*p)|DAT);
// p++;
// }
//
//
//
// SPI_SSSet(1);
//}
void PutChar_cn(unsigned int x,unsigned int y,unsigned char * GB,unsigned char type)
{
//??????×?×???
SPI_SSSet(0);
SPI_Send(HZ_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((*(GB++))|DAT);
SPI_Send((*GB)|DAT);
SPI_SSSet(1);
}
//void PutPixel(unsigned int x,unsigned int y)
//{
// //??????×÷
//// SPI_SSSet(0);//SS????????
//// SPI_Send(DRAW_POINT&CMD);//??????DRAW_POINT
//// SPI_Send((x>>8)|DAT);//????????????,???è??????X?á????
//// SPI_Send(x|DAT);
//// SPI_Send((y>>8)|DAT);//????Y?á????
//// SPI_Send(y|DAT);
//// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//
//void Line(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y)
//{
// //?????±??
//// SPI_SSSet(0);//SS????????
//// SPI_Send(DRAW_LINE&CMD);//??????DRAW_LINE
//// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(s_x|DAT);
//// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(s_y|DAT);
//// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(e_x|DAT);
//// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(e_y|DAT);
//// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void Circle(unsigned int x,unsigned int y,unsigned int r,unsigned char mode)
//{
//// SPI_SSSet(0);//SS????????
//// if(mode)
//// SPI_Send(DRAW_SOLID_CIRCLE&CMD);//??????DRAW_SOLID_CIRCLE
//// else
//// SPI_Send(DRAW_CIRCLE&CMD);//??????DRAW_CIRCLE
//// SPI_Send((x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(x|DAT);
//// SPI_Send((y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(y|DAT);
//// SPI_Send((r>>8)|DAT);//??°???r
//// SPI_Send(r|DAT);
//// SPI_SSSet(1);//?ê????×÷??SS??????
//}
void ClrScreen(void)
{
//??????×÷
SPI_SSSet(0); //SS????????
SPI_Send(CLEAR_SCREEN&CMD);//??????CLEAR_SCREEN
TimeDelay(2);
SPI_SSSet(1); //?ê????×÷??SS??????
}
//void SetBG_Color(unsigned int BGColor)
//{
//
// SPI_SSSet(0);//SS????????
// SPI_Send(SET_BG_COLOR&CMD);//??????SET_BG_COLOR
// SPI_Send((BGColor>>8)|DAT); //±??°????16bit RGB565
// SPI_Send(BGColor|DAT);
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void SetFG_Color(unsigned int FGColor)
//{
// SPI_SSSet(0);//SS????????
// SPI_Send(SET_FG_COLOR&CMD);//??????SET_FG_COLOR
// SPI_Send((FGColor>>8)|DAT);//?°?°????16bit RGB565
// SPI_Send(FGColor|DAT);
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void PutBitmap(unsigned int x,unsigned int y,unsigned long p)
//{
//
// SPI_SSSet(0);//SS????????
// SPI_Send(ICON_DISPLAY&CMD);//??????ICON_DISPLAY
// SPI_Send((x>>8)|DAT);//????X?á×?±ê
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(y|DAT);
// SPI_Send(((unsigned int)(p>>24))|DAT);//bmp ??????flash??????DWORD ?à??
// SPI_Send(((unsigned int)(p>>16))|DAT);
// SPI_Send(((unsigned int)(p>>8))|DAT);
// SPI_Send(((unsigned int)p)|DAT);
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void delay( unsigned char z)
//{
// unsigned int x,y;
// for(x=z;x>0;x--)
// for(y=880;y>0;y--);
//
//
//}
void SetBackLight(unsigned char brightness)
{
SPI_SSSet(0);
SPI_Send(SET_LCD_BRIGHTNESS&CMD);
Delay_1us();//2us
SPI_Send(brightness|DAT);
Delay_1us();
SPI_SSSet(1);
}
//
//void Box(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char mode)
//{
//// //?????±??
//// SPI_SSSet(0);
//// SPI_Send(DRAW_BOX&CMD);
//// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(s_x|DAT);
//// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(s_y|DAT);
//// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(e_x|DAT);
//// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(e_y|DAT);
//// SPI_Send(mode|DAT);
//// SPI_SSSet(1);
//}
//void Button(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char mode)
//{
// //?????±??
//// SPI_SSSet(0);//SS????????
//// SPI_Send(DRAW_BUTTON&CMD);//??????DRAW_LINE
//// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(s_x|DAT);
//// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(s_y|DAT);
//// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(e_x|DAT);
//// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(e_y|DAT);
//// SPI_Send(mode|DAT);
//// SPI_SSSet(1);
//}
//void EditASC(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char *p,unsigned char type)
//{
// unsigned char j;
// SPI_SSSet(0);//SS????????
// SPI_Send(DRAW_EDIT_ASC&CMD);//??????DRAW_LINE
// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(s_x|DAT);
// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(s_y|DAT);
// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(e_x|DAT);
// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(e_y|DAT);
// SPI_Send(type|DAT);
// //while(*p!=0)
// for(j=0;j<(type>>4);j++)
// {
// SPI_Send((*p)|DAT);//????????×?????????
// p++;
// }
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//========================================================================
// ????: void Line(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y)
// ?è??: ??s_x??s_y??????×?±ê??e_x??e_y???á??×?±ê?????????±??
//========================================================================
//void EditCN(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char *p,unsigned char type)
//{
// unsigned char j;
// //?????±??
// SPI_SSSet(0);//SS????????
// SPI_Send(DRAW_EDIT_HZ&CMD);//??????DRAW_LINE
// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(s_x|DAT);
// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(s_y|DAT);
// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(e_x|DAT);
// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(e_y|DAT);
// SPI_Send(type|DAT);
// //while(*p!=0)
// for(j=0;j<(type>>4);j++)
// {
// SPI_Send((*(p++))|DAT);
// SPI_Send((*(p++))|DAT);
// }
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
void SPI_Send(unsigned int dat) //数据传输函数(传送带操作)
{
unsigned char i=0;
for(i=0;i<9;i++)
{
if(dat&0x100)
{
SPI_SD0 = 1;
Delay_1us();
Delay_1us();
Delay_1us();
}
else
{
SPI_SD0 = 0;
Delay_1us();
Delay_1us();
Delay_1us();
}
SPI_SCK = 0;
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();//----------------------------------多延时是为了50%的占空比
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
SPI_SCK = 1;
Delay_1us();
dat = dat<<1;
Delay_1us();
Delay_1us();
Delay_1us();
}
}
#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);
// SPI_Send(y|DAT);
// SPI_Send(type|DAT);
// SPI_Send((a>>8)|DAT);
// SPI_Send(a|DAT);
// SPI_SSSet(1);
//}
void ShowString(unsigned int x,unsigned int y,unsigned char *p,unsigned char type)
{
unsigned char length=0;
unsigned char i=0;
length =strlen(p);
for (length;length>0;length--)
{
// i++;
SPI_SSSet(0);
SPI_Send(ASC_DISPLAY&CMD);
switch(type)
{ case LCD_ASC8_FONT:SPI_Send(((x+(8*i))>>8)|DAT);
SPI_Send((x+(8*i))|DAT); break;
case LCD_ASC12_FONT:SPI_Send(((x+(12*i))>>8)|DAT);
SPI_Send((x+(12*i))|DAT); break;
case LCD_ASC16_FONT:SPI_Send(((x+(16*i))>>8)|DAT);
SPI_Send((x+(16*i))|DAT); break;
}
SPI_Send((y>>8)|DAT);
SPI_Send(y|DAT);
SPI_Send(type|DAT);
SPI_Send((p[i])|DAT);
SPI_SSSet(1);
i++;
}
}
//void PutString(unsigned int x,unsigned int y,unsigned char *p,unsigned char type)
//{
//
// SPI_SSSet(0);
// SPI_Send(ASC_STR_DISPLAY&CMD);
// SPI_Send((x>>8)|DAT);
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);
// SPI_Send(y|DAT);
// SPI_Send(type|DAT);
//
// while(*p!=0)
// {
// SPI_Send((*p)|DAT);
// p++;
// }
//
//
//
// SPI_SSSet(1);
//}
void PutChar_cn(unsigned int x,unsigned int y,unsigned char * GB,unsigned char type)
{
//??????×?×???
SPI_SSSet(0);
SPI_Send(HZ_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((*(GB++))|DAT);
SPI_Send((*GB)|DAT);
SPI_SSSet(1);
}
//void PutPixel(unsigned int x,unsigned int y)
//{
// //??????×÷
//// SPI_SSSet(0);//SS????????
//// SPI_Send(DRAW_POINT&CMD);//??????DRAW_POINT
//// SPI_Send((x>>8)|DAT);//????????????,???è??????X?á????
//// SPI_Send(x|DAT);
//// SPI_Send((y>>8)|DAT);//????Y?á????
//// SPI_Send(y|DAT);
//// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//
//void Line(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y)
//{
// //?????±??
//// SPI_SSSet(0);//SS????????
//// SPI_Send(DRAW_LINE&CMD);//??????DRAW_LINE
//// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(s_x|DAT);
//// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(s_y|DAT);
//// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(e_x|DAT);
//// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(e_y|DAT);
//// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void Circle(unsigned int x,unsigned int y,unsigned int r,unsigned char mode)
//{
//// SPI_SSSet(0);//SS????????
//// if(mode)
//// SPI_Send(DRAW_SOLID_CIRCLE&CMD);//??????DRAW_SOLID_CIRCLE
//// else
//// SPI_Send(DRAW_CIRCLE&CMD);//??????DRAW_CIRCLE
//// SPI_Send((x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(x|DAT);
//// SPI_Send((y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(y|DAT);
//// SPI_Send((r>>8)|DAT);//??°???r
//// SPI_Send(r|DAT);
//// SPI_SSSet(1);//?ê????×÷??SS??????
//}
void ClrScreen(void)
{
//??????×÷
SPI_SSSet(0); //SS????????
SPI_Send(CLEAR_SCREEN&CMD);//??????CLEAR_SCREEN
TimeDelay(2);
SPI_SSSet(1); //?ê????×÷??SS??????
}
//void SetBG_Color(unsigned int BGColor)
//{
//
// SPI_SSSet(0);//SS????????
// SPI_Send(SET_BG_COLOR&CMD);//??????SET_BG_COLOR
// SPI_Send((BGColor>>8)|DAT); //±??°????16bit RGB565
// SPI_Send(BGColor|DAT);
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void SetFG_Color(unsigned int FGColor)
//{
// SPI_SSSet(0);//SS????????
// SPI_Send(SET_FG_COLOR&CMD);//??????SET_FG_COLOR
// SPI_Send((FGColor>>8)|DAT);//?°?°????16bit RGB565
// SPI_Send(FGColor|DAT);
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void PutBitmap(unsigned int x,unsigned int y,unsigned long p)
//{
//
// SPI_SSSet(0);//SS????????
// SPI_Send(ICON_DISPLAY&CMD);//??????ICON_DISPLAY
// SPI_Send((x>>8)|DAT);//????X?á×?±ê
// SPI_Send(x|DAT);
// SPI_Send((y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(y|DAT);
// SPI_Send(((unsigned int)(p>>24))|DAT);//bmp ??????flash??????DWORD ?à??
// SPI_Send(((unsigned int)(p>>16))|DAT);
// SPI_Send(((unsigned int)(p>>8))|DAT);
// SPI_Send(((unsigned int)p)|DAT);
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//void delay( unsigned char z)
//{
// unsigned int x,y;
// for(x=z;x>0;x--)
// for(y=880;y>0;y--);
//
//
//}
void SetBackLight(unsigned char brightness)
{
SPI_SSSet(0);
SPI_Send(SET_LCD_BRIGHTNESS&CMD);
Delay_1us();//2us
SPI_Send(brightness|DAT);
Delay_1us();
SPI_SSSet(1);
}
//
//void Box(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char mode)
//{
//// //?????±??
//// SPI_SSSet(0);
//// SPI_Send(DRAW_BOX&CMD);
//// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(s_x|DAT);
//// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(s_y|DAT);
//// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(e_x|DAT);
//// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(e_y|DAT);
//// SPI_Send(mode|DAT);
//// SPI_SSSet(1);
//}
//void Button(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char mode)
//{
// //?????±??
//// SPI_SSSet(0);//SS????????
//// SPI_Send(DRAW_BUTTON&CMD);//??????DRAW_LINE
//// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(s_x|DAT);
//// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(s_y|DAT);
//// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
//// SPI_Send(e_x|DAT);
//// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
//// SPI_Send(e_y|DAT);
//// SPI_Send(mode|DAT);
//// SPI_SSSet(1);
//}
//void EditASC(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char *p,unsigned char type)
//{
// unsigned char j;
// SPI_SSSet(0);//SS????????
// SPI_Send(DRAW_EDIT_ASC&CMD);//??????DRAW_LINE
// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(s_x|DAT);
// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(s_y|DAT);
// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(e_x|DAT);
// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(e_y|DAT);
// SPI_Send(type|DAT);
// //while(*p!=0)
// for(j=0;j<(type>>4);j++)
// {
// SPI_Send((*p)|DAT);//????????×?????????
// p++;
// }
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
//========================================================================
// ????: void Line(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y)
// ?è??: ??s_x??s_y??????×?±ê??e_x??e_y???á??×?±ê?????????±??
//========================================================================
//void EditCN(unsigned int s_x,unsigned int s_y,unsigned int e_x,unsigned int e_y,unsigned char *p,unsigned char type)
//{
// unsigned char j;
// //?????±??
// SPI_SSSet(0);//SS????????
// SPI_Send(DRAW_EDIT_HZ&CMD);//??????DRAW_LINE
// SPI_Send((s_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(s_x|DAT);
// SPI_Send((s_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(s_y|DAT);
// SPI_Send((e_x>>8)|DAT);//????X?á×?±ê
// SPI_Send(e_x|DAT);
// SPI_Send((e_y>>8)|DAT);//????Y?á×?±ê
// SPI_Send(e_y|DAT);
// SPI_Send(type|DAT);
// //while(*p!=0)
// for(j=0;j<(type>>4);j++)
// {
// SPI_Send((*(p++))|DAT);
// SPI_Send((*(p++))|DAT);
// }
// SPI_SSSet(1);//?ê????×÷??SS??????
//}
void SPI_Send(unsigned int dat) //数据传输函数(传送带操作)
{
unsigned char i=0;
for(i=0;i<9;i++)
{
if(dat&0x100)
{
SPI_SD0 = 1;
Delay_1us();
Delay_1us();
Delay_1us();
}
else
{
SPI_SD0 = 0;
Delay_1us();
Delay_1us();
Delay_1us();
}
SPI_SCK = 0;
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();//----------------------------------多延时是为了50%的占空比
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
Delay_1us();
SPI_SCK = 1;
Delay_1us();
dat = dat<<1;
Delay_1us();
Delay_1us();
Delay_1us();
}
}
阅读全文
0 0
- pic操作lcd 模拟spi 9非标准spi 9位数据位
- 【TECH】PIC SPI 调试
- SPI模拟:
- 模拟SPI
- PIC学习 SPI模块部分
- lcd spi总结
- spi lcd知识简要
- 嵌入式项目1--修改LCD为使用硬件SPI(之前为软件模拟SPI协议)
- 【Espruino】NO.09 使用SPI操作Sharp Memory LCD
- hdu5491-位操作模拟
- SPI
- SPI
- SPI
- SPI
- SPI
- SPI
- SPI
- spi
- VS2013常用快捷键(转载)
- [系统装机]如何用UltraISO制作U盘启动盘——图文详解
- Struts2环境搭建--SSH环境搭建--Spring MVC 环境搭建
- 前端涉及的所有知识体系
- 关于命令行解释器shell输入输出重定向的一些理解
- pic操作lcd 模拟spi 9非标准spi 9位数据位
- Leetcode 48 Rotated Image
- SDUT-3930(线段树+状压)
- java开发环境搭建
- LeetCode@Array_169_Majority_Element
- 五、Netty5解决TCP粘包问题
- 展讯平台判断otg状态
- 傅盛认知三部曲之三:战略就是格局+破局
- 深入理解AJAX系列第三篇--async属性值之同步和异步及同步和异步区别