51单片机采用模拟时序控制点阵图形液晶程序

发布者:Mengyun最新更新时间:2015-08-26 来源: eefocus关键字:51单片机  模拟时序控制  点阵图形液晶 手机看文章 扫描二维码
随时随地手机看文章
;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
;连线图:
;//LCM---89C52//  //LCM---89C52//   //LCM-------89C52//     //LCM----------89C52// //
;//DB0---P0.0//   //DB4---P0.4//    //D/I-------P2.6//      //CS1----------P2.4//  //
;//DB1---P0.1//   //DB5---P0.5//    //R/W-------P2.7//      //CS2----------P2.5//  //
;//DB2---P0.2//   //DB6---P0.6//    //RST--------VCC//      //CS3----------P3.2//  // 
;//DB3---P0.3//   //DB7---P0.7//    //E---------P2.3//                           //
;注:89C52的晶振频率为12MHz                                                 //
;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
//画线部分请参照avr的c程序。  
///#pragma src           ///生成ASM文件开关,必要时打开   /// 
#include  
#include  
#include  
 
#define Uchar unsigned char  
 
///////////////////////液晶显示器接口引脚定义/////////////////////////////// 
 
sbit    Elcm=   P2^3;       //  
sbit    CS1LCM= P2^4;       //  
sbit    CS2LCM= P2^5;       //  
sbit    CS3LCM= P3^2;       ///这个连接只是做实验的临时接法。/// 
sbit    Dilcm=  P2^6;       //  
sbit    Rwlcm=  P2^7;       //  
sfr Datalcm=    0x80;       //数据口  
unsigned char testi[]={"浸渠叁绳漱塔烃威牺晓玄瑶"}; 
 
///////////////////////常用操作命令和参数定义/////////////////////////////// 
#define  DISPON     0x3f    ///显示on      ///  
#define  DISPOFF    0x3e    ///显示off     ///  
#define  DISPFIRST  0xc0    ///显示起始行定义   ///  
#define  SETX       0x40    ///X定位设定指令(页)    ///  
#define  SETY       0xb8    ///Y定位设定指令(列)    ///  
#define  Lcdbusy    0x80    ///LCM忙判断位       ///  
 
/////////////////////////////显示分区边界位置/////////////////////////////////// 
#define  MODL       0x00    ///左区            ///  
#define  MODM       0x40    ///左区和中区分界   ///  
#define  MODR       0x80    ///中区和右区分界   ///  
#define LCMLIMIT    0xC0    ///显示区的右边界   ///  
 
/////////////////////////////////全局变量定义/////////////////////////////////////// 
Uchar col,row,cbyte;        ///列x,行(页)y,输出数据 /// 
bit xy;             ///画线方向标志:1水平    /// 
 
///////////////////////////////////函数列表///////////////////////////////////////////// 
void Lcminit(void);     ///液晶模块初始化   /// 
void Delay(Uchar);      ///延时,入口数为Ms /// 
void lcdbusyL(void);        ///busy判断、等待(左区) /// 
void lcdbusyM(void);        ///busy判断、等待(中区) /// 
void lcdbusyR(void);        ///busy判断、等待(右区) /// 
void Putedot(Uchar);        ///半角字符输出        /// 
void Putcdot(Uchar);        ///全角(汉字)输出  /// 
void Wrdata(Uchar);     ///数据输出给LCM      /// 
void Lcmcls( void );        ///LCM全屏幕清零(填充0) /// 
void wtcom(void);       ///公用busy等待      /// 
void Locatexy(void);        ///光标定位      /// 
void WrcmdL(Uchar);     ///左区命令输出        /// 
void WrcmdM(Uchar);     ///中区命令输出        /// 
void WrcmdR(Uchar);     ///右区命令输出        /// 
void Putstr(Uchar //puts,Uchar i);   ///中英文字符串输出  /// 
void Rollscreen(Uchar x);   ///屏幕向上滚动演示  /// 
void Rddata(void);      ///  从液晶片上读数据    /// 
void Linehv(Uchar length);  ///横(竖)方向画线  /// 
void point(void);       ///打点            /// 
void Linexy(Uchar endx,Uchar endy); 
 
/////////////////////////////////////数组列表/////////////////////////////////////////// 
Uchar code Ezk[];       ///ASCII常规字符点阵码表 /// 
Uchar code Hzk[];       ///自用汉字点阵码表  /// 
Uchar code STR1[];      ///自定义字符串        /// 
Uchar code STR2[];      //  
Uchar code STR3[];      //  
Uchar code STR4[];      //  
 
 
////////////////////////////////////////////////////////////////// 
/// 演示主程序            /// 
////////////////////////////////////////////////////////////////// 
void main(void) 
 

    Uchar x,y; 
    col=0; 
    row=0; 
    Delay(40);      ///延时大约40Ms,等待外设准备好  /// 
    Lcminit();      ///液晶模块初始化,包括全屏幕清屏/// 
    Putstr(STR2,24);    ///第一行字符输出,24字节  /// 
    col=0; 
    row=2; 
    Putstr(STR1,12);    ///第二行字符输出,12字节  /// 
    col=0; 
    row=4; 
    Putstr(STR3,24);    ///第三行字符输出,24字节  /// 
    col=0; 
    row=6; 
    Putstr(STR4,24);    ///第四行字符输出,12字节  /// 
    x=0; 
    col=0; 
    row=0; 
    xy = 1;         ///方向标志。定为水平方向   /// 
    Linehv(192);        ///画一条横线(0,0)-(191,0)    /// 
    col=0; 
    row=15; 
    xy = 1; 
    Linehv(192);        ///画一条横线(0,15)-(191,15)  /// 
    col=0; 
    row=32; 
    xy = 1; 
    Linehv(192);        ///画一条横线(0,32)-(191,32)  /// 
    col=0; 
    row=1; 
    xy = 0;         ///方向标志。定为垂直方向   /// 
    Linehv(31);     ///画一条竖线(0,1)-(0,31) /// 
    col=191; 
    row=1; 
    xy = 0; 
    Linehv(31);     ///画一条竖线(191,1)-(191,31) /// 
    col=0;          ///设定斜线的起点坐标     /// 
    row=63; 
    Linexy(44,31);      ///画一段斜线(0,63)-(44,31)   /// 
    col=44; 
    row=31; 
    Linexy(190,62);     ///继续画斜线(44,31)-(191,63) /// 
    while(1){ 
        Rollscreen(y);  ///定位新的显示起/// 
        y++; 
        y %=8; 
        x=testi[y]; 
        Delay(100); ///延时,控制滚动速度 /// 
        }; 

 
 
////////////////////////////////////////////////////////////////////////////////////////////////// 
///画线。任意方向的斜线,不支持垂直的或水平线 /// 
////////////////////////////////////////////////////////////////////////////////////////////////// 
 
void Linexy(Uchar endx,Uchar endy) 

    register Uchar t; 
    int xerr=0,yerr=0,delta_x,delta_y,distance; 
    Uchar incx,incy; 
 
///  compute the distance in both directions /// 
    delta_x=endx-col; 
    delta_y=endy-row; 
 
/// compute  the direction of the increment ,
    an increment of "0" means either a vertical or horizontal lines /// 
 
    if(delta_x>0) incx=1; 
    else if( delta_x==0 ) incx=0; 
        else incx=-1; 
 
 
    if(delta_y>0) incy=1; 
    else if( delta_y==0 ) incy=0; 
        else incy=-1; 
 
///  determine which distance is greater /// 
    delta_x = cabs( delta_x ); 
    delta_y = cabs( delta_y ); 
 
    if( delta_x > delta_y ) distance=delta_x; 
    else distance=delta_y; 
 
/// draw the line /// 
    for( t=0;t = distance+1; t++ ) { 
        point(); 
       xerr += delta_x ; 
        yerr += delta_y ; 
        if( xerr > distance ) { 
            xerr-=distance; 
            col+=incx; 
        } 
        if( yerr > distance ) { 
            yerr-=distance; 
            row+=incy; 
        } 
 
    } 

 
////////////////////////////////////////////////////////////////////////////////// 
///画线。只提供X或Y方向的,不支持斜线    /// 
////////////////////////////////////////////////////////////////////////////////// 
void Linehv(Uchar length) 
    { 
        Uchar xs,ys; 
        if (xy){ys = col; 
            for (xs=0;xs
                    col = ys + xs; 
                    point();} 
                } 
        else    {xs = row; 
            for (ys=0;ys
                    row = xs + ys; 
                    point();} 
                } 

 
////////////////////////////////////////////////////////////////////////////////// 
///  画点              /// 
////////////////////////////////////////////////////////////////////////////////// 
 
void point(void) 
    { 
        Uchar   x1,y1,x,y; 
        x1=col; 
        y1=row; 
        row=y1>>3;        ///取Y方向分页地址  /// 
        Rddata(); 
        y=y1&0x07;      ///字节内位置计算   /// 
        x=0x01; 
        x=x<          ///移入所画点     /// 
        Wrdata(cbyte|x);    ///画上屏幕      /// 
        col=x1;         ///恢复xy坐标        /// 
        row=y1; 
    } 
 
////////////////////////////////////////////////////////////////////////////////// 
///  屏幕滚动定位          /// 
////////////////////////////////////////////////////////////////////////////////// 
void Rollscreen(Uchar x) 
    { 
        cbyte = DISPFIRST|x;    ///定义显示起始行为x?/// 
        WrcmdL(cbyte); 
        WrcmdM(cbyte); 
        WrcmdR(cbyte); 
    } 
 
////////////////////////////////////////////////////////////////////////////////// 
///  一个字串的输出         /// 
////////////////////////////////////////////////////////////////////////////////// 
void Putstr(Uchar //puts,Uchar i) 
    { 
        Uchar j,X; 
        for (j=0;j
        { 
        X = puts[j]; 
            if (X&0x80) 
                { 
                    Putcdot(X&0x7f);    ///只保留低7位/// 
                } 
            else Putedot(X-0x20);       ///ascii码表从0x20开始/// 
        } 
    } 
 
////////////////////////////////////////////////////////////////////////////////// 
///   半角字符点阵码数据输出        /// 
////////////////////////////////////////////////////////////////////////////////// 
void Putedot(Uchar Order) 
    { 
    Uchar i,bakerx,bakery;  ///共定义4个局部变量         /// 
    int x;          ///偏移量,字符量少的可以定义为UCHAR   /// 
    bakerx = col;       ///暂存x,y坐标,已备下半个字符使用 /// 
    bakery = row; 
    x=Order // 0x10;     ///半角字符,每个字符16字节 /// 
///上半个字符输出,8列    /// 
    for(i=0;i<8;i++) 
        { 
        cbyte = Ezk[x];             ///取点阵码,rom数组    /// 
        Wrdata(cbyte);              ///写输出一字节        /// 
        x++; 
        col++; 
        if (col==LCMLIMIT){col=0;row++;row++;}; ///下一列,如果列越界换行/// 
            if (row>7) row=0;        ///如果行越界,返回首行    /// 
        }                   ///上半个字符输出结束 /// 
 
    col = bakerx;                   ///列对齐       /// 
    row = bakery+1;                 ///指向下半个字符行  /// 
///下半个字符输出,8列    /// 
    for(i=0;i<8;i++) 
        { 
        cbyte = Ezk[x];             ///取点阵码      /// 
        Wrdata(cbyte);              ///写输出一字节        /// 
        x++; 
        col++; 
        if (col==LCMLIMIT){col=0;row=row+2;};   ///下一列,如果列越界换行/// 
            if (row>7) row=1;        ///如果行越界,返回首行    /// 
        }                   ///下半个字符输出结束 /// 
    row=bakery; 
    }                       ///整个字符输出结束  /// 
 [page]
 
////////////////////////////////////////////////////////////////////////////////// 
///  全角字符点阵码数据输出     /// 
////////////////////////////////////////////////////////////////////////////////// 
void Putcdot(Uchar Order) 
    { 
    Uchar i,bakerx,bakery;      ///共定义3个局部变量     /// 
    int x;              ///偏移量,字符量少的可以定义为UCHAR   /// 
    bakerx = col;           ///暂存x,y坐标,已备下半个字符使用 /// 
    bakery = row; 
    x=Order // 0x20;         ///每个字符32字节  /// 
     
///上半个字符输出,16列   /// 
    for(i=0;i<16;i++) 
        { 
        Wrdata(Hzk[x]);             ///写输出一字节        /// 
        x++; 
        col++; 
        if (col==LCMLIMIT){ col=0;row++;row++;} ///下一列,如果列越界换行/// 
            if (row>6) row=0;        ///如果行越界,返回首行    /// 
        }                   ///上半个字符输出结束 /// 
         
///下半个字符输出,16列   /// 
    col = bakerx; 
    row = bakery+1; 
    for(i=0;i<16;i++)                ///下半部分/// 
        { 
        Wrdata(Hzk[x]); 
        x++; 
        col++; 
        if (col==LCMLIMIT){col=0;row++;row++;}  ///下一列,如果列越界换行/// 
            if (row>7) row=1;        ///如果行越界,返回首行    /// 
        }                   ///下半个字符输出结束 /// 
    row = bakery; 
    }                       ///整个字符输出结束  /// 
 
////////////////////////////////////////////////////////////////////////////////// 
///  清屏,全屏幕清零        /// 
////////////////////////////////////////////////////////////////////////////////// 
void Lcmcls( void ) 
    { 
    for(row=0;row<8;row++) 
        for(col=0;col
    } 
 
////////////////////////////////////////////////////////////////////////////////// 
///  从液晶片上读数据,保留在全局变量中   /// 
////////////////////////////////////////////////////////////////////////////////// 
 
void Rddata(void) 
    { 
    Locatexy();     ///坐标定位,返回时保留分区状态不变  /// 
        Datalcm=0xFF; 
        Dilcm = 1;  ///数据/// 
        Rwlcm = 1;  ///读数据/// 
        Elcm = 1;   ///读入到LCM/// 
        _nop_(); 
        cbyte = Datalcm;    ///虚读一次 /// 
        Elcm = 0; 
    Locatexy();     ///坐标定位,返回时保留分区状态不变  /// 
        Datalcm=0xFF; 
        _nop_(); 
        Dilcm = 1;  ///数据/// 
        Rwlcm = 1;  ///读数据/// 
        Elcm = 1;   ///读入到LCM/// 
        _nop_(); 
        cbyte = Datalcm;    ///从数据口读数据,真读 /// 
        Elcm = 0; 
    } 
 
////////////////////////////////////////////////////////////////////////////////// 
///  数据写输出           /// 
////////////////////////////////////////////////////////////////////////////////// 
 
void Wrdata(Uchar X) 
    { 
    Locatexy();     ///坐标定位,返回时保留分区状态不变  /// 
//  wtcom();  
        Dilcm = 1;  ///数据输出/// 
        Rwlcm = 0;  ///写输出  /// 
        Datalcm = X;    ///数据输出到数据口 /// 
        Elcm = 1;   ///读入到LCM/// 
        _nop_(); 
        Elcm = 0; 
    } 
 
////////////////////////////////////////////////////////////////////////////////// 
/// 命令输出,每次输出一个分区控制口 /// 
////////////////////////////////////////////////////////////////////////////////// 
 
///void Wrcmd(Uchar X)
//  {
//  Locatexy();     ///确定分区,返回时保留分区状态不变  /// 
//  wtcom();        ///等待LCM操作允许 ///  
//      Dilcm = 0;          ///数据操作  ///  
//      Rwlcm = 0;          ///写输出   ///  
//      Datalcm = X;            ///数据输出到数据口 ///  
//      Elcm = 1;_nop_();Elcm = 0;  ///读入到LCM///  
//  }  
 
////////////////////////////////////////////////////////////////// 
/// 命令输出到左区控制口       /// 
////////////////////////////////////////////////////////////////// 
 
void WrcmdL(Uchar X) 
    { 
        lcdbusyL();     ///确定分区,返回时保留分区状态不变/// 
        Dilcm = 0;          ///命令操作  /// 
        Rwlcm = 0;          ///写输出   /// 
        Datalcm = X;            ///数据输出到数据口 /// 
        Elcm = 1;_nop_();Elcm = 0;  ///读入到LCM/// 
    } 
 
////////////////////////////////////////////////////////////////// 
/// 命令输出到中区控制口       /// 
////////////////////////////////////////////////////////////////// 
 
void WrcmdM(Uchar X) 
    { 
        lcdbusyM();     ///确定分区,返回时保留分区状态不变/// 
        Dilcm = 0;          ///命令操作  /// 
        Rwlcm = 0;          ///写输出   /// 
        Datalcm = X;            ///命令输出到数据口 /// 
        Elcm = 1;_nop_();Elcm = 0;  ///读入到LCM/// 
    } 
 
////////////////////////////////////////////////////////////////// 
/// 命令输出到右区控制口       /// 
////////////////////////////////////////////////////////////////// 
 
void WrcmdR(Uchar X) 
    { 
        lcdbusyR(); ///确定分区,返回时保留分区状态不变  /// 
        Dilcm = 0;          ///命令操作  /// 
        Rwlcm = 0;          ///写输出   /// 
        Datalcm = X;            ///命令输出到数据口 /// 
        Elcm = 1;_nop_();Elcm = 0;  ///读入到LCM/// 
    } 
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
/// 分区操作允许等待,返回时保留分区选择状态     /// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
void lcdbusyL(void) 
    { 
        CS1LCM = 0;     ///CLR   CS1     /// 
        CS2LCM = 1;     ///SETB  CS2     /// 
        CS3LCM = 1;     ///SETB  CS3     /// 
    wtcom();        /// waitting for enable  /// 
    } 
 
void lcdbusyM(void) 
    { 
        CS1LCM = 1;     ///SETB  CS1     /// 
        CS2LCM = 0;     ///CLR   CS2     /// 
        CS3LCM = 1;     ///SETB  CS3     /// 
    wtcom();        /// waitting for enable  /// 
    } 
 
void lcdbusyR(void) 
    { 
        CS1LCM = 1;     ///SETB  CS1     /// 
        CS2LCM = 1;     ///SETB  CS2     /// 
        CS3LCM = 0;     ///CLR   CS3     /// 
    wtcom();        /// waitting for enable  /// 
    } 
 
void wtcom(void) 
    { 
    Dilcm = 0;      ///CLR   DI      /// 
    Rwlcm = 1;      ///SETB  RW      /// 
        Datalcm = 0xFF;     ///MOV   DATA_LCM,#0FFH  /// 
    Elcm  = 1;_nop_();       
        while(Datalcm & Lcdbusy); 
        Elcm  = 0; 
    } 
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
///根据设定的坐标数据,定位LCM上的下一个操作单元位置    /// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
void Locatexy(void) 
    { 
    unsigned char  x,y; 
    switch (col&0xc0)       ///  col.and.0xC0    /// 
        {           ///条件分支执行        /// 
        case 0:     {lcdbusyL();break;} ///左区    /// 
        case 0x40:  {lcdbusyM();break;} ///中区    /// 
        case 0x80:  {lcdbusyR();break;} ///右区    /// 
        } 
    x = col&0x3F|SETX;      ///  col.and.0x3f.or.setx    /// 
    y = row&0x07|SETY;      ///  row.and.0x07.or.sety    /// 
        wtcom();        ///  waitting for enable     /// 
        Dilcm = 0;          ///CLR   DI  /// 
        Rwlcm = 0;          ///CLR   RW  /// 
        Datalcm = y;            ///MOV   P0,Y    /// 
        Elcm = 1;_nop_();Elcm = 0; 
        wtcom();        ///  waitting for enable     /// 
        Dilcm = 0;          ///CLR   DI  /// 
        Rwlcm = 0;          ///CLR   RW  /// 
        Datalcm = x;            ///MOV   P0,X    /// 
        Elcm = 1;_nop_();Elcm = 0; 
    } 
 
////////////////////////////////////////////////////////////////// 
///液晶屏初始化            /// 
////////////////////////////////////////////////////////////////// 
 
void Lcminit(void) 
    { 
        cbyte = DISPOFF;    ///关闭显示屏 /// 
        WrcmdL(cbyte); 
        WrcmdM(cbyte); 
        WrcmdR(cbyte); 
        cbyte = DISPON;     ///打开显示屏 /// 
        WrcmdL(cbyte); 
        WrcmdM(cbyte); 
        WrcmdR(cbyte); 
        cbyte = DISPFIRST;  ///定义显示起始行为零 /// 
        WrcmdL(cbyte); 
        WrcmdM(cbyte); 
        WrcmdR(cbyte); 
        Lcmcls(); 
        col=0;      ///清屏        /// 
        row=0; 
        Locatexy(); 
    } 
////////////////////////////////////////////////////////////////// 
/// 延时               /// 
////////////////////////////////////////////////////////////////// 
void Delay(Uchar MS) 
    { 
        Uchar us,usn; 
        while(MS!=0) 
            { usn = 4; 
                while(usn!=0) 
                    { 
                        us=0xf0; 
                        while (us!=0){us--;}; 
                        usn--; 
                    } 
                MS--; 
            } 
    } 
 
////////////////////////////////////////////////////////////////// 
//定义字符串数组       ///  
////////////////////////////////////////////////////////////////// 
 
Uchar code STR1[]= 
        { 
        0x80,0x81,0x82,0x83,0x84,0x85, 
        0x86,0x87,0x88,0x89,0x8a,0x8B 
        }; 
             
Uchar code STR2[]="Our friend over the wold"; 
Uchar code STR3[]="Program by Keil C51 6.12"; 
Uchar code STR4[]="Thank you ~v~ 1234567890"; 
 [page]
////////////////////////////////////////////////////////////////// 
///  定义中文字库      /// 
////////////////////////////////////////////////////////////////// 
 
Uchar code Hzk[]={ 
///茂 C3515   0   /// 
     0x04,0x04,0xC4,0x44,0x5F,0x44,0x44,0xF4, 
     0x44,0x4F,0x54,0x64,0x44,0x46,0x04,0x00, 
     0x80,0x40,0x3F,0x00,0x40,0x40,0x20,0x20, 
     0x13,0x0C,0x18,0x24,0x43,0x80,0xE0,0x00, 
///兴 C4843   1   /// 
     0x00,0xFE,0x4A,0x4A,0x00,0xFE,0xEA,0xAA, 
     0xAA,0xFE,0x00,0x4A,0x4A,0xFE,0x00,0x00, 
     0x02,0x83,0x42,0x22,0x12,0x1B,0x02,0x02, 
     0x02,0x0B,0x12,0x22,0x62,0xC3,0x02,0x00, 
///国 C2590   2   /// 
     0x00,0xFE,0x02,0xD2,0x52,0x52,0xD2,0x3E, 
     0xD2,0x16,0x1A,0x12,0xFF,0x02,0x00,0x00, 
     0x00,0xFF,0x50,0x53,0x52,0x4A,0x6B,0x50, 
     0x4F,0x54,0x7B,0x40,0xFF,0x00,0x00,0x00, 
///际 C2842   3   /// 
     0x00,0xFE,0x22,0xD2,0x0E,0x20,0xB8,0x4F, 
     0xB2,0x9E,0x80,0x9F,0x72,0x8A,0x06,0x00, 
     0x00,0xFF,0x04,0x08,0x07,0x21,0x12,0x0A, 
     0x46,0x82,0x7E,0x06,0x0A,0x12,0x31,0x00, 
///( C0308   4   /// 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x00,0xC0,0x30,0x08,0x04,0x02,0x00,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x00,0x03,0x0C,0x10,0x20,0x40,0x00,0x00, 
///广 C2567   5   /// 
     0x00,0x00,0xFC,0x44,0x54,0x54,0x7C,0x55, 
     0xD6,0x54,0x7C,0x54,0x54,0x44,0x44,0x00, 
     0x80,0x60,0x1F,0x80,0x9F,0x55,0x35,0x15, 
     0x1F,0x15,0x15,0x35,0x5F,0x80,0x00,0x00, 
///东 C2211   6   /// 
     0x00,0x08,0xE8,0xA8,0xA8,0xA8,0xA8,0xFF, 
     0xA8,0xA8,0xA8,0xA8,0xE8,0x0C,0x08,0x00, 
     0x00,0x40,0x23,0x12,0x0A,0x06,0x02,0xFF, 
     0x02,0x06,0x0A,0x12,0x23,0x60,0x20,0x00, 
///) C0309   7   /// 
     0x00,0x00,0x02,0x04,0x08,0x30,0xC0,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
///有 C5148   8   /// 
     0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24, 
     0x24,0x24,0x24,0xF4,0x24,0x06,0x04,0x00, 
     0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09, 
     0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00, 
///限 C4762   9   /// 
     0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFE, 
     0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00, 
     0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF, 
     0x42,0x24,0x08,0x14,0x22,0x61,0x20,0x00, 
///公 C2511   10  /// 
     0x00,0x00,0x80,0x40,0x30,0x0C,0x00,0xC0, 
     0x07,0x1A,0x20,0x40,0x80,0x80,0x80,0x00, 
     0x01,0x01,0x20,0x70,0x28,0x24,0x23,0x20, 
     0x20,0x28,0x30,0x60,0x00,0x01,0x00,0x00, 
///司 C4330   11  /// 
     0x10,0x10,0x92,0x92,0x92,0x92,0x92,0x92, 
     0xD2,0x9A,0x12,0x02,0xFF,0x02,0x00,0x00, 
     0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10, 
     0x3F,0x00,0x40,0x80,0x7F,0x00,0x00,0x00, 
}; 
////////////////////////////////////////////////////////////////////////////////// 
/// 定义ASCII字库8列//16行      /// 
////////////////////////////////////////////////////////////////////////////////// 
 
Uchar code Ezk[]={ 
///-文字: --0x20   /// 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
///-文字:!--0x21   /// 
     0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x00, 
///-文字:"--0x22   /// 
     0x00,0x08,0x04,0x02,0x08,0x04,0x02,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
///-文字:#--0x23   /// 
     0x40,0x40,0xF8,0x40,0x40,0xF8,0x40,0x00, 
     0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00, 
///-文字:$--0x24   /// 
     0x00,0x70,0x88,0xFC,0x08,0x08,0x30,0x00, 
     0x00,0x1C,0x20,0xFF,0x21,0x22,0x1C,0x00, 
///-文字:%--0x25   /// 
     0xF0,0x08,0xF0,0x80,0x70,0x08,0x00,0x00, 
     0x00,0x31,0x0E,0x01,0x1E,0x21,0x1E,0x00, 
///-文字:&--0x26   /// 
     0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00, 
     0x1E,0x21,0x23,0x24,0x18,0x16,0x20,0x00, 
///-文字:'--0x27   /// 
     0x20,0x18,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
///-文字:(--0x28   /// 
     0x00,0x00,0x00,0x00,0xC0,0x30,0x08,0x04, 
     0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20, 
///-文字:)--0x29   /// 
     0x04,0x08,0x30,0xC0,0x00,0x00,0x00,0x00, 
     0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00, 
///-文字://--0x2a   /// 
     0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00, 
     0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00, 
///-文字:+--0x2b   /// 
     0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00, 
     0x01,0x01,0x01,0x0F,0x01,0x01,0x01,0x00, 
///-文字:,--0x2c   /// 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x80,0x60,0x00,0x00,0x00,0x00,0x00,0x00, 
///-文字:---0x2d   /// 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, 
///-文字:.--0x2e   /// 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, 
///-文字:/--ox2f   /// 
     0x00,0x00,0x00,0x00,0x00,0xE0,0x18,0x04, 
     0x00,0x40,0x30,0x0C,0x03,0x00,0x00,0x00, 
///-文字:0--0x30   /// 
     0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
     0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, 
///-文字:1--0x31   /// 
     0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 
     0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, 
///-文字:2--0x32   /// 
     0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 
     0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, 
///-文字:3--0x33   /// 
     0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 
     0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, 
///-文字:4--0x34   /// 
     0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 
     0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, 
///-文字:5--0x35   /// 
     0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 
     0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, 
///-文字:6--0x36   /// 
     0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 
     0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, 
///-文字:7--0x37   /// 
     0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 
     0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 
///-文字:8--0x38   /// 
     0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 
     0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, 
///-文字:9--0x39   /// 
     0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
     0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, 
///-文字::--   /// 
     0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, 
///-文字:/--   /// 
     0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00, 
///-文字:<--    /// 
     0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00, 
     0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00, 
///-文字:=--   /// 
     0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, 
     0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00, 
///-文字:>--    /// 
     0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, 
     0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00, 
///-文字:?--   /// 
     0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00, 
     0x00,0x00,0x00,0x26,0x01,0x00,0x00,0x00, 
///-文字:@--   /// 
     0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00, 
     0x07,0x18,0x27,0x28,0x27,0x28,0x07,0x00, 
///-文字:A--   /// 
     0x00,0x00,0xE0,0x18,0x18,0xE0,0x00,0x00, 
     0x30,0x0F,0x04,0x04,0x04,0x04,0x0F,0x30, 
///-文字:B--   /// 
     0xF8,0x08,0x08,0x08,0x08,0x90,0x60,0x00, 
     0x3F,0x21,0x21,0x21,0x21,0x12,0x0C,0x00, 
///-文字:C--   /// 
     0xE0,0x10,0x08,0x08,0x08,0x10,0x60,0x00, 
     0x0F,0x10,0x20,0x20,0x20,0x10,0x0C,0x00, 
///-文字:D--   /// 
     0xF8,0x08,0x08,0x08,0x08,0x10,0xE0,0x00, 
     0x3F,0x20,0x20,0x20,0x20,0x10,0x0F,0x00, 
///-文字:E--   /// 
     0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x00, 
     0x00,0x3F,0x21,0x21,0x21,0x21,0x20,0x00, 
///-文字:F--   /// 
     0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x00, 
     0x3F,0x01,0x01,0x01,0x01,0x01,0x00,0x00, 
///-文字:G--   /// 
     0xE0,0x10,0x08,0x08,0x08,0x10,0x60,0x00, 
     0x0F,0x10,0x20,0x20,0x21,0x11,0x3F,0x00, 
///-文字:H--   /// 
     0x00,0xF8,0x00,0x00,0x00,0x00,0xF8,0x00, 
     0x00,0x3F,0x01,0x01,0x01,0x01,0x3F,0x00, 
///-文字:I--   /// 
     0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 
///-文字:J--   /// 
     0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00, 
     0x00,0x1C,0x20,0x20,0x20,0x20,0x1F,0x00, 
///-文字:K--   /// 
     0x00,0xF8,0x00,0x80,0x40,0x20,0x10,0x08, 
     0x00,0x3F,0x01,0x00,0x03,0x04,0x18,0x20, 
///-文字:L--   /// 
     0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00, 
///-文字:M--   /// 
     0xF8,0xE0,0x00,0x00,0x00,0xE0,0xF8,0x00, 
     0x3F,0x00,0x0F,0x30,0x0F,0x00,0x3F,0x00, 
///-文字:N--   /// 
     0x00,0xF8,0x30,0xC0,0x00,0x00,0xF8,0x00, 
     0x00,0x3F,0x00,0x01,0x06,0x18,0x3F,0x00, 
///-文字:O--   /// 
     0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
     0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, 
///-文字:P--   /// 
     0xF8,0x08,0x08,0x08,0x08,0x10,0xE0,0x00, 
     0x3F,0x02,0x02,0x02,0x02,0x01,0x00,0x00, 
///-文字:Q--   /// 
     0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 
     0x00,0x0F,0x10,0x20,0x2C,0x10,0x2F,0x00, 
///-文字:R--   /// 
     0xF8,0x08,0x08,0x08,0x08,0x90,0x60,0x00, 
     0x3F,0x01,0x01,0x01,0x07,0x18,0x20,0x00, 
///-文字:S--   /// 
     0x60,0x90,0x88,0x08,0x08,0x10,0x20,0x00, 
     0x0C,0x10,0x20,0x21,0x21,0x12,0x0C,0x00, 
///-文字:T--   /// 
     0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x00, 
     0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 
///-文字:U--   /// 
     0xF8,0x00,0x00,0x00,0x00,0x00,0xF8,0x00, 
     0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00, 
///-文字:V--   /// 
     0x18,0xE0,0x00,0x00,0x00,0xE0,0x18,0x00, 
     0x00,0x01,0x0E,0x30,0x0E,0x01,0x00,0x00, 
///-文字:W--   /// 
     0xF8,0x00,0xC0,0x38,0xC0,0x00,0xF8,0x00, 
     0x03,0x3C,0x03,0x00,0x03,0x3C,0x03,0x00, 
///-文字:X--   /// 
     0x08,0x30,0xC0,0x00,0xC0,0x30,0x08,0x00, 
     0x20,0x18,0x06,0x01,0x06,0x18,0x20,0x00, 
///-文字:Y--   /// 
     0x08,0x30,0xC0,0x00,0xC0,0x30,0x08,0x00, 
     0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 
///-文字:Z--   /// 
     0x08,0x08,0x08,0x08,0xC8,0x28,0x18,0x00, 
     0x30,0x2C,0x22,0x21,0x20,0x20,0x20,0x00, 
///-文字:{--   /// 
     0x00,0x00,0x00,0x80,0x7E,0x02,0x00,0x00, 
     0x00,0x00,0x00,0x00,0x3F,0x20,0x00,0x00, 
///-文字:--   /// 
     0x00,0x08,0x70,0x80,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0x01,0x0E,0x30,0xC0,0x00, 
///-文字:}--   /// 
     0x00,0x02,0x7E,0x80,0x00,0x00,0x00,0x00, 
     0x00,0x20,0x3F,0x00,0x00,0x00,0x00,0x00, 
///-文字:^--   /// 
     0x00,0x08,0x04,0x02,0x02,0x04,0x08,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
///-文字:_--   /// 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
     0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 
///-文字:`--   /// 
     0x00,0x00,0x02,0x06,0x04,0x08,0x00,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
///-文字:a--   /// 
     0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 
     0x00,0x19,0x24,0x24,0x24,0x14,0x3F,0x00, 
///-文字:b--   /// 
     0x00,0xF8,0x00,0x80,0x80,0x80,0x00,0x00, 
     0x00,0x3F,0x11,0x20,0x20,0x20,0x1F,0x00, 
///-文字:c--   /// 
     0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 
     0x0E,0x11,0x20,0x20,0x20,0x20,0x11,0x00, 
///-文字:d--   /// 
     0x00,0x00,0x80,0x80,0x80,0x00,0xF8,0x00, 
     0x00,0x1F,0x20,0x20,0x20,0x11,0x3F,0x00, 
///-文字:e--   /// 
     0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 
     0x0E,0x15,0x24,0x24,0x24,0x25,0x16,0x00, 
///-文字:f--   /// 
     0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x00, 
     0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 
///-文字:g--   /// 
     0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 
     0x40,0xB7,0xA8,0xA8,0xA8,0xA7,0x40,0x00, 
///-文字:h--   /// 
     0x00,0xF8,0x00,0x80,0x80,0x80,0x00,0x00, 
     0x00,0x3F,0x01,0x00,0x00,0x00,0x3F,0x00, 
///-文字:i--   /// 
     0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 
///-文字:j--   /// 
     0x00,0x00,0x00,0x00,0x98,0x00,0x00,0x00, 
     0x00,0x80,0x80,0x80,0x7F,0x00,0x00,0x00, 
///-文字:k--   /// 
     0x00,0xF8,0x00,0x00,0x00,0x80,0x00,0x00, 
     0x00,0x3F,0x04,0x02,0x0D,0x10,0x20,0x00, 
///-文字:l--   /// 
     0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 
///-文字:m--   /// 
     0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00, 
     0x3F,0x00,0x00,0x3F,0x00,0x00,0x3F,0x00, 
///-文字:n--   /// 
     0x00,0x80,0x00,0x80,0x80,0x80,0x00,0x00, 
     0x00,0x3F,0x01,0x00,0x00,0x00,0x3F,0x00, 
///-文字:o--   /// 
     0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, 
     0x0E,0x11,0x20,0x20,0x20,0x11,0x0E,0x00, 
///-文字:p--   /// 
     0x00,0x80,0x00,0x80,0x80,0x80,0x00,0x00, 
     0x00,0xFF,0x11,0x20,0x20,0x20,0x1F,0x00, 
///-文字:q--   /// 
     0x00,0x00,0x80,0x80,0x80,0x00,0x80,0x00, 
     0x00,0x1F,0x20,0x20,0x20,0x11,0xFF,0x00, 
///-文字:r--   /// 
     0x00,0x00,0x80,0x00,0x00,0x80,0x80,0x00, 
     0x00,0x00,0x3F,0x01,0x01,0x00,0x00,0x00, 
///-文字:s--   /// 
     0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 
     0x00,0x13,0x24,0x24,0x24,0x24,0x19,0x00, 
///-文字:t--   /// 
     0x00,0x80,0x80,0xE0,0x80,0x80,0x80,0x00, 
     0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x00, 
///-文字:u--   /// 
     0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x00, 
     0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x00, 
///-文字:v--   /// 
     0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00, 
     0x00,0x07,0x18,0x20,0x18,0x07,0x00,0x00, 
///-文字:w--   /// 
     0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00, 
     0x0F,0x30,0x0E,0x01,0x0E,0x30,0x0F,0x00, 
///-文字:x--   /// 
     0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00, 
     0x20,0x11,0x0A,0x04,0x0A,0x11,0x20,0x00, 
///-文字:y--   /// 
     0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00, 
     0x00,0x87,0x98,0x60,0x18,0x07,0x00,0x00, 
///-文字:z--   /// 
     0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 
     0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x00, 
///-文字:{--   /// 
     0x00,0x00,0x00,0x80,0x7E,0x02,0x00,0x00, 
     0x00,0x00,0x00,0x00,0x3F,0x20,0x00,0x00, 
///-文字:|--   /// 
     0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, 
     0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, 
///-文字:}--   /// 
     0x00,0x02,0x7E,0x80,0x00,0x00,0x00,0x00, 
     0x00,0x20,0x3F,0x00,0x00,0x00,0x00,0x00, 
///-文字:~--   /// 
     0x00,0x06,0x01,0x01,0x06,0x04,0x03,0x00, 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
};
关键字:51单片机  模拟时序控制  点阵图形液晶 引用地址:51单片机采用模拟时序控制点阵图形液晶程序

上一篇:51单片机模拟串口C语言程序代码
下一篇:51单片机GPRS模块(LT8030)汇编通讯程序

推荐阅读最新更新时间:2024-03-16 14:30

实验八 交通灯控制(80C51单片机汇编语言编程)
设计一交通灯控制系统,控制东西方向的红、黄、绿灯和南北方向的红、黄、绿灯,可手动控制和自动控制,设置两个输入控制开关(可用P1.0、P1.1做输入控制),控制过程如下: 东西方向 南北方向 P1.0 P1.1 红 黄 绿 红 黄 绿 1 0 亮 亮 3S后亮 0 1 亮 3S后 亮 亮 0 0 亮 亮 1 1
[单片机]
简述51单片机延时函数
C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。扩展阅读:汇编延时程序算法详解 一. 500ms延时子程序 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i 0;i--) for(j=202;j 0;j--) for(k=81;k 0;k--); } 计算分析: 程序共有三层循环 一层循环n:R5*2
[单片机]
51单片机-KEIL的使用与程序的下载
很多人学单片机的时候都会遇到的情况,程序写的漂漂亮亮,原理理解的通通透透,但是.......不会用编译软件,不知道怎么下载程序,貌似大学的时候我老师就没讲过,呵呵。所以今天主要讲一下这两个软件的应用。 注:单片机种类多种多样,编译环境自然也有很多种。学习一种编译软件肯定需要一定的时间,不过软件界面基本都是大同小异,会了一个再去学另一个会很快。还有个现象,很多人喜欢用汉化版,个人感觉没必要。首先,汉化的不一定标准;其次,工具英语就那么几个单词,记下来就OK了,汉化反而会增加不必要的麻烦。 好了,废话少说,开始! 先说keil uvision,第一步,双击打开该软件,界面如下: 写代码的话
[单片机]
学<font color='red'>51单片机</font>-KEIL的使用与程序的下载
如何采用51单片机连接24C02-C语言测试代码
我总结3点需要注意的地方 1.关闭非IIC通信器件,比如我的开发板SDA和SCL也连接了DS1302,造成干扰会没有结果。 2.IIC通信的应答,发送端在SCL为0时将SDA置1,等待接收端拉低SDA;接收端在拉低SDA持续一个周期后,应将SDA置1释放总线。 主机作为发送端等待应答 SDA=1; SCL=1; while(SDA); SCL=0; 主机作为接收端,进行应答或不应答 SDA=0; //不应答则为1 SCL=1; SCL=0; SDA=1; 3.24C02在写入周期完成后还有有内部写入时间Twr,所以可以查手册加入适当时间的延时函数,或者使用查询应答的方式进行延时等待。 总之,关键是注意参考数据
[单片机]
如何采用<font color='red'>51单片机</font>连接24C02-C语言测试代码
ILI9235的51单片机驱动程序-推箱子游戏
完整的代码下载地址: http://www.51hei.com/bbs/dpj-20611-1.html 下面是ILI9235的驱动程序部分预览 #include mylib.h /******************************************************************************* 函数名称:void ClearScreen(uint Color) 函数功能:刷屏使得全屏显示单一的颜色 入口参数:Clolr:屏幕背景的颜色(直接写入颜色的英文,在.h中有定义) 出口参数:无 备 注: ***************************************
[单片机]
ILI9235的<font color='red'>51单片机</font>驱动程序-推箱子游戏
51单片机与CF卡的接口设计与实现
1 引言 电子存储设备的不断涌现,使许多便携设备大容量数据的实时处理和存储成为可能,CF卡( Compact Flash card)因具有容量大、体积小、性能优良、携带方便等优点,已广泛应用在数据采集系统和许多消费类电子产品中。然而目前所开发的产品成本高,电路复杂,所需元器件数目多,严重制约了CF卡在更广阔领域内的应用。本文给出了一种简洁实用的硬件接口电路.成功实现了单片机对CF卡标准文件的读写。 2 接口电路设计 接口电路如图1所示,采用与80C51兼容的SST89C54型单片机。SST89C54程序存储器分为block0和block1两块,前者为16 KB,后者为4 KB,block0和block1的地址
[单片机]
<font color='red'>51单片机</font>与CF卡的接口设计与实现
学习笔记之-51单片机IO口详解
前言 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的。51单片机每个IO端口结构都有差异,都各有各的特点。在平时的应用中,特别是设计外围硬件的时候,如果不了解其内部结构的话设计起来也许会有问题(特别是用到P0口),所以好好了解每个端口的结构是非常有必要的。再有一点是51单片机的引脚不像STM32那样可以支持重映射,所以硬件布局的时候也要注意这一点。下面就是在网上找的一点资料,整理如下: 51单片机I/O口内部结构 1.1P0端口的结构及工作原理       P0端口8位中的一位结构图 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个
[单片机]
学习笔记之-<font color='red'>51单片机</font>IO口详解
51单片机——共阳数码管的动态显示
数码管的原理图及基本原理 原理图 怎么工作的我就不介绍了 基本原理 动态显示实质上就是轮流点亮单个数码管实现多位数码管整体显示的效果。在轮流显示过程中,每位数码管点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 例题(附代码) 代码如下 #include reg52.h sbit HC138_A = P2^5; sbit HC138_B = P2^6; sbit HC138_C = P2^7; //相当于时
[单片机]
<font color='red'>51单片机</font>——共阳数码管的动态显示
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved