您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制C51单片机数组的使用 正文
C51单片机数组的使用

C51单片机数组的使用

点击数:7594 次   录入时间:03-04 11:55:44   整理:http://www.55dianzi.com   电脑-单片机-自动控制

    unsigned char ReadDataLCM(void); unsigned char ReadStatusLCM(void); void LCMInit(void);

    void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);

    void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);

    void Delay5Ms(void);

    void Delay400Ms(void);

    unsigned char code cdle_net[] = {"www.xx.com"};

    unsigned char code email[] = {"pnzwzw@xx.com"};

    void main(void)

    {

    Delay400Ms(); //启动等待,等 LCM 讲入工作状态

    LCMInit(); //LCM 初始化

    Delay5Ms(); //延时片刻(可不要)

    DisplayListChar(0, 0, cdle_net); DisplayListChar(0, 1, email); ReadDataLCM();//测试用句无意义 while(1);

    }

    //写数据

    void WriteDataLCM(unsigned char WDLCM)

    {

    ReadStatusLCM(); //检测忙 LCM_Data = WDLCM; LCM_RS = 1;

    LCM_RW = 0;

    LCM_E = 0; //若晶体震荡器速度太高能在这后加小的延时

    LCM_E = 0; //延时

    LCM_E = 1;

    }

    //写指令

    void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC 为 0 时忽略忙检测

    {

    if (BuysC) ReadStatusLCM(); //根据需要检测忙

    LCM_Data = WCLCM; LCM_RS = 0; LCM_RW = 0;

    LCM_E = 0;

    LCM_E = 0; LCM_E = 1;

    }

    //读数据

    unsigned char ReadDataLCM(void)

    {

    LCM_RS = 1; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1; return(LCM_Data);

    }

    //读状态

    unsigned char ReadStatusLCM(void)

    {

    LCM_Data = 0xFF; LCM_RS = 0; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1;

    while (LCM_Data & Busy); //检测忙信号

    return(LCM_Data);

    }

    void LCMInit(void) //LCM 初始化

    {

    LCM_Data = 0;

    WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号

    Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms();

    WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号

    WriteCommandLCM(0x08,1); //关闭显示 WriteCommandLCM(0x01,1); //显示清屏 WriteCommandLCM(0x06,1); // 显示光标移动设置 WriteCommandLCM(0x0C,1); // 显示开及光标设置

    }

    //按指定位置显示一个字符

    void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

    {

    Y &= 0x1;

    X &= 0xF; //限制 X 不能大于 15,Y 不能大于 1

    if (Y) X |= 0x40; //当要显示第二行时地址码+0x40; X |= 0x80; //算出指令码

    WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码

    WriteDataLCM(DData);

    }

    //按指定位置显示一串字符

    void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)

    {

    unsigned char ListLength;

    ListLength = 0; Y &= 0x1;

    X &= 0xF; //限制 X 不能大于 15,Y 不能大于 1

    while (DData[ListLength]>0x20) //若到达字串尾则退出

    {

    if (X <= 0xF) //X 坐标应小于 0xF

    {

    DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符

    ListLength++; X++;

    }

    }

    }

    //5ms 延时

    void Delay5Ms(void)

    {

    unsigned int TempCyc = 5552;

    while(TempCyc--);

    }

    //400ms 延时

    void Delay400Ms(void)

    {

    unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA--)

    {

    TempCycB=7269;

    while(TempCycB--);

    };

    }



上一页  [1] [2] 


本文关键字:单片机  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制