找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1535|回复: 0
打印 上一主题 下一主题
收起左侧

lm8072c源码

[复制链接]
跳转到指定楼层
楼主
ID:205834 发表于 2017-5-29 14:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • #include    <stdio.h>   
  • #include    <reg52.h>   
  • #include    <intrins.h>   
  •    
  • #define     uchar   unsigned char         
  • #define     uint    unsigned int   
  • sbit    CD=P3^0;   
  • sbit    RESET=P3^3;   
  • sbit    W=P3^2;   
  • sbit    R=P3^1;                         //定义各控制口   
  •    
  • void    delay(void);                    //声明延迟函数   
  • void    state01(void);                  //声明S0S1状态检查函数   
  • void    state3(void);                   //声明S3状态检查函数   
  • void    writed1d2(uchar,uchar);         //声明参数写入函数   
  • void    writecom(uchar);                //声明指令写入函数   
  • void    writedat(uchar);                //声明数据写入函数   
  • void    writedatauto(void);             //声明数据自动写函数   
  • void    charshow(void);                 //声明字型显示函数   
  • void    charflash(void);                //声明字型闪烁控制函数(PT:死循环)   
  • void    writebyte(void);                //声明写入一个字符函数   
  • void    readycharshow(void);            //声明字型写入准备函数   
  • void    clear(void);                    //声明清屏函数(全屏写空格)   
  • void    blank(void);                    //声明写空格函数   
  •    
  • void    delay(void)   
  • {   
  •     uchar   data    i;   
  •     uint    data    j;   
  •     for(i=0;i<100;i++)   
  •     for(j=0;j<300;j++);   
  • }   
  •    
  • void    state01(void)   
  • {   
  •     uchar   idata   i;   
  •     P1=0xff;   
  •     do   
  •     {   
  •         R=0;   
  •         i=P1;   
  •         R=1;   
  •     }   
  •     while((i&0x03)!=0x03);   
  • }   
  •    
  • void    state3(void)   
  • {   
  •     uchar   idata   i;   
  •     P1=0xff;   
  •     do   
  •     {   
  •         R=0;   
  •         i=P1;   
  •         R=1;   
  •     }   
  •     while((i&0x08)!=0x08);   
  • }   
  •    
  • void    writed1d2(uchar d1,uchar d2)   
  • {   
  •     state01();   
  •     CD=0;   
  •     P1=d1;   
  •     W=0;   
  •     W=1;   
  •     CD=1;   
  •     /////////////////////////////   
  •     state01();   
  •     CD=0;   
  •     P1=d2;   
  •     W=0;   
  •     W=1;   
  •     CD=1;   
  • }   
  •    
  • void    writecom(uchar com)   
  • {   
  •     state01();   
  •     CD=1;   
  •     P1=com;   
  •     W=0;   
  •     W=1;   
  • }   
  •    
  • void    writedat(uchar dat)   
  • {   
  •     state01();   
  •     CD=0;   
  •     P1=dat;   
  •     W=0;   
  •     W=1;   
  •     CD=1;   
  • }   
  •    
  • void    writedatauto(void)   
  • {   
  •     uchar   data    n;   
  •     writecom(0xb0);             //数据自动写开   
  •    
  •     for(n=0;n<30;n++)            //数据自动写段,文字属性   
  •     {   
  •         state3();   
  •         writedat(0x27);   
  •     }   
  •    
  •     writecom(0xb2);             //数据自动写关   
  • }   
  •    
  • void    clear(void)   
  • {   
  •     uint    data    n;   
  •     writed1d2(0x00,0x00);       //地址指针   
  •     writecom(0x24);   
  •     writecom(0xb0);             //数据自动写开   
  •    
  •     for(n=0;n<10000;n++)         //数据自动写段,文字属性   
  •     {   
  •         state3();   
  •         writedat(0x00);   
  •     }   
  •    
  •     writecom(0xb2);             //数据自动写关   
  • }   
  •    
  • void    charflash(void)   
  • {   
  •     while(1)                    //字型闪烁控制(死循环)   
  •     {   
  •         state01();   
  •         writecom(0x98);   
  •         delay();   
  •         state01();   
  •         writecom(0x90);   
  •         delay();   
  •     };     
  • }   
  •    
  • void    writebyte(void)   
  • {   
  •     state01();                  //写一个字符,文字属性   
  •     writedat(0x28);   
  •     state01();   
  •     writecom(0xc0);   
  • }   
  • //////////////////////////   
  • void    readycharshow(void)         //静态显示可调用   
  • {      
  •     uchar   idata   number;   
  •     number=30;                                  //写入字型图象数   
  •     state01();   
  •     writed1d2((number=(number<<1)),0x00);     //图象区宽度 240的LCD横向字节数为30个   
  •     writecom(0x43);   
  • }   
  • //////////////////////   
  • void    blank(void)   
  • {   
  •     uchar   idata   i;   
  •     for(i=0;i<16;i++)   
  •     {   
  •         state01();   
  •         writedat(0x00);   
  •         state01();   
  •         writecom(0xc0);   
  •     }         
  • }   
  • //////////////////////   
  • void    main(void)   
  • {   
  •       
  •     uchar   idata   i,a,b;                  //可随意支配参数   
  •     P3=0xff;                            //P3控制口置位   
  •     RESET=0;                            //LCD上电复位   
  •     delay();   
  •     RESET=1;   
  •     delay();   
  • /*  
  •     writed1d2(0x00,0x00);       //光标设置  
  •     writecom(0x21);  
  •     writecom(0x93);  
  •     writecom(0xa7);  
  • */   
  •     writed1d2(0x00,0x00);       //地址指针   
  •     writecom(0x24);   
  •    
  •     writed1d2(0x00,0x00);       //文字首地址   
  •     writecom(0x40);   
  •    
  •     writed1d2(0x1e,0x00);       //文字区宽度 注意进制换算 C中0x1e=汇编中30   
  •     writecom(0x41);   
  •    
  •     writed1d2(0x00,0x00);       //图象首地址   
  •     writecom(0x42);   
  •       
  • //  writed1d2(0x1e,0x00);       //图象区宽度 240的LCD横向字节数为30个   
  • //  writecom(0x43);             //(后面有设置)   
  •       
  •     writecom(0x98);             //文字开/关 图象开/关   
  •    
  •     writecom(0x80);             //启用内部文字 (逻辑选择)   
  •    
  • //  writebyte();   
  •    
  •    
  • /*清全屏幕,注意文字、图形参数不同,文字图形都有时以图形为准,参数可取大些*/   
  •     clear();   
  •     writed1d2(0x00,0x00);       //地址指针   
  •     writecom(0x24);   
  • /*                     */   
  •    
  • //  readycharshow();   
  •    
  •     while(1)   
  •     {   
  •     charshow();   
  •    
  •     writed1d2(0x00,0x00);       //地址指针   
  •     writecom(0x24);   
  •     };   
  •     while(1)   
  •     {   
  •     ;   
  •     }   
  • }   
  •    
  •    
  • void     charshow(void)   
  • {   
  •     uchar   data    i,j,k;   
  •    
  •     uchar   code word[16][32]={   
  •    
  • /*--  文字:  昆  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x20,0x40,0x20,0x40,   
  •     0x20,0x44,0x3E,0x4C,0x20,0x70,0x20,0x40,0x26,0x42,0x38,0x42,0x20,0x3E,0x00,0x00,   
  •    
  • /*--  文字:  山  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x21,0x04,0x21,0x04,0x21,0x04,   
  •     0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x7F,0xFC,0x20,0x04,0x00,0x00,   
  •    
  • /*--  文字:  市  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x02,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x1F,0xF8,0x11,0x08,0x11,0x08,   
  •     0x11,0x08,0x11,0x08,0x11,0x08,0x11,0x08,0x11,0x28,0x11,0x10,0x01,0x00,0x01,0x00,   
  •    
  • /*--  文字:  创  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x08,0x02,0x08,0x02,0x14,0x12,0x13,0x12,0x21,0xD2,0x40,0x92,0xBF,0x12,0x21,0x12,   
  •     0x21,0x12,0x25,0x12,0x22,0x12,0x20,0x82,0x20,0x82,0x20,0x8A,0x1F,0x84,0x00,0x00,   
  •    
  • /*--  文字:  新  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x10,0x00,0x08,0x0E,0x7F,0x70,0x22,0x40,0x14,0x40,0xFF,0x7E,0x08,0x48,0x08,0x48,   
  •     0xFF,0x48,0x08,0x48,0x2C,0x48,0x2A,0x88,0x4A,0x88,0x89,0x08,0x2A,0x08,0x10,0x08,   
  •    
  • /*--  文字:  科  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x06,0x08,0x78,0x88,0x08,0x48,0x08,0x48,0xFE,0x08,0x18,0x88,0x1C,0x48,0x2A,0x48,   
  •     0x28,0x0E,0x48,0x78,0x8B,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,   
  •    
  • /*--  文字:  技  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x10,0x20,0x10,0x20,0x10,0x20,0xFD,0xFE,0x10,0x20,0x14,0x20,0x19,0xFC,0x31,0x08,   
  •     0xD0,0x88,0x10,0x90,0x10,0x60,0x10,0x60,0x10,0x90,0x11,0x0E,0x56,0x04,0x20,0x00,   
  •    
  • /*--  文字:  检  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x10,0x40,0x10,0x40,0x10,0xA0,0xFD,0x10,0x12,0x0E,0x38,0x00,0x35,0xF8,0x50,0x00,   
  •     0x50,0x88,0x92,0x4C,0x11,0x48,0x11,0x50,0x10,0x20,0x17,0xFE,0x10,0x00,0x00,0x00,   
  •    
  • /*--  文字:  测  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x40,0x02,0x27,0xC2,0x24,0x42,0x84,0x52,0x45,0x52,0x55,0x52,0x15,0x52,0x25,0x52,   
  •     0x25,0x52,0x25,0x52,0xC5,0x52,0x41,0x02,0x42,0x82,0x42,0x42,0x44,0x4A,0x48,0x04,   
  •    
  • /*--  文字:  仪  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x08,0x80,0x08,0x40,0x10,0x68,0x12,0x48,0x22,0x08,0x62,0x10,0xA1,0x10,0x21,0x10,   
  •     0x20,0xA0,0x20,0xA0,0x20,0x40,0x20,0xA0,0x21,0x10,0x22,0x0E,0x2C,0x04,0x20,0x00,   
  •    
  • /*--  文字:  器  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x3E,0x7C,0x22,0x44,0x22,0x44,0x3E,0x7C,0x01,0x10,0x01,0x08,0xFF,0xFC,0x06,0xC0,   
  •     0x18,0x30,0xE0,0x0E,0x3E,0xFC,0x22,0x88,0x22,0x88,0x22,0x88,0x3E,0xF8,0x00,0x00,   
  •    
  • /*--  文字:  有  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x01,0x00,0x01,0x00,0x7F,0xFE,0x02,0x00,0x04,0x00,0x0F,0xF0,0x18,0x10,0x28,0x10,   
  •     0x4F,0xF0,0x88,0x10,0x08,0x10,0x0F,0xF0,0x08,0x10,0x08,0x90,0x08,0x70,0x08,0x20,   
  •    
  • /*--  文字:  限  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x00,0x00,0xFB,0xF8,0x92,0x08,0x93,0xF8,0xA2,0x08,0xA2,0x08,0x93,0xF8,0x8A,0x80,   
  •     0x8A,0x48,0xAA,0x50,0x92,0x20,0x82,0x20,0x82,0x10,0x82,0x8E,0x83,0x04,0x82,0x00,   
  •    
  • /*--  文字:  公  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x00,0x00,0x04,0x40,0x06,0x40,0x04,0x40,0x08,0x20,0x08,0x10,0x10,0x18,0x22,0x0E,   
  •     0x43,0x04,0x02,0x00,0x04,0x20,0x08,0x10,0x11,0xF8,0x3F,0x18,0x10,0x10,0x00,0x00,   
  •    
  • /*--  文字:  司  --*/   
  • /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   
  •     0x00,0x00,0x3F,0xFC,0x00,0x04,0x00,0x04,0x7F,0xE4,0x00,0x04,0x00,0x04,0x3F,0xC4,   
  •     0x20,0x44,0x20,0x44,0x3F,0xC4,0x20,0x44,0x20,0x04,0x00,0x14,0x00,0x08,0x00,0x00,};   
  •    
  •    
  •    
  •     for(j=0;j<31;j++,j++)   
  •     {   
  •         blank();   
  •         for(i=0;i<15;i++)   
  •         {   
  •                                           
  •             writedat(word[j]);         
  •    
  •             writecom(0xc0);   
  •    
  •             writedat(word[j+1]);   
  •    
  •             writecom(0xc0);   
  •         }   
  •     }   
  •       
  •     delay();   
  •     for(k=0;k<61;k++)   
  •     {      
  •         writed1d2(k,0x00);      //图象首地址   
  •         writecom(0x42);   
  •         delay();   
  •     }   
  •    
  •    
  • }   


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表