音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

[原創(chuàng)]ST7920驅(qū)動(dòng),歡迎大家批磚!

作者:中喜 欄目:單片機(jī)
[原創(chuàng)]ST7920驅(qū)動(dòng),歡迎大家批磚!
/*=====================================================================
Corpright  Crocodile Studio,SCUN 2005

File NAME:  ST7920.c
DESCRIPTION:This is a TEST programm to diver ST7920.The interface between
            MCU and LCM is in parallel mode(ONLY write dat is available).
            Pin assignment :
            1--VSS;2--VDD;3--V0;4--R/S(CS)--P7.0;5--R/W(SID)--P7.1;
            6--E(SCLK)--P7.2;7-14--DB0-DB7--P6;15--PSB--P7.3;
            16--NC--P7.4;17--/RST--P7.5;18--VEE;19--LEDA;20--LEDK  
            
            RS     RW                  DESCRIPTION
            0       0                  MPU write instruction to IR(ST7920)
            0       1                  MPU read BF and AC(address counter)
            1       0                  MPU write data to DR(data register)
            1       1                  MPU read dat from DR          

Version: 1.0
date :   5,10  2005 (M-D-Y)
Author: crocodile
E_mail: crocodle320@gmail.com (QQ:175764808)
========================================================================*/


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


#define  uCHAR   unsigned CHAR
#define  uint   unsigned int

//define connection between MCU and ST7920
sbit ST7920RW=P7^1;     //Pin 5
sbit ST7920RS=P7^0;     //Pin 4
sbit ST7920CS=P7^6;     //Pin 6


//=================== prototype list =============================

void ST7920_Delay1ms(uCHAR n);       //to delay 1 ms about
void ST7920_SendCmd(uCHAR cmd);     //write command to ST7920
void ST7920_SendData(uCHAR dat);   //write dat to ST7920
void ST7920_Configuration(void);
void ST7920_Init(void);          //Initialize  ST7920

//================================================================


void main(void)
{
    uCHAR *CHARa="我愛你!";
    uCHAR *date="5-11-2005";
    uCHAR i;
    ST7920_Configuration();
    ST7920_Init();
    ST7920_SendCmd(0x80);
    ST7920_SendData('I');
    ST7920_SendCmd(0x81);
    ST7920_SendData('l');
    ST7920_SendData('o');
    ST7920_SendData('v');
    ST7920_SendData('e');
    ST7920_SendData('!');

          
    ST7920_SendCmd(0x90);
    for(i=0;i<4;i++)
    {       
             
        ST7920_SendData(*CHARa++);
        ST7920_SendData(*CHARa++);
        
    }  
    ST7920_SendCmd(0x88);
    /*while(*date!='\0')
    {
        ST7920_SendData(*date);
        date++;
    }  */
    for(;*date!='\0';date++)
    ST7920_SendData(*date);  
    while(1);       
}


//================================================================
void ST7920_Delay1ms(uCHAR n)
{
    uCHAR i;
    uCHAR j;
    for(j=0;j<n;j++)
    for(i=0;i<255;i++);
}

//================================================================
void ST7920_SendCmd(unsigned CHAR cmd)
{
    EA=0;
    SFRPAGE=0x0f;
    P6=cmd;
    ST7920RS=0;
    ST7920RW=0;
    ST7920CS=1;
    _nop_();
    ST7920CS=0;
    _nop_();
    ST7920CS=1;
    _nop_();
    ST7920RW=1;
    P6=0xff;            
    ST7920RS=0;
    while(P6&0x80);     //make sure ST7920 is not in busy state by reading BF
    ST7920CS=0;
    ST7920CS=1;
    EA=1;
    // if(cmd)
    // ST7920_Delay1ms(3);
}
    

//================================================================
void ST7920_SendData(unsigned CHAR dat)
{
    EA=0;
    SFRPAGE=0x0f;
    P6=dat;
    ST7920RS=1;
    ST7920RW=0;
    ST7920CS=1;
    ST7920CS=0;
    ST7920CS=1;
    ST7920RW=1;
    P6=0xff;            
    ST7920RS=0;
    while(P6&0x80);     //if BF(busy flag) is '1',wait
    ST7920CS=0;
    ST7920CS=1;
    EA=1;
}  


//================================================================
//must be excuted ST7920_Init() firstly when reset the SYSTEM

void ST7920_Init(void)  
{
    ST7920_Delay1ms(200);         //waiting
    ST7920_SendCmd(0x30);        //function set :8-bit interface
    ST7920_Delay1ms(10);
    
2樓: >>參與討論
中喜
高手點(diǎn)撥。
幾點(diǎn)疑惑:
set cgram address的目的是什么。
怎么上顯示自定義字符和圖像。
scroll address(卷地址)是怎么回事?怎么樣去用啊?
多謝!
期待中啊、、、、、、

3樓: >>參與討論
不愛說話
對(duì)我有些啟發(fā).
我用TMS320LF2407控制液晶(ST7920)模塊.

4樓: >>參與討論
不愛說話
不知ST7920和單片機(jī)連接時(shí)是否需要上拉電阻?
 
5樓: >>參與討論
不愛說話
我試了,必須要接,否則無(wú)法正常讀寫數(shù)據(jù).
 
6樓: >>參與討論
hotpower
ST7920用串行接法只需2線即可
 
7樓: >>參與討論
中喜
C8051Fx系列的IO可以配置的(漏極輸出或集電極輸出等)!
 
8樓: >>參與討論
不愛說話
沒辦法,我用的是89C51.
只好接上拉電阻.

9樓: >>參與討論
mxinfa
有畫圖的程序嗎?
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求助,數(shù)碼管數(shù)字顯示不全
請(qǐng)教
關(guān)于mifare1驗(yàn)證的問題
51MCU問題
電子開關(guān)IC
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)