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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3382|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

C8051F340單片機(jī)SPI串行驅(qū)動(dòng)JCM12232F液晶屏遇到問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63990 發(fā)表于 2014-7-14 22:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序代碼如下,求大神指點(diǎn)


#include "c8051F340.h"
#include "def.h"
//#include "USB_API.h"
#include "intrins.h"
//#endif

// ********************************
// *** 局部常數(shù)

// ****** MCU
#define MCU_SYS_CLK (12000000) // clock frequency in MHz
#define MCU_SPI_CLK (1000000) // MCU與RC522之間的通信速率最大為1MHz
#define MCU_UART_RATE (9600) // Baud rate of UART in bps

sbit LCD_CS = P0^7; // LCD片選信號(hào)

// ********************************
// *** 全局變量
dbyte KEY_XDATA gRecevBuffer[30] = {0x00};
uint1 gCount = 0;
dbool gCompl = 0;

dvoid McuDelayUs(uint1 aUs)
{
    while(aUs--)
    {
        _nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();
    }
}

dvoid McuDelayMs(uint1 aMs)
{
     while(aMs--)
     {
          McuDelayUs(1000);
     }
}

void SpiInit()
{
    SPI0CFG = 0x60; // 允許主方式
    SPI0CN = 0x0D; // 4線單主方式,使能SPI0
    SPI0CKR = MCU_SYS_CLK / (2 * MCU_SPI_CLK) - 1; // 注意選擇SPI時(shí)鐘
    NSSMD0 = 1; // NSS的輸出值由NSSMD0(SPI0CN.2)控制
}

dbyte SpiWrite(dbyte aByte)
{
    SPIF = 0;
    SPI0DAT = aByte;
    while(!SPIF);
    SPIF = 0;
    return SPI0DAT;
}

dvoid Spi0SelectLcd()
{
    NSSMD0 = 0;
}
dvoid Spi0DisableAllDevices()
{
    NSSMD0 = 1;
}

// ********************************
// *** 全局函數(shù)

dvoid McuInit()
{
    PCA0MD &= ~0x40;
    EA = 1;
    OSCICN |= 0x83; // 內(nèi)部振蕩器使能,SYSCLK為內(nèi)部振蕩器不分頻
    RSTSRC |= 0x04; // 使能時(shí)鐘丟失檢測(cè)器
//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
// P0.0  -  SCK  (SPI0), Push-Pull,  Digital
// P0.1  -  MISO (SPI0), Open-Drain, Digital
// P0.2  -  MOSI (SPI0), Push-Pull,  Digital
// P0.3  -  NSS  (SPI0), Push-Pull,  Digital
// P0.4  -  TX0  (UART0), Push-Pull,  Digital
// P0.5  -  RX0  (UART0), Open-Drain, Digital
// p2.4  -  RST  (SPI0), Push-Pull,  Digital, skipped
// P0.7  -  LCD_CS(SPI0),Push-Pull,  Digital, skipped
    P0MDOUT = 0xDD;
    P0SKIP = 0xC0;
    P2MDOUT |= 0x10;
    P2SKIP |= 0x10;
    P4MDOUT |= 0x80;
//    P4 &= 0x7f;// 接收
    P4 |= 0x80;// 發(fā)送
    XBR0 = 0x03; // SPI I/O連到端口引腳
    XBR1 = 0x40; // 交叉開關(guān)使能
//-----------------------------------------------------------------------------
    SpiInit();
}

void Lcd_Write(uint1 flag, dbyte command_data)
{
    uint1 i_data,temp_data1,temp_data2;

    LCD_CS = 1;

    if(1 == flag)    //flag是1,寫入指令
    {
        Spi0SelectLcd();
        SpiWrite(0xf8);
        Spi0DisableAllDevices();
    }
    else        //flag非1,寫入數(shù)據(jù)
    {
        Spi0SelectLcd();   
        SpiWrite(0xfa);
        Spi0DisableAllDevices();
    }

    i_data = command_data;
    i_data &= 0xf0;

    Spi0SelectLcd();
    SpiWrite(i_data);
    Spi0DisableAllDevices();

    i_data = command_data;
    temp_data1 = i_data & 0xf0;
    temp_data2 = i_data & 0x0f;
    temp_data1 >>= 4;
    temp_data2 <<= 4;
    i_data = temp_data1 | temp_data2;
    i_data &= 0xf0;

    Spi0SelectLcd();
    SpiWrite(i_data);
    Spi0DisableAllDevices();

    LCD_CS = 0;
    McuDelayMs(10);
}

void Lcd_init()
{
    uint1 command_data;
    McuDelayMs(100);
    command_data = 0x30;
    Lcd_Write(1,command_data); /*功能設(shè)置:一次送8位數(shù)據(jù),基本指令集*/
    command_data = 0x04;
    Lcd_Write(1,command_data); /*點(diǎn)設(shè)定:顯示字符/光標(biāo)從左到右移位,DDRAM地址加1*/
    command_data = 0x0f;
    Lcd_Write(1,command_data); /*顯示設(shè)定:開顯示,顯示光標(biāo),當(dāng)前顯示位反白閃動(dòng)*/
    command_data = 0x01;
    Lcd_Write(1,command_data); /*清DDRAM*/
    command_data = 0x02;
    Lcd_Write(1,command_data); /*DDRAM地址歸位*/
    command_data = 0x80;
    Lcd_Write(1,command_data); /*把顯示地址設(shè)為0X80,即為第一行的首位*/
}

void Lcd_Display()
{
    uint1 command_data;

    command_data = 0x01;
    Lcd_Write(1,command_data); /*清DDRAM*/
    command_data = 0x80;
    Lcd_Write(1,command_data); /*把顯示地址設(shè)為0X80,即為第一行的首位*/
    Lcd_Write(2,'a');
    McuDelayMs(3000);  
}

int main()
{
    McuInit();
    Lcd_init();
    Lcd_Display();
    while(1);
    return 0;
}


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

使用道具 舉報(bào)

沙發(fā)
ID:44262 發(fā)表于 2014-7-17 16:38 來自手機(jī) | 只看該作者
程序運(yùn)行以后是什么效果?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美一区二区三区视频 | 黄色av免费| 久久综合狠狠综合久久综合88 | 91精品一区二区三区久久久久久 | 欧美a级成人淫片免费看 | 亚洲成人一级 | 97天天干| 国产综合视频 | 美日韩视频 | 欧美高清一区 | 蜜臀久久99精品久久久久久宅男 | 欧美八区| 一区二区三区av | 亚洲九色 | 国产sm主人调教女m视频 | 一级aaaaaa毛片免费同男同女 | 在线免费91 | 亚洲精品视频一区 | 四虎成人精品永久免费av九九 | 999热视频 | 中国毛片免费 | 日韩在线不卡视频 | 成人精品一区二区三区 | 天天色综 | 亚洲第一成人影院 | 国产欧美一区二区三区在线看 | 中文字幕在线观看视频网站 | 99免费 | 国产一区在线免费 | 国产欧美日韩精品一区 | 中文字幕免费视频 | 亚洲小视频在线播放 | 色婷婷激情 | 欧美精品一区在线发布 | 少妇一级淫片免费播放 | 中文字幕精品视频 | 精品国产一区二区三区免费 | 一区二区三区四区不卡 | 日日摸日日碰夜夜爽2015电影 | 男女羞羞视频在线免费观看 | 成人免费淫片aa视频免费 |