单片机控制12232单片机液晶显示实验的几种C语言源程序

21ic官方微信-->
proteus LCD12232操作仿真??
资深技术员, 积分 328, 距离下一级还需 172 积分
资深技术员, 积分 328, 距离下一级还需 172 积分
资深技术员, 积分 328, 距离下一级还需 172 积分
资深技术员, 积分 328, 距离下一级还需 172 积分
我用proteus仿真液晶12232操作,但是安装的软件版本里没找到12232,请问用什么可以代替12232?主要是串口的使用, 感谢!
高级技术员, 积分 956, 距离下一级还需 44 积分
高级技术员, 积分 956, 距离下一级还需 44 积分
高级技术员, 积分 956, 距离下一级还需 44 积分
高级技术员, 积分 956, 距离下一级还需 44 积分
128*64都行
高级工程师, 积分 7792, 距离下一级还需 208 积分
高级工程师, 积分 7792, 距离下一级还需 208 积分
高级工程师, 积分 7792, 距离下一级还需 208 积分
高级工程师, 积分 7792, 距离下一级还需 208 积分
可以找个高级版本的。
扫描二维码,随时随地手机跟帖
晶莹之水滴
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
甘甜之泉水
发帖类勋章
时间类勋章
希望之星奖章
等级类勋章
无冕之王奖章
等级类勋章
奔腾之江水
发帖类勋章
时间类勋章
您需要登录后才可以回帖
热门推荐 /4查看: 1979|回复: 0
12232液晶屏串行51单片机驱动程序
MS12232F.c文件:
#include &reg52.h&
#include &string.h&
#include &MS12232F.h&
void delay_MS12232F (unsigned int us)& &//delay time
&&while(us--);
/*----初始化-----*/
void init_lcd (void)
&&wr_lcd (comm,0x30);&&/*30---基本指令动作*/& &
&&wr_lcd (comm,0x01);&&/*清屏,地址指针指向00H*/
&&delay_MS12232F (100);
&&wr_lcd (comm,0x06);&&/*光标的移动方向*/
&&wr_lcd (comm,0x0c);&&/*开显示,关游标*/
/*-----------写指令或者写数据-----------*/
void wr_lcd (unsigned char dat_comm,unsigned char content)
&&unsigned char a,i,j;
&&delay_MS12232F (50);
&&for(i=0;i&5;i++)
& & sclk=1;
& & sclk=0;
&&if(dat_comm)
& & std=1;& &//data
& & std=0;& &//command
&&for(j=0;j&2;j++)
& & for(i=0;i&4;i++)
& && &a=a&&1;
& && &std=CY;
& && &sclk=1;
& && &sclk=0;
& & std=0;
& & for(i=0;i&4;i++)
& && &sclk=1;
& && &sclk=0;
/*---清DDRAM----*/
void clrram (void)
&&wr_lcd (comm,0x30);
&&wr_lcd (comm,0x01);
&&delay_MS12232F (180);
/*---上下半屏顺序显示汉字或字符----*/
void chn_disp(unsigned char code *chn)
&&unsigned char i,j;
&&wr_lcd (comm,0x30);&&/*30---基本指令动作*/
&&wr_lcd (comm,0x80);&&//把显示地址设为0X80,即为第一行的首位--第一页
&&for (i=0;i&16;i++)
&&wr_lcd (dat,chn[j*16+i]);
&&wr_lcd (comm,0x90);& && &&&//把显示地址设为0X90,即为第二行的首位--第二页
&&for (i=0;i&16;i++)
&&wr_lcd (dat,chn[j*16+i]);
//----上半屏显示汉字或字符
void chn_dispup (unsigned char code *chn)
&&unsigned char i,L
&&Length=strlen(chn);
&&wr_lcd (comm,0x30);&&//30---基本指令动作
&&wr_lcd (comm,0x80);&&//把显示地址设为0X80,即为第一行的首位--第一页
&&for (i=0;i&Li++)
&&wr_lcd (dat,chn[i]);
void Show_Paska(unsigned char Number) //显示压力值
&&unsigned char tem1,tem2;
&&tem1=Number/10;
&&tem2=Number%10;
&&if(10&=Number)
& & wr_lcd (dat,0x30+tem1);
& & wr_lcd (dat,0x30+tem2);
& & wr_lcd (dat,0x30+tem2);
//----下半屏显示汉字或字符
void chn_dispdown (unsigned char code *chn)
&&unsigned char i,L
&&Length=strlen(chn);
&&wr_lcd (comm,0x30);& && &&&//30---基本指令动作
&&wr_lcd (comm,0x90);& && &&&//把显示地址设为0X90,即为第二行的首位--第二页
&&for (i=0;i&Li++)
&&wr_lcd (dat,chn[i]);
/*--------上半屏清屏---------*/
void Clear_up(void)
&&wr_lcd (comm,0x30);&&/*30---基本指令动作*/
&&wr_lcd (comm,0x80);&&//把显示地址设为0X80,即为第一行的首位--第一页
&&for (i=0;i&16;i++)
&&wr_lcd (dat,0x20);
/*--------下半屏清屏---------*/
void Clear_down(void)
&&wr_lcd (comm,0x30);&&/*30---基本指令动作*/
&&wr_lcd (comm,0x90);& && &&&//把显示地址设为0X90,即为第二行的首位--第二页
&&for (i=0;i&16;i++)
&&wr_lcd (dat,0x20);
MS12232F.h文件:
#ifndef& &_MS12232F_h_
#define& &_MS12232F_h_
#define x1& & 0x80
#define x2& & 0x88
#define y& &&&0x80
#define comm&&0
#define dat& &1
sbit cs& &= P1^3;
sbit std&&= P1^1;
sbit sclk = P1^0;
void delay_MS12232F (unsigned int us);& &//delay time
void init_lcd (void);/*----初始化-----*/
void wr_lcd (unsigned char dat_comm,unsigned char content);/*---写指令或者写数据---*/
void clrram (void);/*---清DDRAM----*/
void chn_disp(unsigned char code *chn);/*---上下半屏顺序显示汉字或字符----*/
void chn_dispup (unsigned char code *chn);//----上半屏显示汉字或字符
void Show_Paska(unsigned char Number);//显示压力值
void chn_dispdown (unsigned char code *chn);//----下半屏显示汉字或字符
void Clear_up(void);/*--------上半屏清屏---------*/
void Clear_down(void);/*--------下半屏清屏---------*/
Powered by察看12232液晶的详细技术资料![51单片机学习网]
&位置:&&&&&&&&& >> 正文
&&&&&&&&&&&&
察看12232液晶的详细技术资料!
察看12232液晶的详细技术资料!
作者:&&&&
来源:&&&&
点击数:&&&&
更新时间:&&&&
文章录入:
OCM12232系列点阵型液晶显示模块 使用说明书 & 一、液晶驱动IC基本特性 <FONT color=#、具有低功耗、供应电压范围宽等特点。 <FONT color=#、具有16common和61segment输出,并可外接驱动IC扩展驱动。 <FONT color=#、具有2560位显示RAM(DD RAM),即80×8×4位 <FONT color=#、具有与68系列或80系列相适配的MPU接口功能,并有专用的指令集,可完成文本显示或 && 图形显示的功能设置 二、模块基本特性 视域尺寸:,60.5×18.0mm(),54.8×18.3mm(12232-3) 显示类型:黄底黑字 LCD显示角度:6点钟直观 驱动方式:1/32 duty,1/6 bias 连接方式:导电胶条,铁框 ● 补充说明:模块外观尺寸可根据用户的要求进行适度调整。 三、工作参数 <FONT color=#、逻辑工作电压(VDD-VSS):2.4~6<FONT color=#V <FONT color=#、LCD驱动电压(Vdd-Vlcd):3.0~13.5V <FONT color=#、工作温度(Ta):0~55℃(常温) / -20~70℃(宽温) <FONT color=#、保存温度(Tstg):-10~70℃ 四、电气特性(测试条件 Ta=25,Vdd=5.0±0.25V) &<FONT color=#、输入高电平(Vih):3.5Vmin &<FONT color=#、输入低电平(Vil):0.55Vmax &<FONT color=#、输出高电平(Voh):3.75Vmin &<FONT color=#、输出低电平(Vol):1.0Vmax &<FONT color=#、工作电流:2.0mAmax 五、接口说明 PCB板引脚号 <FONT color=#32/1 <FONT color=#32/2 <FONT color=#32/3 <FONT color=# VDD VSS 同12232-1引脚 <FONT color=# GND VDD <FONT color=# VLCD <FONT color=# <FONT color=# RET <FONT color=# <FONT color=# CS1 CS1 <FONT color=# CS2 CS2 <FONT color=# R/W CL(外振时钟) <FONT color=# <FONT color=# /RD <FONT color=# <FONT color=# /WR <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# 同12232-1引脚 <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# 背光 <FONT color=# <FONT color=# 背光 RES <FONT color=# & 背光 <FONT color=# & 背光 & 管脚说明: l&&&&&&&& VDD:逻辑电源正 l&&&&&&&& GND(VSS): 逻辑电源地 l&&&&&&&& VLCD(VEE,V0):LCD驱动电源 l&&&&&&&& RET:复位端,对于68系列MPU:上升沿(L-H)复位,且复位后电平须保持为高电平(H); &&&&&&&&&&&&&&& 对于80系列MPU:下降沿(H-L)复位,且复位后电平须保持为低电平(L)。 l&&&&&&&& CS1:读写使能。对于68系列MPU,连接使能信号引脚,高电平有效; &&&&&&&&&&&&&&&&& 对于80系列MPU,连接/RD引脚,低电平有效。 l&&&&&&&& CS2:同E1引脚。 l&&&&&&&& /RD:读允许,低电平有效。 l&&&&&&&& /WR:写允许,低电平有效。 l&&&&&&&& R/W:读写选择,对于68系列MPU,高电平时读数据,低电平时写数据; &&&&&&&&&&&&&&&&&& 对于80系列MPU,低电平时允许数据传输,上升沿时锁定数据。 l&&&&&&&& <FONT color=#:数据/指令选择。高电平:数据D0-D7将送入显示RAM; &&&&&&&&&&&&&&&&&&&&&& 低电平:数据D0-D7将送入指令执行器执行。 l&&&&&&&& <FONT color=#-D7:数据输入输出引脚。 六、指令描述 <FONT color=#、&& 显示模式设置 &&&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD  /WR&&& D7&&&&&& D6&&&&&& D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H L H L H H H D 功能:开/关屏幕显示,不改变显示RAM(DD RAM)中的内容,也不影响内部状态。D=0,开显示;D=1,关显示。如果在显示关闭的状态下选择静态驱动模式,那么内部电路将处于安全模式。 & <FONT color=#、&& 设置显示起始行 &&&&&&&&&&&&&&&&&&&& R/W CODE: &&A0 & /RD& /WR&&& D7&&&& &&D6&&&& &&D5&&&&& &D4&&&&& &D3&&&&& &D2&&&&&& D1&&&&&& D0 L H L H H L <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# 功能:执行该命令后,所设置的行将显示在屏幕的第一行。起始地址可以是0-31范围内任意一行。行地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。 & <FONT color=#、&& 页地址设置 &&&&&&&&&&& &&&&&&&&&R/W CODE: &A0 & /RD /WR&&&& D7&&&&&& D6&&&& &&&D5&&&&&& &D4&&&& &D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H L H H H L <FONT color=# <FONT color=# 功能:设置页地址。当MPU要对DD RAM进行读写操作时,首先要设置页地址和列地址。本指令不影响显示。 <FONT color=# <FONT color=# 页地址 <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# & <FONT color=#、&& 列地址设置 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&&& D7&&&&&& D6&& &&&&&D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&& &&D0 L H L L <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# 功能:设置DD RAM中的列地址。当MPU要对DD RAM进行读写操作前,首先要设置页地址和列地址。执行读写命令后,列地址会自动加1,直到达到50H才会停止,但页地址不变。 <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# 列地址 <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# & <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=#E <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=# <FONT color=#F & <FONT color=#、&& 读状态指令 &&&&&&&&&&&&&&&&&&& R/W CODE: &A0&& /RD&& /WR&&&& D7&&&&&& &D6&&&&&& &&&&D5&&& &&&&&&&&D4&&& &&&&D3&&&& D2&&& &&D1&&& D0 L L H BUSY ADC OM/OFF RESET L L L L 功能:检测内部状态。 &&&&& BUSY为忙信号位,BUSY =1:内部正在执行操作;BUSY =0:空闲状态。 &&&&& ADC为显示方向位,ADC=0:反向显示;ADC=1:正向显示。 &&&&& ON/OFF显示开关状态,ON/OFF=0:显示打开,ON/OFF=1:显示关闭。 RESET复位状态,RESET=0:正常,RESET=1:内部正处于复位初始化状态。 & <FONT color=#、&& 写显示数据 &&&&&&&&&&&&&&&&&&& R/W &CODE: &A0 /RD  /WR&&& &&D7&& &&&&&D6&& &&&&&&&D5&& &&&&&&&D4&& &&&&&&D3&&&&& D2&&&& D1&&&& D0 H H L Write& Data & 功能:将8位数据写入DD RAM,该指令执行后,列地址自动加1,所以可以连续将数据写入DD RAM而不用重新设置列地址。 & <FONT color=#、&& 读显示数据 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&&& D7&&&&&& D6&&&&&& D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 H L H Read& Data 功能:读出页地址和列地址限定的DD RAM地址内的数据。当“读-修改-写模式”关闭时,每执行一次读指令,列地址自动加1,所以可以连续从DD RAM读出数据而不用设置列地址。 注意:再设置完列地址后,首次读显示数据前必须执行一次空的“读显示数据”。这是因为设置完列地址后,第一次读数据时,出现在数据总线上的数据是列地址而不是所要读出的数据。 & <FONT color=#、&& 设置显示方向 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&& &&D7&&&&&& D6&&&&&& D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H L H L L L L D 功能:该指令设置DD RAM中的列地址与段驱动输出的对应关系 显示当设置D=0时,反向;D=1时,正向。 & <FONT color=#、&& 开/关静态驱动模式设置 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&&& D7&&&&&& D6&&&&&& D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H L H L L H L D 功能:D=0表示关闭静态显示,D=1表示打开静态显示。 &&&&& 如果在打开静态显示时,执行关闭显示指令,内部电路将被置为安全模式。 & <FONT color=#、DUTY选择 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&&& D7&&&&&& D6&&&&&& &D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H L H L H L L D 功能:设置D=0&& 表示1/16DUTY,D=1表示1/32DUTY。 & <FONT color=#、“读-修改-写”模式设置 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&&& D7&&&&&& D6&&&&&& D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H H H L L L L L 功能:执行该指令以后,每执行一次写数据指令列地址自动加1;但执行读数据指令时列地址不会改变。这个状态一直持续到执行“END”指令。 注意:在“读-修改-写”模式下,除列地址设置指令之外,其他指令照常执行。 & <FONT color=#、END指令 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&&& D7&&&&&& D6&&&&&& D5&&&&&& &D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H H H L H H H L 功能:关闭“读-修改-写”模式,并把列地址指针恢复到打开“读-修改-写”模式前的位置。 & <FONT color=#、复位指令 &&&&&&&&&&&&&&&&&&&& R/W CODE: &A0 & /RD /WR&&&& D7& &&&&&&D6&&&&&& D5&&&&&& D4&&&&&& D3&&&&&& D2&&&&&& D1&&&&&& D0 L H L H H H L L L H L 功能:使模块内部初始化。 &&&&& 初始化内容:① 设置显示初始行为第一行; &&&&&&&&&&&&&&&&& ②页地址设置为第三页。 复位指令对显示RAM没有影响。 & <FONT color=#、设置安全模式 通过关闭显示并打开静态显示的方法,可以设置安全模式,以减小功耗。 安全模式下的内部状态: l&&&&&&&& 停止LCD驱动。Segment和Common输出VDD电平。 l&&&&&&&& 停止晶体震荡并禁止外部时钟输入,晶振输入OSC2引脚处于不确定状态。 l&&&&&&&& 显示数据和内部模式不变。 可通过打开显示或关闭静态显示的方法关闭安全模式。 & 七、接口时序 ⒈ 与68系列MPU接口读写操作时序图 500)this.style.width=500;" onclick="javascript:window.open(this.src)">& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 时序1 时序参数表(VDD=5.0±10%,VSS=0V,Ta=-20~+75℃) & 名称 符号 最小值 最大值 单位 地址建立时间 Taw6 <FONT color=# & ns 地址保持时间 Tah6 <FONT color=# & ns 系统时钟周期 Tcycs <FONT color=#0 & ns E脉冲宽度 读 Tew <FONT color=# & ns 写 <FONT color=# & ns 数据建立时间 Tds6 <FONT color=# & ns 写数据保持时间 Tdh6 <FONT color=# & ns 存取时间 Tacc6 & <FONT color=# ns 读数据保持时间 Tch6 <FONT color=# <FONT color=# ns & ⒉ 与80系列MPU接口读写操作时序图  & 500)this.style.width=500;" onclick="javascript:window.open(this.src)">时序2 时序参数表(VDD=5.0±10%,VSS=0V,Ta=-20~+70℃) 名称 符号 最小值 最大值 单位 地址建立时间 Taw8 <FONT color=# & ns 地址保持时间 Tah8 <FONT color=# & ns /RW,/WR周期 Tcyc8 <FONT color=#0 & ns /RW,/WR脉冲宽度 Tcc <FONT color=# & ns 数据建立时间 Tds8 <FONT color=# & ns 写数据保持时间 Tdh8 <FONT color=# & ns 读存取时间 Tacc8 & <FONT color=# ns 读数据保持时间 Tch8 <FONT color=# <FONT color=# ns 八、显示数据存储器(DDRAM)与地址的对应关系 500)this.style.width=500;" onclick="javascript:window.open(this.src)">&&&&&&& (显示设定为 1/32 DUTY,显示起始行为10th) 九、应用举例 <FONT color=#、&& 模块接口与8031测架连接表(以OCM12232-1模块为例): & 模块引脚 符号 <FONT color=#1引脚 <FONT color=# Vlcd 与GND间接一可调电阻 <FONT color=# RET Vcc <FONT color=# CS1 TXD <FONT color=# CS2 RXD <FONT color=# R/W GND <FONT color=# <FONT color=# INT1 <FONT color=#~16 <FONT color=#~D7 <FONT color=#口 <FONT color=#、简单的测试程序(模拟68MPU接口时序) ;********给主IC发送控制指令子程序**********S_INS1:SETB&&& TXD&&& CLR&&&& INT1&&& MOV&&&& P1,A&&& CLR&&&& TXD&&& LCALL&& DELAY&&& RET;********给主IC发送显示数据子程序**********S_DAT1:SETB&&& TXD&&& SETB&&& INT1&&& MOV&&&& P1,A&&& CLR&&&& TXD&&& LCALL&& DELAY&&& RET;********给辅IC发送控制指令子程序**********S_INS2:SETB&&& RXD&&& CLR&&&& INT1&&& MOV&&&& P1,A&&& CLR&&&& RXD&&& LCALL&& DELAY&&& RET;********给辅IC发送显示数据子程序**********S_DAT2:SETB&&& RXD&&& SETB& &&INT1&&& MOV&&&& P1,A&&& CLR&&&& RXD&&& LCALL&& DELAY&&& RET;********显示错位点程序**********&&& MOV&&&& R3,&&&& #55H&&& MOV&&&& R4,&&&& #0AAHLDOT:& MOV&&&& R2,#0B8HLDOT1: MOV&&&& A,R2&&&&&&&& ;页地址设置,0页&&& LCALL&& S_INS1&&& LCALL&& S_INS2&&& MOV&&&& A,#00H&&&&& &&&&&&& ;列地址设置,0列&&& LCALL&& S_INS1&&& LCALL&& S_INS2&&& MOV&&&& R1,#1EH &&&&&&& ;发送显示数据&LDOT2: MOV&&&& A,&&&&& R3&&& LCALL&& S_DAT1&&& LCALL&& S_DAT2&&& MOV&&&& A,&&&&& R4&&& LCALL&& S_DAT1&&& LCALL&& S_DAT2&&& DJNZ&&& R1,&&&& LDOT2&&& MOV&&&& A,&&&&& R3&&& LCALL&& S_DAT1&&& LCALL&& S_DAT2&&& INC&&&& R2&&& CJNE&& &R2,#0BCH,LDOT1&&& LCALL&& DEALY&&& RET 
上一篇文章:
下一篇文章:
&最新5篇热点文章
&最新5篇推荐文章
&相 关 文 章
&&网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)使用51单片机驱动YM12232B型液晶显示屏
这是一个使用 驱动YM12232B 液晶显示器的例子,本人水平有限,仅供参考。
本实例中将使用51控制YM12232B LCD分别在主窗口和副窗口中显示”科“和”学“字。
YM12232B 一共有18个引脚,各个引脚的作用如下图所示:
YM12232B 的显示屏格式如下所示,它分主窗口(左边窗口)和副窗口(右边窗口),每个窗口分为4页,每一页有64列。每次扫描一页时只需要将addr设置到0,然后输入64次数据就可以了(每输入一次,地址自动加1,直到64为止),并且扫描下一页时不要忘了将addr重新设置为0,否则它会一直是64,导致扫描出错。
本次实例的原理图如下:
本次实例的单片机代码()如下:
#include &reg51.h& #include &intrins.h& #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 clr (void) 函数说明:清屏 ---------------------------------------------------------------------------------*/ void clrscr(void) { 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&i;xx++){ for(yy=0;yy&i;yy++); } } /*------------------- 在主窗口(左边窗口)显示'科'字 ---------------------*/ void show_ke(void){ int page=0; int col=0; for(page=0;page&4;page++){ SetAddress(0,0); if(page==0 || page==2){ for(col=0;col&64;col++){ SetPage(0,page); OutMD(ke[col%16]); } }else{ for(col=0;col&64;col++){ SetPage(0,page); OutMD(ke[col%16+16]); } } } } /*------------------- 在从窗口(右边窗口)显示'学'字 ---------------------*/ void show_xue(void){ int page=0; int col=0; for(page=0;page&4;page++){ SetAddress(0,0); if(page==0 || page==2){ for(col=0;col&64;col++){ SetPage(page,0); OutSD(xue[col%16]); } }else{ for(col=0;col&64;col++){ SetPage(page,0); OutSD(xue[col%16+16]); } } } } /*---------------------------- 主函数 -----------------------------*/ void main(){ int mm=0; LcdIni(); while(1){ show_ke(); show_xue(); delay(450); clrscr(); delay(450); } }
运行效果图:
注:本实例中生成汉字点阵需要使用如下软件:
http://download.csdn.net/detail/zgrjkflmkyc/5821757
原文链接:
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点

我要回帖

更多关于 单片机液晶显示 的文章

 

随机推荐