PIC16F74的12864点阵液晶驱动(不带字库)

发布者:psi33最新更新时间:2016-09-08 来源: eefocus关键字:PIC16F74  12864点阵  液晶驱动 手机看文章 扫描二维码
随时随地手机看文章
驱动程序如下:

此程序用于12864不带字库点阵液晶屏使用
*/
#include

#define DATA      PORTB      //RB端口为8位数据端口
#define Busy      RB7        //RB7为忙标志位,数据的高位
#define RS        RC1        //控制引脚说明
#define RW        RC2
#define E         RC3
#define CS1       RD2
#define CS2       RD3
//---------------数据定义----------------
//12867为纵向8点下高位
//每一页的排列是纵向8位下高位,从左到右依次为64列
//下面是16*16的点阵字符代码
unsigned char const table[]={0x90,0x8c,0x84,0x84,0x84,0x84,0xf5,0x86,
                             0x84,0x84,0x84,0x84,0x84,0xd4,0x8c,0x00,
                             0x00,0x00,0x80,0x84,0x46,0x49,0x28,0x10,
                             0x10,0x28,0x47,0xc0,0x00,0x00,0x00,0x00};  //汉字安的代码
unsigned char const table1[]={0x08,0x08,0x88,0x88,0x88,0x88,0x88,0xff,
                              0x88,0x88,0x88,0xc8,0x88,0x0c,0x08,0x00,
                              0x00,0x00,0x00,0xfc,0x44,0x44,0x44,0x44,
                              0x44,0x44,0x44,0xff,0x04,0x00,0x00,0x00}; //吉字的点阵码
unsigned char const table2[]={0x10,0x10,0x10,0xd0,0xff,0x90,0x10,0x00,
                              0x10,0xd0,0xff,0x90,0x10,0x18,0x10,0x00,
                              0x08,0x04,0x03,0x00,0xff,0x00,0x09,0x04,
                              0x03,0x00,0xff,0x00,0x03,0x06,0x02,0x00}; //林字的点阵码
unsigned char const table3[]={0x00,0x00,0x00,0xfe,0x82,0x82,0x82,0x82,
                              0x82,0x82,0x82,0xff,0x02,0x00,0x00,0x00,
                              0x00,0x00,0x00,0x7f,0x20,0x20,0x20,0x20,
                              0x20,0x20,0x20,0x7f,0x00,0x00,0x00,0x00}; //日字的点阵码
unsigned char const table4[]={0x40,0x44,0x54,0x65,0xc6,0x64,0xd6,0x44,
                              0x40,0xfc,0x00,0x00,0xc3,0x62,0x40,0x00,
                              0x20,0x11,0x49,0x81,0x7f,0x01,0x05,0x29,
                              0x18,0x07,0x00,0x00,0xff,0x00,0x00,0x00}; //新字的点阵码  
unsigned char const table5[]={0x08,0x08,0x88,0x88,0x88,0x88,0x88,0xff,0x88,0x88,0x88,0xc8,0x88,0x0c,0x08,0x00,
                              0x10,0x10,0x10,0xd0,0xff,0x90,0x10,0x00,0x10,0xd0,0xff,0x90,0x10,0x18,0x10,0x00,
                              0x00,0x00,0x00,0xfe,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xff,0x02,0x00,0x00,0x00,
                              0x40,0x44,0x54,0x65,0xc6,0x64,0xd6,0x44,0x40,0xfc,0x44,0x42,0xc3,0x62,0x40,0x00,
                              0x00,0x00,0x00,0xfc,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xff,0x04,0x00,0x00,0x00,
                              0x08,0x04,0x03,0x00,0xff,0x00,0x09,0x04,0x03,0x00,0xff,0x00,0x03,0x06,0x02,0x00,
                              0x00,0x00,0x00,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7f,0x00,0x00,0x00,0x00,
                              0x20,0x11,0x49,0x81,0x7f,0x01,0x05,0x29,0x18,0x07,0x00,0x00,0xff,0x00,0x00,0x00};  //吉林日新
                              
                              
//---------------函数定义----------------
void picint(void);
void Leftwcom(unsigned char com);               //左半屏写指令代码子程序
void Leftwdata(unsigned char ldata);            //左半屏写显示数据子程序 
void Rightwcom(unsigned char rcom);             //右半屏写指令代码子程序
void Rightwdata(unsigned char rdata);           //右半屏写显示数据子程序 
void clear(void);                               //清屏函数
//***************************************
//初始化函数
//***************************************
void picint()
{
  INTCON=0;
  ADCON1=0x07;                                  //AD口为通用IO口
  TRISB=0;                                      //RB端口为输出端口
  PSPMODE=0;                                    //配置D口为通用IO口
  
  TRISC1=0;                                     //输出引脚,控制引脚
  TRISC2=0;
  TRISC3=0;
  TRISD3=0;
  TRISD2=0;
}
//***************************************
//延时函数
//***************************************
void delay(unsigned int asd)
{
  unsigned int i;
  for(i=0;i   {}
}
//***************************************
//左半屏写指令代码子函数
//***************************************
void Leftwcom(unsigned char com)
{
  PORTB=0xff;
  TRISB=0xff;        //设置为输入引脚
  E=1;
  CS1=1;
  CS2=1;
  RS=0;
  RW=1;
  while(1)
  {
    E=1;
    if(RB7==0) break;
    E=0;
  }
  RW=0;
  TRISB=0;
  PORTB=com;
  E=1;                   //送命令
  E=0;
}
//***************************************
//左半屏写显示数据子函数
//***************************************
void Leftwdata(unsigned char ldata)
{
  PORTB=0xff;
  TRISB=0xff;            //设置为输入
  CS1=1;
  CS2=1;
  RS=0;
  RW=1;
  while(1)
  {
    E=1;
    if(RB7==0) break;
    E=0;
  }
  RS=1;
  RW=0;
  TRISB=0;
  PORTB=ldata;
  E=1;
  E=0;

//***************************************
//右半屏写指令代码
//***************************************
void Rightwcom(unsigned char rcom)
{
  PORTB=0xff;
  TRISB=0xff;        //设置为输入引脚
  E=1;
  CS1=1;
  CS2=1;
  RS=0;
  RW=1;
  while(1)
  {
    E=1;
    if(RB7==0) break;
    E=0;
  }
  RW=0;
  TRISB=0;
  PORTB=rcom;
  E=1;               //送命令
  E=0;
}
//***************************************
//右半屏写数据代码
//***************************************
void Rightwdata(unsigned char rdata)
{
  PORTB=0xff;
  TRISB=0xff;     //设置为输入
  CS1=1;
  CS2=1;
  RS=0;
  RW=1;
  while(1)
  {
    E=1;
    if(RB7==0) break;
    E=0;
  }
  RS=1;
  RW=0;
  TRISB=0;
  PORTB=rdata;
  E=1;
  E=0;

//***************************************
//清屏函数
//***************************************
void clear()
{
  unsigned char i ,y;
  for(i=0;i<3;i++)
  {
    Leftwcom(i|0xb8);
    Rightwcom(i|0xb8);
    for(y=0;y<64;y++)
    {
      Leftwdata(0x00);
      Rightwdata(0x00);
    }
  } 
}
//***************************************
//主函数 
//***************************************
void main()
{
  unsigned char i=0;      //查表计数器
  unsigned char z;        //循环计数器
  unsigned char y=0;
  unsigned char e=0x40;
  picint();
  clear();
  while(1)
{
  Leftwcom(0xc0);         //写命令,设置显示其实行为第一行
  Leftwcom(0x3f);         //开显示设置
  Leftwcom(0xb8);         //设置第一页
  Leftwcom(0x40);         //设置显示为第一列
  for(i=0;i<64;i++)
  {
   Leftwdata(table5[i]);
  }
  Leftwcom(0xb9);         //设置第一页
  Leftwcom(0x40);         //设置显示为第一列
  for(i=64;i<128;i++)
  {
    Leftwdata(table5[i]);
  }
  Rightwcom(0xc0);         //写命令,设置显示其实行为第一行
  Rightwcom(0x3f);         //开显示设置
  Rightwcom(0xb8);         //设置第一页
  Rightwcom(0x40);         //设置显示为第一列
  for(i=0;i<64;i++)
  {
   Rightwdata(table5[i]);
  }
  Rightwcom(0xb9);         //设置第一页
  Rightwcom(0x40);         //设置显示为第一列
  for(i=64;i<128;i++)
  {
    Rightwdata(table5[i]);
  }
}
}

关键字:PIC16F74  12864点阵  液晶驱动 引用地址:PIC16F74的12864点阵液晶驱动(不带字库)

上一篇:基于ZigBee的无线气体监测系统的设计方案
下一篇:PIC18F2680的CAN总线设计

推荐阅读最新更新时间:2024-03-16 15:08

PCF2111CT字符液晶驱动模块
  PCF2111CT模块的主要特点有:(1)工作电压要求范围大,DC2.25V—6.0V;低功耗,最大功耗100mW;(2)内置振荡电路,无需外接振荡器,只要在振荡器输入端与电源跨接一个电容,与地跨接一个电阻即可,使用设计方便;(3)数据串行连续输入,与外围电路特别是单片机连接时,只需3根线,可以节约单片机的I/O口;(4)具有加电自动复位功能;(5)具有液晶底板背光驱动功能。   一、引脚功能介绍   PCF21XXC系列产品有多种封装形式,PCF2111CT采用的是VSO40封装,引脚排列如图1所示。      各引脚功能描述如下:   1脚,CLB:外部同步时钟输入;   2脚,VDD:电源电压正极,DC2
[单片机]
PCF2111CT字符<font color='red'>液晶</font><font color='red'>驱动</font>模块
PIC16F917驱动段码液晶(内部集成驱动)程序
#include pic.h //#define a 0b00000010 //#define b 0b00001000 #define a 0b01000000 //另一段 #define b 0b00100000 //另一段 #define c 0b01000000 #define d 0b10000000 #define e 0b00100000 #define f 0b00000100 #define g 0b00010000 #define none 0x00000000 #define LCD_MASK0 0xff
[单片机]
51单片机对LCD1602液晶驱动设计
51单片机——LCD1602 1、1602液晶读写时序 (1)、读状态 RS=L,R/W=H,E=H。(判断忙完毕后释放总线) (2)、读数据 RS=H,R/W=H,E=H。 (3)、写指令 RS=L,R/W=L,D0~D7=指令码,E=高脉冲 (4)、写数据 RS=H,R/W=L,D0~D7=数据,E=高脉冲 2、液晶显示驱动文件 #include #define LCD1602_DB P0 sbit LCD1602_RS = P1 ^ 0; sbit LCD1602_RW = P1 ^ 1; sbit LCD1602_E = P1 ^ 5; /* 等待液晶准
[单片机]
51单片机对LCD1602<font color='red'>液晶</font>的<font color='red'>驱动</font>设计
基于s3c2440的12864液晶驱动
12864是128*64点阵液晶模块的点阵数简称,业界约定俗成的简称。 一、液晶显示模块概述 12864A-1 汉字图形点阵液晶显示模块,可显示汉字及图形,内置 8192 个中文汉字(16X16 点阵,16*8=128,16*4=64,一行只能写 8 个汉字,4 行;、128 个字符(8X16 点阵)及 64X256 点阵显示 RAM(GDRAM))。 主要技术参数和显示特性: 电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128 列× 64 行(128 表示点数) 显示颜色:黄绿 显示角度:6:00 钟直视 LCD 类型:STN 与 MCU 接口:8 位或 4 位并行/3 位串行 配置 LED 背光
[单片机]
MSP430单片机串行四线驱动1602液晶程序
#include msp430g2553.h #define uchar unsigned char #define uint unsigned int #define RS_1 P1OUT|=BIT3;//输入数据 #define RS_0 P1OUT&=~BIT3;//输入指令 #define RW_1 P1OUT|=BIT4;//写入指令或者数据 #define RW_0 P1OUT&=~BIT4;//从lcd里面读取数据 #define EN_1 P1OUT|=BIT5;//读取信息 #define EN_0 P1OUT&=~BIT5;//下降沿时候执行指令 #define datt P2OUT; uchar temp=0
[单片机]
STM32 控制lcm液晶ILI9341驱动液晶驱动程序
/* 选择BANK1-BORSRAM1 连接 TFT,地址范围为0X60000000~0X63FFFFFF * FSMC_A16 接LCD的DC(寄存器/数据选择)脚 * 16 bit = FSMC 对应HADDR * 寄存器基地址 = 0X60000000 * RAM基地址 = 0X60020000 = 0X60000000+2^16*2 = 0X60000000 + 0X20000 = 0X60020000 * 当选择不同的地址线时,地址要重新计算。 */ //#define Bank1_LCD_D ((u32)0x60020000) //Disp Data ADDR //#define Bank1_LCD_C ((u3
[单片机]
针对中小尺寸液晶模组,圣邦微新推LED驱动SGM3136
   针对中小尺寸液晶模组背光LED驱动,圣邦微电子(SGMICRO)最新推出低压差模式的3信道白光驱动SGM3136,可以帮助客户简化产品背光设计,降低系统成本。    相较于市场上现有的同类产品,圣邦微SGM3136在性能上做了充分的改善,压差降低到20mA电流条件下约为35mV(TYP),可以完美支持3颗LED在较低的电池电压下( 3.5V)稳定工作,工作电压为2.5~5.0V,通道间电流匹配度误差小于3%,可以实现模组均匀亮度背光。支持单线脉冲调光,可以实现16级调光,关断模式下,静态电流小于5μA,可以充分满足各种便携产品的应用。     SGM3136是无公害无铅环保产品,温度范围达到扩展的工业标准–40°C
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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