带字符型12864单片机显示程序

发布者:老卫最新更新时间:2014-12-31 来源: 51hei关键字:字符型  单片机  显示程序 手机看文章 扫描二维码
随时随地手机看文章
//带字符型12864单片机显示程序
 
 
 
#include
#include
 
 
 
void lcd_init(void);
void clr_lcd(void);
void send_com(unsigned char cmd);
void send_data(unsigned char dat);
void chek_busy(void);
void set_xy(unsigned char xpos,unsigned char ypos);
void print(unsigned char x,unsigned char y,char* str);
void printstr(unsigned char xpos,unsigned char ypos,unsigned char str[],unsigned char k);
 
unsigned char code buf[4] ={0xbb,0xb6,0xd3,0xad};//欢迎
 
 
#define DATA       P2
#define CONTROL P1
#define E    2           //并行的使能信号        sbit E   = P0^7
#define RW   1          //并行的读写信号         sbit RW = P0^6
#define RS   0         //并行的指令数据选择信号 sbit RS = P0^5  
#define PSB 3         //并/串行接口选择         sbit PSB = P0^4
 
12864 LCD分为字符型和点阵型,字符型即内带中文字库的有PSB串并选择引脚。
#define RST 5         //复位低电平有效         sbit RST = P0^3
#define SETB(x,y) (x|=(1<
#define CLRB(x,y) (x&=(~(1<
#define CHKB(x,y) (x&(1<
 
 
/测忙碌/
//测忙碌子程序
//RS=0,RW=1,E=H,D0-D7=状态字
void chek_busy(void)
{ unsigned char temp1;//状态信息(判断是否忙)
   CLRB(CONTROL,RS);    // RS = 0;
   SETB(CONTROL,RW);    // RW = 1;
   SETB(CONTROL,E);    // E = 1;
   do{temp1 = DATA;DATA=0xFF;} while(temp1&0x80);
   SETB(CONTROL,E);   // E = 1;
   DATA=0xFF;
}
/写命令/
//写命令子程序
void send_com(unsigned char cmd)
{
chek_busy();
CLRB(CONTROL,RS); //RS = 0;
CLRB(CONTROL,RW); //RW = 0;
DATA = cmd;
SETB(CONTROL,E); //E = 1;
CLRB(CONTROL,E); //E = 0;
}
/写数据/
//写数据子程序
void send_data(unsigned char dat)
{
chek_busy();
SETB(CONTROL,RS); //RS = 1;
CLRB(CONTROL,RW); //RW = 0;
DATA = dat;
SETB(CONTROL,E); //E = 1;
CLRB(CONTROL,E); //E = 0;
}
/初始化/
//复位、通讯方式选择
void lcd_init(void)
{
    SETB(CONTROL,RST);//复位RST=1
    SETB(CONTROL,PSB);       //通讯方式为并口PSB = 1
      //send_com(0x34);//34H--扩充指令操作
send_com(0x30);//功能设置,一次送8位数据,基本指令集
send_com(0x0C);//0000,1100 整体显示,游标off,游标位置off
send_com(0x01);//0000,0001 清DDRAM
send_com(0x02);//0000,0010 DDRAM地址归位
send_com(0x80);//1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC
}
 
//          设置显示位置    xpos(1~16),tpos(1~4)
void set_xy(unsigned char xpos,unsigned char ypos)
{
switch(ypos)
{
   case 1:
    send_com(0X80|xpos);break;
   case 2:
    send_com(0X90|xpos);break;
   case 3:
    send_com(0X88|xpos);break;
   case 4:
    send_com(0X98|xpos);break;
   default:break;
}
}
//          在指定位置显示字符串
void print(unsigned char x,unsigned char y,char* str)
{
    unsigned char lcd_temp;
    set_xy(x,y);
    lcd_temp=*str;
    while(lcd_temp != 0x00)
    {
        send_data(lcd_temp);
        lcd_temp=*(++str);
    }
}
 
//写字符串
 
//写字符串子程序
//xpos1取0~7共八列,ypos1取0~3共四行。
    void printstr(unsigned char xpos,unsigned char ypos,unsigned char str[],unsigned char k)
{ unsigned char n;
     switch (ypos)
    { case 1: xpos |= 0x80;break;         //第一行
      case 2: xpos |= 0x90;break;         //第二行
      case 3: xpos |= 0x88;break;         //第三行
      case 4: xpos |= 0x98;break;         //第四行
      default: break;
     }
      send_com(xpos);     //此处的Xpos已转换为LCM的显示寄存器实际地址
      for(n=0;n < k;n++)
     {
      send_data(str[n]);//显示汉字时注意码值,连续两个码表示一个汉字
      }
   }
 
//清屏
void clr_lcd(void)
{
   send_com(0x01);
   //send_com(0x34);
   //send_com(0x30);
}
 
//主函数
 
void main ()
{
lcd_init();     //设定液晶工作方式
printstr(1,1,buf,4);
print(5,1,"光临");
print(0,3," NATHAN_ZHANG");
while(1) { }
}
关键字:字符型  单片机  显示程序 引用地址:带字符型12864单片机显示程序

上一篇:实现LED点阵左右移动的程序
下一篇:ST7920 12864 经典函数

推荐阅读最新更新时间:2024-03-16 13:50

单片机c语言教程第十六章--C51指针的使用
指针就是指变量或数据所在的存储区地址。如一个字符型的变量 STR 存放在内存单元DATA 区的 51H 这个地址中,那么 DATA 区的 51H 地址就是变量 STR 的指针。在 C 语言中 指针是一个很重要的概念,正确有效的使用指针类型的数据,能更有效的表达复杂的数据 结构,能更有效的使用数组或变量,能方便直接的处理内存或其它存储区。指针之所以 能这么有效的操作数据,是因为无论程序的指令、常量、变量或特殊寄存器都要存放在内 存单元或相应的存储区中,这些存储区是按字节来划分的,每一个存储单元都能用唯一的 编号去读或写数据,这个编号就是常说的存储单元的地址,而读写这个编号的动作就叫做寻 址,通过寻址就能访问到存储区中的任一个能访问的
[单片机]
<font color='red'>单片机</font>c语言教程第十六章--C51指针的使用
USB接口单片机SL11R的特点及应用
    摘要: 介绍了USB接口单片机SL11R的主要特点,并简要地说明了SL11R基本应用系统的组成和开发。     关键词: USB 单片机 SL11R SL11R是Scanlogic公司生产的带有USB接口的16位RISC单片机,内核处理速度达48MIPS,有很强的控制功能和灵活的工作方式。SL11R固化有类似于80X86的内部BIOS,可以直接调用,使用非常简单,可以让开发者在很短的时间内完成设计任务。 1 USB接口简介 USB总线是通用串行总线(Universal Serial Bus)的简称,已经成为PC机的标准接口。目前256以上的PC机基本上都已经配置了USB接口。USB接口具
[应用]
单片机延时精确计算
在不同单片机中,有不同的单片机指令。每个指令都占用不同的时钟周期。一般延时程序就是通过循环去达到延时的作用。 下面以最基础的51单片机去做说明: 我这边用我之前debug过的2个延时程序,晶振使用12M: void delay_us_fun (unsigned int i) //us延时 { while (i--); } 这个是用来微秒级延时的,他在不同的参数i下,延时时间分别为实际为(9*i+16)us,这些延时的实际时间一般可以通过开发环境keil C51中模拟一下,看下时钟就知道了。 汇编好点的话也可以直接看汇编计算或者直接写汇编程序。 这时我们可以使用下面宏去调用上面的接口 #define _delay_
[单片机]
12864液晶简单显示程序(带字库)
感觉网上好多的12864液晶程序写的很混乱,当自己写了12864液晶的程序后才发现,原来液晶驱动程序是可以很简单的。这是我自己写的一个12864液晶程序,请大家多多指教。 /************************************************* 程序名称:12864液晶简单显示(8位并口) 芯片: SST89c52 硬件连接:P0口送数据或命令,链接到12864的DB0--DB7 RS=P2.0,RW=P2.1,EN=P2.2,PSB=P2.3,RST=P2.4 日期:2009年7月19日 作者:雪狼 *******************************************
[单片机]
51单片机~光敏传感器,比较器
(一)光敏传感器说明: (二)电压比较器功能: (二)输出模式: 由于比较器的输出电压在0~36V,所以要是把Vout接在比较器的VCC上的话,Vout的电压便也输出 0~ 36V,导致比较器无法和芯片沟通传递数据,所以要在Vout上加一个开漏输出的上拉电阻,使其输出5V电压,方便和其他电器和芯片沟通。 (2).强推挽输出:(当输出为高(低)电平时,还有驱动能力,因为驱动电流比较大) 既可以输出高电平也可以输出低电平,当输入为1时,下方晶体管(当三极管来看待),导通右边Vout输出为低电平,此时有灌电流。 当输如=入为0时,下方晶体管不导通,上方导通VDD电压下来,使Vout输出为高电平。 (3).难点:参数
[单片机]
51<font color='red'>单片机</font>~光敏传感器,比较器
AVR单片机入门:单片机嵌入式系统的结构与应用
单片机,全名单片机微控制器,单片微型计算机(Single-Chip Microcomputre),也有人称之为嵌入式微控制器(Embedded Microcontroller)。由单片机作为主要的控制核心所构成的嵌入式系统称为单片机嵌入式系统,国内一般简称为单片机系统。 一、单片嵌入式系统的结构 单片嵌入式系统一般包含硬件与软件两个部分,而硬件部分又分为单片为控制芯片(即单片机)和外围电路,外围电路又分为基本系统电路与接口电路,接口电路又分为前向通道接口电路、后向通道接口电路、交互通道接口电路与数据通信接口电路。 1、基本系统电路 基本系统电路是指满足单片机系统运行所需的基本电路。比如时钟电路、复位电路、系统供电电
[单片机]
C8051F020单片机的RS485串行通信设计
  l 引言   随着计算机技术和测控技术的不断发展,在以单片机为核心的数据采集系统中,需要实现单片机和计算机之间的数据交换,并以此来发挥单片机和计算机各自的长处,提升整个系统的性能价格比。   在计算机网络和工业控制系统中,经常需要采用串行通信来实现远程数据传输。目前,有多种接口标准可用于串行通信,包括RS232、RS422、RS485等。RS232是最早的串行接口标准,在短距离、较低波特率串行通信中得到了广泛应用。但是,RS232通信存在着传输速度慢、传输距离短、信号容易受到干扰等不足,其应用局限性已日益突出。而RS485通信采用差分方式来消除噪声,即信号在发送前会分解为正负2条线路,当到达接收端时将信号相减,使噪声相互抵消,
[电源管理]
C8051F020<font color='red'>单片机</font>的RS485串行通信设计
基于单片机C8051F021和时钟芯片实现定时采集存储系统的设计
随着科技的高速发展,现代工业测控领域的很多应用中都需要实现大量数据的定时采集存储。以为海流计设计的海流数据采集存储接口电路为例,介绍一种定时采集存储系统的工作原理及其实现方法。 1 总体结构 在很多情况下,尤其是恶劣的工作环境下,高性能的单片机和大容量的Flash存储器是数据采集存储系统的最佳选择,本文介绍的系统也是基于这样的考虑。系统硬件结构并不复杂,包括高性能单片机C8051F021、实时时钟芯片SD2300、大容量Flash存储器K9G8G08及其外围电路,如图1所示。工作原理也较为简单,通过串口将单片机C8051F021与海流计相连,通过对单片机的编程实现对海流计的控制和使用。同时,为了实现定时采集和数据存储的功能,还
[单片机]
基于<font color='red'>单片机</font>C8051F021和时钟芯片实现定时采集存储系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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