基于C8051F的金鹏LCD19264(带字库)程序

发布者:vnerwb池塘边最新更新时间:2015-05-19 来源: 51hei关键字:C8051F  LCD1926  字库 手机看文章 扫描二维码
随时随地手机看文章
//-------------------------------------------------------------------------*

//文件名:  LCD.h (LCD头文件)                                          *
//-------------------------------------------------------------------------*
#include "C8051F340.h"
#include
#define uint  unsigned int
#define uchar unsigned char

sbit rw = P2^1;           //H=read; L=write;
//sbit e1 = P2^2;           //up input enable;
sbit e2 = P2^2;           //down input enable;
sbit rs = P2^0;           //H=data; L=command;
//sbit rst= P3^0;           //Reset Signal 低电平有效
void init_lcd ();
void clrram ();
void string_disp (uchar up,uchar down,uchar addr,uchar length,uchar code *pp); //显示字符串
void number_disp (uchar up,uchar down,uchar addr,uchar length,uchar number1,uchar number2); //显示数字

//up:上半屏  down:下半屏
//up为1,控制上半屏,down为1,控制下半屏
uchar Math_Subwith(uchar dat)      //线序反转 
{
      uchar i,temp;
      temp = 0x00;
      for(i=0;i<8;i++)
        {
                temp >>= 1;
                if((dat<                 {
                        temp |= 0x80;       
                }
                else
                {
                        temp &= 0x7F;
                }
        }
        return temp;
}
//*******************************
//判忙
//*******************************
void chk_busy (uchar up,uchar down)
{
  if(up==1)
  {
 P1 = Math_Subwith(0xff);
    rs=0;
    rw=1;
    //e1=1;
 P4 = P4|0x01;
 while(P1 & 0x01);
    //e1=0;
 _nop_();_nop_();_nop_();_nop_();
 P4 = P4&0xfe;
  }
  if(down==1)
  {
 P1 =Math_Subwith(0xff);    
    rs=0;
    rw=1;
    e2=1;
 while(P1& 0x01);
 _nop_();_nop_();_nop_();_nop_();
    e2=0;
  }
}
//********************************************
//写命令
//********************************************
void send_c (uchar up,uchar down,uchar comm)
{
   chk_busy (up,down);
   rs=0;                //command
   rw=0;                //write
   if(up==1)
   {
  P1 = Math_Subwith(comm);        //output comm
     //e1=1;
  P4 = P4|0x01;
     _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     //e1=0;
  P4 = P4&0xfe;
   }
   if(down==1)
   {
  P1 = Math_Subwith(comm);       //output comm
     e2=1;
     _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     e2=0;
   }
}[page]
//********************************************
//写数据
//********************************************
void send_d (uchar up,uchar down,uchar dat)
{
  chk_busy (up,down);
  rs=1;               //data
  rw=0;               //write
  if(up==1)
  {
 P1 = Math_Subwith(dat);       //output data
    //e1=1;
 P4 = P4|0x01;
    _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
    //e1=0;
 P4 = P4&0xfe;
  }
  if(down==1)
  {
 P1 = Math_Subwith(dat);       //output data
    e2=1;
    _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
    e2=0;
  }
}
/*------------------初始化-----------------*/
void init_lcd (void)
{

   send_c (1,1,0x30);        /*30---基本指令动作*/

 send_c (1,1,0x01);        /*清屏,地址指针指向00H*/

 send_c (1,1,0x06);        /*光标的移动方向*/

 send_c (1,1,0x0c);        /*开显示,关游标*/

}
/*---------------显示汉字或字符----------------*/
/*void chn_disp (uchar code *chn)
{
  uchar i;
   send_c (1,1,0x30);       //第一行
 send_c (1,0,0x80);
    for (i=0;i<24;i++)
    send_d (1,0,chn[i]);

   send_c (1,0,0x90);       //第二行
    for (i=0;i<24;i++)
    send_d (1,0,chn[24+i]);

    send_c (0,1,0x80);       //第三行
    for (i=0;i<24;i++)
    send_d (0,1,chn[48+i]);

   send_c (0,1,0x90);       //第四行
    for (i=0;i<24;i++)
    send_d (0,1,chn[72+i]);
}*/
/*---------------任意位置显示汉字或字符----------------*/
void string_disp (uchar up,uchar down,uchar addr,uchar length,uchar code *pp)//地址,长度,数据
{
  uchar i;
   send_c (1,1,0x30);       
 send_c (up,down,addr);       //第一行
    for (i=0;i     send_d (up,down,pp[i]); 
}
void number_disp (uchar up,uchar down,uchar addr,uchar length,uchar number1,uchar number2)//地址,长度,数据
{
  uchar i;
   send_c (1,1,0x30);       
 send_c (up,down,addr);       //第一行
    for (i=0;i     send_d (up,down,number1);
 for(i=1;i<(length+1);i++)
 send_d (up,down,number2);
}
/*--------------清DDRAM------------------*/
void clrram (void)
{
   send_c (1,1,0x30);
   send_c (1,1,0x01);
}

关键字:C8051F  LCD1926  字库 引用地址:基于C8051F的金鹏LCD19264(带字库)程序

上一篇:基于C8051F的DS1302程序
下一篇:c8051f单片机ad采样程序

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

基于LabVIEW和C8051F350的纺丝张力监控系统
0 引言 丝线张力是纺纱、假捻等加工过程中影响产品质量与加工效率的一个重要参数。其中,丝线张力波动越大,产品质量越差,并将影响后序加工产品的外观及舒适性。因此需对生产过程中丝线张力加以监测、控制,以减小丝线张力的波动。目前,国内对丝线张力的监测大多还停留在随机抽检阶段,监测准确性不高,效率较低;国外的一些监测设备可实现丝线张力实时监测,但价格昂贵且技术保密。因此迫切需要自主研究设计一套丝线张力在线监控系统。 1 系统总体运行机制 基于LabVIEW和C8051F350单片机的纺丝在线张力监控系统采用国产自主研制的专用张力传感器,以嵌入式混合信号微处理芯片8051F350单片机为下位机,运用虚拟仪器图形化开发平台LabVI
[测试测量]
基于LabVIEW和<font color='red'>C8051F</font>350的纺丝张力监控系统
基于C8051F020的触摸屏驱动控制
  1 引言   目前触摸屏和液晶屏已成为嵌入式计算机系统常用的输入输出设备。触摸屏分为电阻、电容、表面声波、红外线扫描和矢量压力传感式触摸屏,其中使用最多的是四线或五线电阻式触摸屏。TSC2046为四线电阻式触摸屏控制器,以其低功耗和高速率   等特性广泛应用于电池供电的小型手持设备。   C8G051Fxxx系列单片机是完全集成的混合信号系统级器件,峰值速率达25 MI/s。片内集成ADC和DAC;SMBus/I2C、UART、SPI接口:可编程计数器/定时器阵列;64个I/O端口(P0~P7);内部具有JTAG和调试电路,支持在系统调试。本文介绍了利用该系列单片机C8051F020、TSC2046和液晶屏实现人机互
[单片机]
基于<font color='red'>C8051F</font>020的触摸屏驱动控制
基于C8051F120单片机实现虚拟仪器测试系统的设计
1、 引言 虚拟仪器是基于计算机的仪器。计算机和仪器密切结合,构建虚拟仪器代替复杂笨重的模拟仪器是目前仪器发展的趋势。与传统仪器相比,虚拟仪器在智能化、处理能力、性价比、可操作性等方面都具有明显优势,能将分散的仪器设备集中管理,实现生产流程的自动化管理,提高生产效率,降低成本。 2、 系统组成 本系统设计是一种新型的虚拟仪器测试系统,它是由数据采集系统和数据通讯子系统组成,其结构框图如图1所示。数据采集系统是以C8051F120单片机为核心,C8051F120单片机功能强大,可实现对目标信号精确采集、数字滤波和通过串口RS-232高速向上位机传输采集的数据通讯,上位机用LabVIEW完成数据的转换处理、分析、显示。数据采集系统
[测试测量]
基于<font color='red'>C8051F</font>120单片机实现虚拟仪器测试系统的设计
基于C8051F040的模型车无线控制系统的设计
0 引 言     汽车耐久性试验是汽车试验的重要组成部分,而在试验过程中试验人员驾驶行为的变化,往往导致实验结果不一致,从而降低了实验数据的有效性。因此各大汽车公司相继采用驾驶机器人代替试验人员进行汽车试验。利用驾驶机器人进行试验对于减轻人类劳动强度,降低试验环境对试验人员的伤害,提高试验效率、试验结果的客观性和准确度,节省试验费用,进而加速汽车研发进度都有重要的意义。     为了测试驾驶机器人以及驾驶算法的可靠性,必须有一个仿真驾驶系统能满足驾驶机器人的要求。本文所设计模型车无线控制系统则是实现机器人仿真驾驶的主要环节,为驾驶机器人及其驾驶算法提供了实验平台。     系统采用了1:10电动模型车,速度的调节由电子调速器和一个
[嵌入式]
AD7674和C8051F060构成的数据采集系统电路设计
  AD7674能提供3种不同转换速率工作方式,以便对不同的具体应用优化性能。这3种工作模式如下:WARP,允许采样率高达800 kHz。然而在这种模式下只有当转换之间的时间不超过1ms 时,才能保证其转换的精度。如果连续两次转换之间的时间大于1 ms,第一次转换的结果就会被忽略,这种模式适合于要求快速采样率的应用。NORMAL,这种模式的采样率为666 kHz,在这种模式下对采样转换之间的时间没有限制,既可保证高的转换精度又可确保快速的采样速率。IMPULSE,一种低功耗模式,其采样率为570 kHz。   只用1块C8051F060芯片即可完成单片机8051的各种控制,多路A/D 转换和D/A 转换,I2C、SPI 数据总线
[电源管理]
AD7674和<font color='red'>C8051F</font>060构成的数据采集系统电路设计
ATmega128(12864带字库
//12864型LCD显示驱动程序,简单的显示汉字和字符 //编译环境 AVR Studio 4.17/AVR GCC //系统时钟7.3728MHZ,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms //*********************************************************************** // 包含文件 //*********************************************************************** #include #include #define F_CPU 7372800 /* 单片机主频为7.3728M
[单片机]
基于C8051F040的CAN总线智能节点设计
引言 “X型火控系统”根据实际需要采用了CAN总线方式来实现其内部单体间的通信。CAN总线是一种用于各种设备检测及控制的现场总线,它是一种多主总线,在高速网络和低成本的节点系统中应用都很广泛。CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。其特点如下: *可以多主方式工作。 *CAN节点只需对报文的标识符滤波即可实现点对点、一点对多点及全局广播方式发送和接收数据。 *CAN总线通信格式采用短帧格式。 *采用非破坏性总线仲裁技术。 *直接通信距离最大可达10km (速率5kb/s以下),最高通信速率可达1Mb/s (此时距离最长为40m),节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。
[工业控制]
C8051F020的音频峰值采集和网络传送
广播信号经节目制作播出、信号传送、发射等环节,最终在听众用户端收听,其中各个环节的系统工作状态都会对最终的播出质量产生影响。为全面监测广播信号播出过程中多个环节的信号质量,同时对高周信号和低周信号 ( 音频基带信号 ) 的音频峰值进行监测,就要求音频峰值监测终端对广播信号播出端、发射端以及解调后的音频信号进行监测。一般电台的制作播出端、发射端、监测控制端不在同一地点。以上海为例:制作播出在虹桥路广播大厦;发射端在东方明珠电视塔;监测中心在北京路外滩。最好的监测方法就是各地点分别采集,再通过内部的局域网将采集的数据传送到监测中心集中分析处理。   1 原理框图 C8051F020 是美国 Silicon Lab
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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