小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

兩天的時(shí)間終于有點(diǎn)眉目了

 戶外驢行 2012-03-22
以下是液晶屏的工作原理及其編程
下面是一個(gè)簡(jiǎn)單的字符顯示程序
//改程序?qū)?shí)現(xiàn)簡(jiǎn)單的靜態(tài)數(shù)據(jù)
 
 
 
 
//注意:
//每次進(jìn)行讀寫操作之前,必須進(jìn)行讀寫檢測(cè)
#include <reg52.h>
#include <intrins.h>          //包含了空操作_nop_
#define uchar unsigned char
#define Data P0
//管腳的聲明
sbit RS = P2^1;
sbit RW = P1^5;
sbit E = P1^6;
//用到的函數(shù)聲明
void Delay(uchar);          //延時(shí)函數(shù)
void Init();                //初始化函數(shù)
void Busy();               //忙時(shí)檢測(cè)
void WriteCommand(uchar);   //寫指令
void WriteData(uchar);      //寫數(shù)據(jù)
void Display(uchar);             //顯示信息
 

void main()
{
    Init();
 Display(0x04);        //將顯示地址指定為第一行第五列
                       //顯示Apple
 WriteData('A');
 WriteData('p');
 WriteData('p');
 WriteData('l');
 WriteData('e');
 while(1);
}
void Delay(uchar i)
{
    uchar j;
 for(; i > 0; i --)
     for(j = 155; j > 0; j --);    //最少延時(shí)1ms
}

void Busy()
{
    Data = 0xff;
 RS = 0;        //根據(jù)規(guī)定:RS = 0, RW = 1可讀取狀態(tài)
 RW = 1;
 E = 1;      //允許讀寫
 _nop_();
 _nop_();
 _nop_();    //空操作三個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
 //進(jìn)行忙時(shí)檢測(cè)
 while(Data & 0x80);   //檢測(cè)到忙時(shí),繼續(xù)檢測(cè)【Data&0x80 = 1表示忙】
    E = 0;
}
//寫命令函數(shù)
void WriteCommand(uchar i)
{
    Delay(5);     //操作前進(jìn)行短暫的延時(shí)
 Busy();       //在閑時(shí)才能寫指令
 RS = 0;      //根據(jù)規(guī)定,RS = 0; RW = 0;才能寫入指令
 RW = 0;
 E = 0;       //寫指令時(shí),E應(yīng)為高脈沖,就是讓E從0到1發(fā)生整跳變,所以在這給E制0
 _nop_();
 _nop_();     //兩個(gè)空操作給硬件一定的反映時(shí)間
 Data = i;    //寫指令
 _nop_();
 _nop_();
 _nop_();
 E = 1;       //E制高電平
 _nop_();
 _nop_();
 _nop_();
 E = 0;        //當(dāng)E從高電平變?yōu)榈碗娖綍r(shí),液晶模塊開(kāi)始執(zhí)行指令
}
//寫數(shù)據(jù)函數(shù)
void WriteData(uchar j)
{
    Delay(5);        //操作前進(jìn)行短暫的延時(shí)
 Busy();        //閑時(shí)檢測(cè)
 RS = 1;        //根據(jù)規(guī)定:RS = 1;RW = 0才能寫入數(shù)據(jù)
 RW = 0;
 E = 0;          //在寫指令/數(shù)據(jù)時(shí),E應(yīng)為高脈沖,也就是要讓E從0到1發(fā)生跳變,所以在這里給E賦0
 _nop_();
 _nop_();     //兩個(gè)空操作給硬件一定的反映時(shí)間
 Data = j;    //寫指令
 _nop_();
 _nop_();
 _nop_();
 E = 1;       //E制高電平
 _nop_();
 _nop_();
 _nop_();
 E = 0;        //當(dāng)E從高電平變?yōu)榈碗娖綍r(shí),液晶模塊開(kāi)始執(zhí)行指令
}

void Init()
{
    Delay(15);         //延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長(zhǎng)的反應(yīng)時(shí)間
 WriteCommand(0x01);   //【清屏設(shè)置】
 Delay(5);          //延時(shí)5ms
    WriteCommand(0x06);   //【輸入方式設(shè)置】光標(biāo)從左向右移動(dòng),內(nèi)容不移動(dòng)
 Delay(5);          //延時(shí)5ms
 WriteCommand(0x0f);   //【顯示開(kāi)關(guān)設(shè)置】顯示開(kāi),有光標(biāo),字符閃爍
 Delay(5);          //延時(shí)5ms
 WriteCommand(0x38);   //【功能設(shè)置命令】8位數(shù)據(jù),雙行顯示,選擇5*7點(diǎn)陣
 Delay(5);          //延時(shí)5ms
}
void Display(uchar addr)
{
    addr += 0x80;           //第一行顯示地址的確定方法
    WriteCommand(addr);
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多