pic操作lcd 模拟spi 9非标准spi 9位数据位

#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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值