使用51单片机驱动YM12232B型液晶显示屏

发布者:Asawen最新更新时间:2016-06-08 来源: eefocus关键字:51单片机  YM12232B型  液晶显示屏 手机看文章 扫描二维码
随时随地手机看文章
这是一个使用51单片机驱动YM12232B 液晶显示器的例子,本人水平有限,仅供参考。

本实例中将使用51单片机控制YM12232B LCD分别在主窗口和副窗口中显示”科“和”学“字。

YM12232B 一共有18个引脚,各个引脚的作用如下图所示:

使用51单片机驱动YM12232B型液晶显示屏
 

YM12232B 的显示屏格式如下所示,它分主窗口(左边窗口)和副窗口(右边窗口),每个窗口分为4页,每一页有64列。每次扫描一页时只需要将addr设置到0,然后输入64次数据就可以了(每输入一次,地址自动加1,直到64为止),并且扫描下一页时不要忘了将addr重新设置为0,否则它会一直是64,导致扫描出错。

使用51单片机驱动YM12232B型液晶显示屏
 

 

本次实例的原理图如下:

使用51单片机驱动YM12232B型液晶显示屏
 

本次实例的单片机代码(keil)如下:

 

#include 
#include 

#define uchar unsigned char
#define uint unsigned int
#define A0 P2_0
#define E1 P2_1
#define E2 P2_2
#define DATA P1

sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;

/*---------存放'科'字的数组-----------*/
uchar code ke[]={
0x00,0x60,0x30,0x1C,0xFE,0x03,0x00,0x00,0x90,0xA2,0xAC,0xA8,0xFF,0x80,0x80,0x80,
0x21,0x11,0x09,0x07,0xFF,0x03,0x05,0x09,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00
};


/*----------存放'学'字的数组----------*/
uchar code xue[]={
0x30,0x73,0x16,0x14,0x50,0x51,0x52,0x56,0x50,0xD4,0xD6,0x13,0x13,0x72,0x30,0x00,
0x00,0x04,0x04,0x04,0x04,0x44,0xC6,0xFF,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x00
};


/*---------------------------------------------------------
调用方式:void OutMI(uchar i)
函数说明:发指令i到主窗口(左半面)。
-----------------------------------------------------------*/
void OutMI(uchar i)
{ 
E1=1;_nop_();_nop_();
A0=0;_nop_();_nop_(); 
DATA=i;_nop_();_nop_();
E1=0;_nop_();_nop_();
}



/*-------------------------------------------------------------------------------- 
调用方式:void OutMD(uchar i) 
函数说明:发数据i到主窗口。 
---------------------------------------------------------------------------------*/
void OutMD(uchar i)
{ 
E1=1;_nop_();_nop_(); 
A0=1;_nop_();_nop_(); 
DATA=i;_nop_();_nop_(); 
E1=0;_nop_();_nop_(); 
}


/*-------------------------------------------------------------------------------- 
调用方式:void OutSI(uchar i) 
函数说明:发指令i到从窗口(右半面)
---------------------------------------------------------------------------------*/ 
void OutSI(uchar i)
{ 
A0=0;_nop_();_nop_(); 
E2=1;_nop_();_nop_(); 
DATA=i;_nop_();_nop_(); 
E2=0;_nop_();_nop_(); 
}



/*-------------------------------------------------------------------------------- 
调用方式:void OutSD(uchar i) 
函数说明:发数据i到从窗口。 
---------------------------------------------------------------------------------*/ 
void OutSD(uchar i) 
{ 
A0=1;_nop_();_nop_(); 
E2=1;_nop_();_nop_(); 
DATA=i;_nop_();_nop_(); 
E2=0;_nop_();_nop_(); 
}


/*-------------------------------------------------------------------------------- 
调用方式:void LcdIni(void) 
函数说明:12232点阵液晶初始化,开机后仅调用一次。 
---------------------------------------------------------------------------------*/ 
void LcdIni(void)
{ 
OutMI(0XE2);OutSI(0XE2);//复位 
OutMI(0XAE);OutSI(0XAE);//POWER SAVE 
OutMI(0XA4);OutSI(0XA4);//动态驱动 
OutMI(0XA9);OutSI(0XA9);//1/32占空比 
OutMI(0XA0);OutSI(0XA0);//时钟线输出 
OutMI(0XEE);OutSI(0XEE);//写模式 
OutMI(0X00);OutMI(0XC0); 
OutSI(0X00);OutSI(0XC0); 
OutMI(0XAF);OutSI(0XAF); 
}

/*-------------------------------------------------------------------------------- 
调用方式:void SetPage(uchar page_s,uchar page_m) 
函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用) 
---------------------------------------------------------------------------------*/ 
void SetPage(uchar page_s,uchar page_m) 
{ 
OutMI(0xB8|page_m);OutSI(0xB8|page_s); 
}


/*-------------------------------------------------------------------------------- 
调用方式:void SetAddress(uchar address_s,uchar address_m) 
函数说明:同时设置主从列地址为0-63。(内函数,私有,用户不直接调用) 
---------------------------------------------------------------------------------*/ 
void SetAddress(uchar address_s,uchar address_m) 
{ 
OutMI(address_m&0x7F);OutSI(address_s&0x7F); 
}


/*-------------------------------------------------------------------------------- 
调用方式:void PutChar0(uchar ch) 
函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用) 
---------------------------------------------------------------------------------*/ 
void PutChar0(uchar ch) 
{
OutSD(ch); 
} 


/*-------------------------------------------------------------------------------- 
调用方式:void PutChar1(uchar ch) 
函数说明:在右页当前地址画一个字节8个点。 
---------------------------------------------------------------------------------*/ 
void PutChar1(uchar ch) 
{ 
OutMD(ch); 
}



/*-------------------------------------------------------------------------------- 
调用方式:void clrscr(void) 
函数说明:清屏 
---------------------------------------------------------------------------------*/ 
void clrscr(void) 
{ 
uchar i; 
uchar page; 
for (page=0;page<4;page++) 
 { 
 SetPage(page,page); 
 SetAddress(0,0); 
 for (i=0;i<61;i++)
   {
   PutChar0(0);
   PutChar1(0);
   } 
  } 
}

/*------------------
长延时函数
-------------------*/
void delay(int i){
  int xx=0;
  int yy=0;
  for(xx=0;xx

运行效果图:

 

使用51单片机驱动YM12232B型液晶显示屏
 

注:本实例中生成汉字点阵需要使用如下软件:

http://download.csdn.net/detail/zgrjkflmkyc/5821757

 
关键字:51单片机  YM12232B型  液晶显示屏 引用地址:使用51单片机驱动YM12232B型液晶显示屏

上一篇:CP2102与C8051的USB-控制器局域网
下一篇:嵌入式学习笔记5——51单片机之步进电机

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

51单片机四大误区怎么破?
  51指MCS-51系列单片机, CICS 指令集。由Intel公司开发,其结构增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源,内有128个RAM单元及4K的ROM。其代表型号是ATMEL公司的A系列,它广泛应用于工业之中。目前国内的 51单片机 市场主要为国产的产品STC系列其号称,稳定与廉价的。下面就随嵌入式小编一起来了解一下相关内容吧。    学习 51单片机 的误区   误区1: 51单片机 是学习的基础   “51单片机是学习的基础”这句话本身并没有错。在我读本科的时候,当时它无疑是学习的基础——毕竟那时没有更高级的单片
[嵌入式]
基于51单片机的定时顺序控制器
求代码,作用是单片机控制继电器用于自动操作键盘。 要求: P01 导通三分钟,然后断开; P02 导通 10 秒后断开; P03 导通 0.5 秒后断开; P04 导通 0.2 秒后断开; P05 导通 0.5 秒后断开; P06 导通 0.2 秒后断开。 断开 P06 之后,循环所有。 单片机 89C52RC。 如下程序。 //-------------------------------------------------- #include #define uchar unsigned char #define uint unsigned int sbit P0_1 = P0^1; sbit P0_2 = P0^2; s
[单片机]
AT89C51单片机定时器应用设计
一、设计目的 1、学习并掌握定时器/计数器的工作原理; 2、学习并掌握定时器/计数器控制程序设计方法; 3、学习并掌握矩阵键盘工作原理与程序设计方法; 4、学习并掌握显示程序设计; 二、实验设备 1、计算机; 2、单片机开发板; 3、Keil C51编程软件; 4、Proteus仿真软件; 三、设计内容 1、功能 必须使用定时器完成以下功能。 功能1:4位数码管显示“分钟.秒” 功能2:K1设置键、K2加1键、K2减1键 (1)正常情况:显示“分钟.秒” (2)按下K1:第一次按下调整分钟状态、第二次按下调整秒状态、第三次按下正常显示状态 (3)按下K2:分钟或秒加1 (4)按下K3:分钟或秒减1 选做功能:闹钟功能(请先完成
[单片机]
AT89C<font color='red'>51单片机</font>定时器应用设计
8051单片机实战分析(以STC89C52RC为例) | 08 - 矩阵按键驱动
1 矩阵键盘 矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。 最常见的键盘布局如图所示。一般由16个按键组成,在单片机中正好可以用一个P1实现16个按键功能,这也是在单片机系统中最常用的形式。 4*4矩阵键盘的电路如图所示: 工作原理: 当无按键闭合时,P10~P13与P14~P17之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。 判断有无按键按下的方法是: ① 设置列线P10~P13为输入状态,从行线P14~P17输出低电平
[单片机]
80<font color='red'>51单片机</font>实战分析(以STC89C52RC为例) | 08 - 矩阵按键驱动
基于GPRS的51单片机固件升级系统设计
引言 嵌入式技术的迅速发展使得越来越多的嵌入式终端设备应用在人们的日常生活中,其中不乏应用在一些偏远地方,甚至工作在无人看管的场合下。人口比较稀少的地方,由于基站分布比较分散,加之人口比较稀疏,基站维护等操作常难以执行,这就需要在某些地方放置网络信号测试仪检测该地区的通信信号质量,并将该信息反馈到远程服务器。同时,由于硬件系统程序设计固有的局限性,固件程序的升级在所难免。针对实际情况,本文开发了网络信号测试仪的单片机远程升级系统。 1 系统硬件设计 整个系统以Silicon Labs公司推出的混合信号片上系统型单片机C8051F340作为核心控制单元,采用GSM/GPRS/EDGE无线模块MC75作为与远程服务器的通信模
[单片机]
基于GPRS的<font color='red'>51单片机</font>固件升级系统设计
51单片机 8x8LED点阵屏循环显示数字0~9
使用的是普中科技的开发板,一个点阵显示模块是由8x8共64个LED按照共阴或共阳的连接方式组成。 每行的8个LED的负极连接一起,构成8根行线,每列的8个LED的正极连接一起,构成8根列线,就是共阴极接法。 每行的8个LED的正极连接一起,构成8根行线,每列的8个LED的负极连接一起,构成8根列线,就是共阳极接法。 若要点亮8x8点阵屏给每个LED连接到IO口是不够的,所以要使用到74Hc595芯片,只需要连接到AT89C52芯片上3个IO口即可点亮8x8LED点阵屏。 代码 循环数字0~9 #include reg51.h #include intrins.h typedef unsigned char
[单片机]
51单片机串口通信(UART)
项目描述: 1.串口工作方式为1(8位UART,波特率可变),无校验位; 2.通信数据格式为:1位起始位 + 8位数据位 + 1位停止位; 3.上电后MCU给上位机发送问候语,之后等待上位机的信息;MCU和上位机的通信为收发交替进行。MCU接收到的信息会实时的显示在LCD上。上位机接收到的信息会在串口助手上显示。 C语言程序如下: /*----------------------- FileName: UART.h Function: 头文件 Author: Zhang Kaizhou Date: 2019-6-10 11:33:35 ------------------------*/ #include reg52.h
[单片机]
<font color='red'>51单片机</font>串口通信(UART)
51单片机晶振与波特率的关系
在串行通信中,MCS 51串口可约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。 波特率是指串行端口每秒内可以传输的波特位数。这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输,那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600 10=960字节。 一、方式0和方式2的波特率 方式0的波特率是固定的,为fosc/12,以一个12M 的晶振来计算,那么它的波特率可以达到1M。 方式2的波特率是固定在f
[单片机]
<font color='red'>51单片机</font>晶振与波特率的关系
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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