LED12864经典例程序

最新更新时间:2011-02-19来源: 互联网关键字:LED照明  LED驱动  驱动  LED程序 手机看文章 扫描二维码
随时随地手机看文章

#include
#include
#include
#define uchar unsigned char
#define Fisrt_Addr 0      //定义字符/汉字显示起始位置
typedef   unsigned char uint8;
sbit  LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_E=P2^7;
sbit PCB=P2^4;
uchar i,j;
uint8 AC_TABLE[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,        //第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,        //第二行汉字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,        //第三行汉字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,        //第四行汉字位置
};
 
void delay(int ms)
 {
   while(ms--)
   {
     for(j=0;j<120;j++);
   }
 }
 
 bit lcd_busy()
 { bit result;
     LCD_RS=0; 
 LCD_RW=1;
 LCD_E= 1;
  result=(bit)(P0&0x80);
  LCD_E=0;
 return result;
  }
 void lcd_wcmd(uchar cmd)
 {
   while(lcd_busy());
   LCD_RS=0;
   LCD_RW=0;
   LCD_E=0;
   P0=cmd;
  LCD_E=1;
  LCD_E=0;
 }
void lcd_wdata(uchar dat)
{
 while(lcd_busy());
   LCD_RS=1;
   LCD_RW=0;
   LCD_E=0;
 P0=dat ;
  LCD_E=1;
   LCD_E=0;
 }
   void lcd_initial()
 {
   lcd_wcmd(0x30);
   delay(1);
   lcd_wcmd(0x0C); //开显示,关光标,不闪烁
   delay(1);
   lcd_wcmd(0x06);//指定在资料写入或读取时,光标的移动方向
   delay(1);
   lcd_wcmd(0x01);
   delay(10); //这里要延时长一点,否侧会影响下面的操作
}

          
/*------------------清屏命令--------------------------*/ 
 void Clr_Screen()
 {
  lcd_wcmd(0x30);//考虑到前面出现0x34
   lcd_wcmd(0x01);
   delay(10);
  }
 
/*------------------整屏写入数据:全亮,或者竖条-----------------------------*/
//先写0x34关绘图,写地址数据,0x360x绘图
void Lcd_Fill(uchar disdata)
{ uchar x,y; //参考PDF写GDRAM的步骤,显示坐标
        for(y=0;y<32;y++)
         for(x=0;x<16;x++)
         {  lcd_wcmd(0x34);
            lcd_wcmd(y+0x80);        //行地址
            lcd_wcmd(x+0x80);     //列地址
            lcd_wdata(disdata);
            lcd_wdata(disdata);          
    lcd_wcmd(0x36);
           }
      lcd_wcmd(0x30);//考虑到前面出现0x34
 
     }
 
  /*------------------显示字符串--------------------------*/
void Zi_FU(uchar code *s)

  while(*s!=0)
   {  lcd_wdata(*s);
      s++;
      delay(10);
   }
}

    //注意:中文显示时空格符或数字ASCII码必需两个一起用,标点符号注意中英文
void intruction()
{    
 Clr_Screen() ;
 lcd_wcmd(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
 Zi_FU("我真的很爱你");

 lcd_wcmd(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
 Zi_FU("很在乎很在乎你 ");
 
 lcd_wcmd(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
 Zi_FU("我把我的心交给你");
 lcd_wcmd(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)
 Zi_FU("想你啦");
  delay(1000);
 
}
 


void feeling1()

   lcd_wcmd(0x30);    //???
   Zi_FU("我真的很爱你");
   delay(300);
   lcd_wcmd(0x90+Fisrt_Addr);
  Zi_FU("很在乎很在乎你 ");
   delay(300);
   lcd_wcmd(0x88+Fisrt_Addr);
  Zi_FU("我把我的心交给你");
    delay(300);
   lcd_wcmd(0x98+Fisrt_Addr);
    delay(500);
 Zi_FU("想你哦");

}    
/*------------------显示图片---------------------------*/
 void Disp_Img(uchar code *bmp)
{  
       uchar count=2,X=0x80;
   lcd_wcmd(0x34); //扩展指令
   lcd_wcmd(0x36); //打开绘图
  for(;count>0;count--)
  {
    for(i=0;i<32;i++)
     {   lcd_wcmd(0x80|i);
         lcd_wcmd(X); //X地址坐标,自动加1.
        for(j=0;j<16;j++)  //16*8=128
        lcd_wdata(*bmp++);
      }
    X=0x88;//下半屏  
 } 
    }
/*********************************************
函数名称:去字摸函数 ,取模方式是横向,顺序
函数功能:
**********************************************/
void ZK(uchar *zk)
{

 uchar  i, j;
   for(j=0;j<16;j++)

 lcd_wcmd(0x34); //扩展指令
 lcd_wcmd(0x36); //打开绘图
 lcd_wcmd(0x80|j);
 lcd_wcmd(0x80) ;//X地址坐标,自动加1.
 for(i=0;i<2;i++)
 { 
  lcd_wdata(*zk++); 
  }
 }
}

 
/*********************************************
函数名称: 向某一行写字符
函数功能:
**********************************************/
void Lcd_Write_Poss(uchar x,uchar y,uchar *ZiFu)
{
uchar addr,i=0;
if(x==1)addr=0x80;
if(x==2)addr=0x90;
if(x==3)addr=0x88;
if(x==4)addr=0x98;
addr=addr+y;
lcd_wcmd(0x30);
lcd_wcmd(addr);
while(*ZiFu!='')
{
   lcd_wdata(*ZiFu++);
}
}
void  main()
{
 PCB=1;
 while(1)
 {  
  lcd_initial();
  delay(1000);
  Clr_Screen();
  feeling1();
  delay(3000);
  for(i=8;i>0;i--) 
  {
   lcd_wcmd(0x18);  //一二行与三四行调换了,液晶分为上下两个半屏!!!
   delay(1000);   //有时会乱,与上面程序有关,要加lcd_wcmd(0x30), clrscreen();
  }
  Clr_Screen();                  //清屏
  feeling1();
  lcd_wcmd(0x34);       
  lcd_wcmd(0x04);    //0X04第一行和第三行反白显示,
  delay(3000);     //0X05第二行和第四行反白显示,与PDF不符
  lcd_wcmd(0x04);     //恢复正常
  delay(3000); 
  lcd_wcmd(0x34);  
  lcd_wcmd(0x03);  //允许输入滚动地址  
  for(i=0x40;i<0x8f;i++)
  {   
  lcd_wcmd(i);  //垂直滚动屏幕的内容
  delay(500);
  } 
 }
}

关键字:LED照明  LED驱动  驱动  LED程序 编辑:探路者 引用地址:LED12864经典例程序

上一篇:AT89C51数字电子钟
下一篇:LED安装注意事项

推荐阅读最新更新时间:2023-10-18 15:06

NXP:可调光市电LED驱动解决方案
随着LED成本的不断下降,以及各国政府对节能环保的日益重视,LED灯的市场前景变得越来越广阔。高亮度LED灯已经出现在各种各样场合,从户外广告牌、电视LED背光灯到交通信号灯、机场跑道导航灯等等。LED灯的优势也表现得尤为突出,例如长寿命、高能效以及丰富的色彩。   然而,LED灯设计师必须首要考虑的还是灯的可靠性问题。对很多场合而言,可靠性的重要性不言而喻:例如一些维护成本交高的户外照明,以及一些极易产生安全隐患的应用,包括交通灯、导航灯等。LED是也一种脆弱的半导体固态器件。它的发光原理是二极管的PN结正向电压偏置产生光源。LED阵列和电源都面临着被瞬态电压、浪涌电流和其它电子问题破坏的风险。 特别是在户外照明应用
[电源管理]
NXP:可调光市电<font color='red'>LED驱动</font>解决方案
LED照明可节省达85%的能源
  在日前结束的联合国可持续发展大会(“里约+20”峰会)上,气候组织(The Climate Group)发布的一项全球12大城市LED路灯试验项目显示:LED道路照明能够节省多达85%的能源。该试验项目还发现,试点城市居民偏爱LED照明,认为其社会和环境效益俱佳。事实上,LED照明不仅对城市居民有益,对全球的环保事业也有巨大作用。如果将全球照明效率提升一倍,则对气候产生的影响相当于将欧盟所有电力和热能生产排放的温室气体减少一半。
[电源管理]
和而泰拟成立LED照明公司
    和而泰(002402)发布公告称,拟用超额募集资金700万元人民币投资设立控股子公司——深圳和而泰照明科技有限公司,以实施“LED现代照明产品研发与产业化项目”。     该项目总投资1亿元,重点以LED现代照明产品为研发方向,最终实现LED现代照明产品的产业化经营。首期由公司与2名自然人共同投资1000万元设立控股子公司和而泰照明,剩余9000万元将根据公司的发展,结合和而泰照明的经营需要,在2013年12月31日前逐步投入。
[电源管理]
LED+无线传输:高楼俄罗斯方块灯光秀
  在建筑物外墙,用 LED 灯光来排列各种字型、形状或者是动画不仅可以达到某种广告效果,甚至也开始成为一种都会区里的时尚妆点,但现在,居然有人还可以拿这些LED装置来玩游戏,比之前的应用更多了点搞笑kuso味。   美国有一群麻省理工学院的学生利用LED结合无线传输这二项技术,在麻萨诸塞州一栋21层高的绿建筑大楼玩起了俄罗斯方块灯光秀。这栋建筑物一共有153个窗户,只要透过无线传输技术就能远端控制每一个窗户的LED灯光色彩,这些学生们发挥创意,同时可以控制、旋转每个窗户颜色的形状和角度,并能上下左右移动,直接就在大楼对面打起了实体版的俄罗斯方块。   的确,在未来的市场上,LED当然不会只拥有一般照明这项功能,像这样一整套结合其
[电源管理]
<font color='red'>LED</font>+无线传输:高楼俄罗斯方块灯光秀
Intersil推出“HIP”桥式驱动
美国 加州、MILPITAS --- 2012年10月10日 —全球高性能模拟混合信号半导体设计和制造领导厂商Intersil公司(纳斯达克全球交易代码:ISIL)今天宣布,推出面向电源和电机驱动应用的业内领先“HIP”系列MOSFET桥式驱动器新品---HIP212x系列。该100V、2A高频半桥驱动器产品家族提供最短的上升/下降时间,可调节死区时间控制和灵活的控制输出。 HIP2120、HIP2121、HIP2122和HIP2123产品为控制半桥MOSFET和减少应用电路的元件数量提供了更高的灵活性。另外,集成的延时定时器还让设计人员能够通过外置电阻来调节两个输出间的死区时间,从而消除了半桥和同步降压拓扑中可能产生的击穿
[电源管理]
尼吉康:让太阳能驱动汽车奔跑
专精于电容器特别是铝电解电容器和薄膜电容器的世界领先厂商尼吉康(nichicon),在日前结束的CEATEC JAPAN 2017展览会上不仅带来了其电容器的超级阵容和应用案例,更展示了尼吉康利用其电容器方面的领先技术在储能、电动汽车充电等领域的强大优势,同时也让人们看到了尼吉康致力于环境保护的决心。 图1 尼吉康展位 “TRIBRID ”Energy Storage System 尼吉康一直注重环境保护,CEATEC 2017上,尼吉康以“让太阳能驱动汽车奔跑”为主题,介绍了“TRIBRID ” Energy Storage System这一全新概念产品。 尼吉康构建的适用于家庭、汽车的节能生态蓄电供电系统
[汽车电子]
尼吉康:让太阳能<font color='red'>驱动</font>汽车奔跑
8位串行输入DMOS功率驱动
    Allegro公司的8位串行输入DMOS功率驱动器A6595KA和A6595KLW集8位CMOS移位寄存器和数据锁存、控制电路及DMOS功率驱动器输出于一身。     这种器件的串行数据输入、CMOS移位寄存器和锁存特性使其能直接连接微处理器基系统。串行数据输入率高达5MHz。CMOS串行数据输出可以级联连接以增加驱动线。A6595 DMOS漏极开路输出可吸入高达750mA电流。所有输出驱动器由OUTPUT ENABLE输入高态禁止。其功能框图示于图1。主要特性为:     ·50V最小输出箝位电压     ·250mA输出电流(所有输出同时)     ·rDS(on) 1.3Ω    
[半导体设计/制造]
12864实际应用的驱动程序
一下程序在使用时,紧紧结合每句后面的注释进行修改,比如端口的衔接问题 这是一个12864结合ST168进行方位显示的程序: 使用技巧:只需从中复制有关12864的驱动程序,修改相关参数即可 #include reg52.h #define uchar unsigned char #define uint unsigned int //宏定义 sbit SID = P2^1; //串行数据RW端口 sbit SCLK = P2^2; //串行同步时钟 E sbit cs=P2^0; //为写rs端口 sbit psb=P2^3; uchar code display1
[单片机]
小广播
最新电源管理文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved