久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 748|回復: 2
打印 上一主題 下一主題
收起左側

請教STC8H1K08-spi不工作

[復制鏈接]
跳轉到指定樓層
樓主

請幫我看看spi不工作,再而三的檢查也沒找出問題!

#include <STC8H.H>
#include <intrins.h>

typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;

#define MAIN_Fosc        24000000UL
#define red       0xf800        //紅色
#define blue      0x001f        //藍色
#define green    0x07e0    //綠色
#define white    0xffff       //白色       
#define black    0x0000         //黑色


sbit bl =  P1^7;   //BLK;背光
sbit rs  = P1^6;   //DC;數據/命令選擇,低電平命令,高電平數據
sbit scl = P1^5;    //SCL;時鐘信號輸入端口
sbit reset = P1^4;  //RST;復位,低電平使能
sbit sda = P1^3;    //SDA;SPI數據輸入端口
sbit cs  = P1^2;    //CS;片選,低電平使能

/******************************************************************************
    函數說明: 系統延時函數
******************************************************************************/
void delay_ms(u8 ms)
{
     u16 i;
     do{
          i = MAIN_Fosc / 6000;
          while(--i);
     }while(--ms);
}
/******************************************************************************
      硬件SPI數據傳送函數
/******************************************************************************/
void SPI_WriteData(unsigned char data1)
{

        cs=0;      
        SPDAT=data1; //待發送數據存入數據寄存器   
    while(SPIF == 0) ;  //等待寫入完成
        SPSTAT=0xC0;  //SPIF=1,WCOL=1清除標志
        cs=1;
}
/******************************************************************************
     硬件SPI初始化(SPI速率(speed值取:0/1/2/3,分別對應晶振的:4/16/64/128分頻))
*******************************************************************************/
void SPI_init(u8 speed)
{
        P_SW1=0x00; //spi口在P1        //IO口切換. 0: P1.2/P5.4 P1.3 P1.4 P1.5,  1: P2.2 P2.3 P2.4 P2.5,
                                                     //2: P5.4 P4.0 P4.1 P4.3,       3: P3.5 P3.4 P3.3 P3.2
        SPDAT=0;     //數據寄存器清0
        SPSTAT=0xC0; //清SPI狀態SPIF和WCOL寫1清0
        SPCTL=0xD3;  //1101 11xx 主模式,使能,先傳數據最高位,前時鐘為下降沿,并在下降沿驅動數據,上升沿檢測數據
}
/******************************************************************************
     函數說明:LCD復位時序函數
******************************************************************************/  
void Reset(void)  
{
    reset=0;
    delay_ms(100);
    reset=1;
    delay_ms(100);
}
/******************************************************************************
     函數說明:LCD寫入8位指令
******************************************************************************/
void Lcd_WriteIndex(u8 Data)
{
        rs=0;                   //DC引腳;0=寫命令
        SPI_WriteData(Data);  
}
/******************************************************************************
     函數說明:LCD寫入8位數據
******************************************************************************/
void Lcd_WriteData(u8 Data)
{       
        rs=1;                    //DC引腳;1=寫數據
        SPI_WriteData(Data);  
}
/******************************************************************************
     函數說明:LCD寫入16位數據
******************************************************************************/
void Lcd_WriteData_16(unsigned int Data)
{
        //cs=0;
        rs=1;
        SPI_WriteData(Data>>8);        
        SPI_WriteData(Data);                
        //cs=1;
}
/******************************************************************************
     函數說明:LCD初始化  ST7735
******************************************************************************/
void lcd_initial(void)
{
        Reset();//Reset before LCD Init.
               
        //1.44Inch LCD Panel with ST7735R.
        Lcd_WriteIndex(0x11);//Sleep exit
        delay_ms(120);
               
        //ST7735R Frame Rate
        Lcd_WriteIndex(0xB1);
        Lcd_WriteData(0x01);
        Lcd_WriteData(0x2C);
        Lcd_WriteData(0x2D);

        Lcd_WriteIndex(0xB2);
        Lcd_WriteData(0x01);
        Lcd_WriteData(0x2C);
        Lcd_WriteData(0x2D);

        Lcd_WriteIndex(0xB3);
        Lcd_WriteData(0x01);
        Lcd_WriteData(0x2C);
        Lcd_WriteData(0x2D);
        Lcd_WriteData(0x01);
        Lcd_WriteData(0x2C);
        Lcd_WriteData(0x2D);
       
        Lcd_WriteIndex(0xB4); //Column inversion
        Lcd_WriteData(0x07);
       
        //ST7735R Power Sequence
        Lcd_WriteIndex(0xC0);
        Lcd_WriteData(0xA2);
        Lcd_WriteData(0x02);
        Lcd_WriteData(0x84);
        Lcd_WriteIndex(0xC1);
        Lcd_WriteData(0xC5);

        Lcd_WriteIndex(0xC2);
        Lcd_WriteData(0x0A);
        Lcd_WriteData(0x00);

        Lcd_WriteIndex(0xC3);
        Lcd_WriteData(0x8A);
        Lcd_WriteData(0x2A);
        Lcd_WriteIndex(0xC4);
        Lcd_WriteData(0x8A);
        Lcd_WriteData(0xEE);
       
        Lcd_WriteIndex(0xC5); //VCOM
        Lcd_WriteData(0x0E);
       
        Lcd_WriteIndex(0x36); //MX, MY, RGB mode
        Lcd_WriteData(0xc8); //A0橫屏
       
        //ST7735R Gamma Sequence
        Lcd_WriteIndex(0xe0);
        Lcd_WriteData(0x0f);
        Lcd_WriteData(0x1a);
        Lcd_WriteData(0x0f);
        Lcd_WriteData(0x18);
        Lcd_WriteData(0x2f);
        Lcd_WriteData(0x28);
        Lcd_WriteData(0x20);
        Lcd_WriteData(0x22);
        Lcd_WriteData(0x1f);
        Lcd_WriteData(0x1b);
        Lcd_WriteData(0x23);
        Lcd_WriteData(0x37);
        Lcd_WriteData(0x00);        
        Lcd_WriteData(0x07);
        Lcd_WriteData(0x02);
        Lcd_WriteData(0x10);

        Lcd_WriteIndex(0xe1);
        Lcd_WriteData(0x0f);
        Lcd_WriteData(0x1b);
        Lcd_WriteData(0x0f);
        Lcd_WriteData(0x17);
        Lcd_WriteData(0x33);
        Lcd_WriteData(0x2c);
        Lcd_WriteData(0x29);
        Lcd_WriteData(0x2e);
        Lcd_WriteData(0x30);
        Lcd_WriteData(0x30);
        Lcd_WriteData(0x39);
        Lcd_WriteData(0x3f);
        Lcd_WriteData(0x00);
        Lcd_WriteData(0x07);
        Lcd_WriteData(0x03);
        Lcd_WriteData(0x10);  
       
        Lcd_WriteIndex(0x2a);
        Lcd_WriteData(0x00);
        Lcd_WriteData(0x00+2);
        Lcd_WriteData(0x00);
        Lcd_WriteData(0x80+2);

        Lcd_WriteIndex(0x2b);
        Lcd_WriteData(0x00);
        Lcd_WriteData(0x00+3);
        Lcd_WriteData(0x00);
        Lcd_WriteData(0x80+3);
       
        Lcd_WriteIndex(0xF0); //Enable test command  
        Lcd_WriteData(0x01);
        Lcd_WriteIndex(0xF6); //Disable ram power save mode
        Lcd_WriteData(0x00);
       
        Lcd_WriteIndex(0x3A); //65k mode
        Lcd_WriteData(0x05);
       
       
        Lcd_WriteIndex(0x29);//Display on
}
/*************************************************
功能:設置lcd顯示區域,在此區域寫點數據自動換行
入口參數:x1,x2,y1,y2起點和終點
*************************************************/
void Lcd_SetRegion(u16 x1,u16 y1,u16 x2,u16 y2)
{               
        Lcd_WriteIndex(0x2a);
        Lcd_WriteData(0x00);
        Lcd_WriteData(x1+2);
        Lcd_WriteData(0x00);
        Lcd_WriteData(x2+2)

        Lcd_WriteIndex(0x2b);
        Lcd_WriteData(0x00);
        Lcd_WriteData(y1+3);
        Lcd_WriteData(0x00);
        Lcd_WriteData(y2+3);
       
        Lcd_WriteIndex(0x2c);
}
/*****************************************************************************
     函數說明:在指定區域填充顏色   Color;顏色
******************************************************************************/
void LCD_Clear(u16 Color)
{
        u8 i,j;
        Lcd_SetRegion(0,0,128-1,128-1);  //(x起點、y起點,x終點、y終點)
        for (i=0;i<128;i++)
        {
            for (j=0;j<128;j++)
                {
                Lcd_WriteData_16(Color);
                }
        }
}
/******************************************************************************
    函數說明:在指定位置畫點 x,y 畫點坐標  color 點的顏色
******************************************************************************/
void LCD_DrawPoint(u16 x,u16 y,u16 color)
{
        Lcd_SetRegion();
        Lcd_WriteData_16(color);
}

/*****************************************************************************
     主函數
******************************************************************************/
main()
{       
        P_SW2 |= 0x80;  //擴展寄存器(XFR)訪問使能
       P1M0=0x00; P1M1=0x00; //IO口設置推挽輸出
        SPI_init(0);     //SPI初始化
        lcd_initial();
        bl=1;       
       
        while(1)
         {
                   LCD_Clear(red); //屏背景顏色         
                //LCD_DrawPoint(60,60,white);
         }
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2025-1-2 17:50 | 只看該作者
本帖最后由 lkc8210 于 2025-1-2 17:54 編輯

這代碼編譯都不成功吧?




回復

使用道具 舉報

板凳
ID:891876 發表于 2025-1-3 02:28 | 只看該作者
lkc8210 發表于 2025-1-2 17:50
這代碼編譯都不成功吧?

編譯可以通過,標注的地方也注釋掉了,在stc32下能正常顯示,這是為什么呢?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久久久婷婷 | 久久综合久久自在自线精品自 | 亚洲精品乱码久久久久久久久久 | 欧美日韩国产高清 | 国产成人精品一区二区三区四区 | 亚洲成人a v | 狠狠干狠狠操 | 国产一区二区三区久久久久久久久 | 亚洲午夜在线 | av在线免费观看网址 | 国产偷录视频叫床高潮对白 | 97在线观视频免费观看 | 亚洲精品乱码久久久久久9色 | 亚洲国产一区二区在线 | 中文字幕免费在线 | 成人免费在线 | 欧美国产日韩一区二区三区 | 狠狠操狠狠搞 | 亚洲视频一区二区三区 | 91成人精品| 日本福利在线 | 日韩欧美在线不卡 | 欧美日韩在线视频一区 | 精品国产不卡一区二区三区 | av免费在线播放 | 网站国产 | 久草网在线视频 | 在线一区 | 国产精品亚洲综合 | 欧美一级免费片 | 国产精品99久久久久久动医院 | 午夜看片网站 | 国产精品视频久久 | 国产97视频在线观看 | 翔田千里一区二区 | 99视频精品| 国产一二三区精品视频 | 香蕉超碰 | 国产精品久久久久久久久免费相片 | 亚洲欧美中文字幕在线观看 | 自拍偷拍av|