要实现对16x2点阵字符液晶模块的高效控制,必须按照模块设计方式,建立起相关的子程序,下面先详细介绍驱动16x2点阵字符液晶模块的各功能子程序。
1.写命令到lcm子函数
voidlcdwritecommand(uchar cmd,uchar attribc)
/*函数名为writecommandlcm的写指令到lcm子函数。
定义cmd、attribc 为无符号字符型变量。*/
{
if(attribc)waitforenable();
/*若arrribc为“真”,则调用waitforenable子函数进行忙检测*/
lcm_rs_0;lcm_rw_0;_nop0;
/*选中指令寄存器,写模式*/
dataport=cmd;_nop();
/*将变量wclcm中的指令传送至数据口
lcm_en_1;_nop0;_nop();lcm_en_o:
/*lcm_en端产生脉冲下降沿。*/
}
/*writecommandlcm 子函数结束。*/
2,写数据到lcm子函数
void lcdwritedata(dchar dataw)
/*函数名为writedatalcm的写数据到lcm子函数。定义
dataw 为无符号字符型变量。*/
{
/*writedatalcm子函数开始。*/
waitforenable(); */
lcm_rs_1;lcm_rw_0;_nop0;
/*选中数据寄存器,写模式。*/
dataport=dataw;_nop();
/*将变量dataqw中数据传送至数据口。*/
lcm_en_1;_nop();_nop0;lcm_en_o:
/*lcm_en端产生脉冲下降沿。writedatalcm子函数
结束*/
3.检测lcd忙信号子函数
void waitforenable(void)
/*函数名为waitforenable的检测忙信号子程序子函数。
/*waitforenable子函数开始。*/
uchar val;
/*定义局部变量val。*/
dataport=oxff;
/*置数据口为全1。*/
lcm_rs_0;lcm_rw_1;_nop();
/*选中指令寄存器,读模式。*/
lcm_en_1;_nop();_nop();
/*置lcm_en端为高电平,读使能。*/
ddra=0x00;
/*数据口置为输入*/
val=pina:
/*读取数据*/
while(val&busy)val=pina:
/*检测忙信号。当数据口内容与0x80相与后不为零时,
程序原地踏步继续读取数据并检测忙信号。*/
lcm_en_o:
/*置lcm_en端为低电平。*/
ddra=0xff;
/*数据口置为输出*/
}
/*waitforenable子函数结束。*/
4.显示光标定位子函数
voidlocatexy(char posx.char posy)
/*显示光标定位子函数,函数名为locarexy,定义posx,
posxxy为字符型变量。*/
{
/*locatexy子函数开始。*/
uchar temp;
/*定义temp为无符号字符型变量。*/
temp&=0x7f;
/*temp的变化范围0-15。*/
temp=posx&0xof;
/*屏蔽高4位。*/
posy&=0x01;
/*posy的变化范围0-1。*/
if(posy)tempㄧ=0x40;
/*若posy为1(显示第二行),地址码+0x40*/
tempㄧ=0x80;
/*指令码为地址码+0x80。*/
writecommandlcm(temp,0);
/*将指令temp写入lcm,忽略忙信号检测。*/
}
/*locatexy子函数结束。*/
5.显示指定座标的一个字符(x=0~15,y=0~1)子函数
void displayonechar(uchar x,uchar y,uchar wdata)
/*显示指定座标的一个字符(x=0-15.y=0-1)子函数,函
数名为disponechar,定义x、y、wdata为无符号字符型变量。
*/
{
/*disponechar函数开始*/
locatexy(x,y):
/*调用locatexy函数定位显示地址。*/
writedatalcm(wdata);
/*将数据wdata写入lcm。*/
}
/*disponechar函数结束。*/
6.演示第二行移动字符串子函数
void display(uchar dd)
/*演示第二行移动字符串子函数,函数名为dispiay,定义
dd为无符号字符型变量。*/
{
/*display子函数开始。*/
uchari:
/*定义;为无符号字符型变量。*/
家电品牌纷纷投入年轻化转型的战局,冲破100亿大关上演年轻家电的第1增速
蔡司工业CT检测铸件缺陷
华为技术有限公司获得一种电子设备的专利
光学测距传感器的激光测厚仪在复合钢板中的应用
WWDC上苹果有可能为我们带来什么重量级的新品呢?
16x2点阵字符液晶模块设计实现
苹果手机有投屏软件吗
西门子伺服电机维修如何进行调试?
如何降低功耗FPGA功耗的设计技巧
融金所存管系统正式上线 用户资金安全再升级
Ultimaker发布3D打印技术信心指数报告
Intel白皮书:UWB技术实现高速无线个人局域网
AES中的字节替换的FPGA实现
SpaceX猎鹰9号火箭发射自动中止任务失败
iPhone XR疯狂降价,发布快一年了现在上车算不算晚呢?
高毛利诱人,国内外厂商争相布局UV LED
5G时代欠“深度” 行业应用才是真正“起跑”
针对SerDes的电感线圈怎么设计?ESD有什么特殊要求?
台积电日本子公司JASM未来10年拟采购日本供应商60%材料
重庆传感器及仪器仪表产业定下发展目标:2027年产值挑战500亿元