先贴上程序,后面再分析。
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar code line1[] = {"welcome!"};
uchar p[]= //自定义字模数组
{
0x00,0x0f,0x04,0x0f,0x05,0x07,0x00,0x00,
0x0f,0x12,0x1f,0x15,0x1f,0x15,0x1f,0x15, //确
0x04,0x02,0x0e,0x02,0x02,0x03,0x02,0x00,
0x04,0x04,0x04,0x04,0x04,0x0a,0x11,0x00, //认
0x00,0x0f,0x09,0x06,0x06,0x06,0x09,0x00,
0x1f,0x0a,0x0e,0x0e,0x0a,0x1f,0x02,0x02 //取
};
sbit E=P2^7;
sbit RW=P2^5;
sbit RS=P2^6;
busying ()
{
bit result;
RS = 0;
RW = 1;
E = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0&0x80);
E = 0;
return result;
}
writeorder (uchar cmd)
{
while (busying());
RS = 0;
RW = 0;
E = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
E = 1;
_nop_();
_nop_();
_nop_();
_nop_();
E = 0;
}
writedata (uchar dat)
{
while (busying());
RS = 1;
RW = 0;
E = 0;
_nop_();
_nop_();
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
E = 1;
_nop_();
_nop_();
_nop_();
_nop_();
E = 0;
}
delay(uchar i)
{
while(i--)
{
uchar j=250;
while(j--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
initial ()
{
delay (150);
writeorder (0x38); //工作方式:8位、2行、5x7
delay(5);
writeorder (0x06); //输入方式:光标右移、屏幕不动
delay(5);
writeorder (0x0c); //显示状态:显示开、有光标、不闪烁
delay(5);
writeorder (0x01); //清屏
delay(5);
}
newbyte (void) //设置自定义字符
{
uchar i,j,k=0;
uchar temp=0x40;
for(j=0;j<6;j++)
{
for(i=0;i<8;i++)
{
writeorder(temp+i);
writedata(p[k]);
k++;
}
temp += 8;
}
}
main (void)
{
uchar i=0;
initial ();
newbyte ();
writeorder (0x85); //设置第一行显示位置
writedata (0x00);
writedata (0x01);
writedata (0x02);
writedata (0x03);
writedata (0x04);
writedata (0x05);
writeorder (0xc4); //设置第二行显示位置
while(line1[i] != '\0')
{ // 显示字符"welcome!"
writedata(line1[i]);
i++;
}
while (1);
}
如果之前没有接触过1602,这里有资料,可以免注册免费下载:
http://wdpvip.qupan.com/6311643.html
http://wdpvip.qupan.com/6311649.html
程序中函数名定义的都很清楚了,不清楚的后面都有注释,补充两点:
1、数组uchar p[]和函数newbyte ()是为了自定义汉字的,可以删除掉。
2、1602共有两行,第一行显示从0x80开始,第二行从0xc0开始
举例说明,想在第一行第二个光标处显示,地址就是:0x81;想在第二行第三个光标处显示,地址就是:0xc2.
上一篇:便携式低频幅频特性测试仪的研制
下一篇:单片机模拟I2C总线控制EEPROM读写程序
推荐阅读最新更新时间:2024-03-16 15:04
设计资源 培训 开发板 精华推荐
- 格科成功量产多光谱CIS解决方案
- Bourns 全新推出 11 款 Riedon™ 功率电阻产品系列
- Akamai 将微分段拓展至 Amazon Web Services 并增强 ZTNA,助力实现最佳应用程序性能
- 博世中国回应全球裁员:此次裁员不涉及中国区
- 英飞凌推出业界首款用于太空应用的QML认证512 Mbit抗辐射加固设计NOR闪存
- AI计算时代,为什么Arm独具优势?
- 美国能源部拟向 Rivian 提供 66 亿美元贷款,支持电动汽车扩产
- 国产射频芯片大厂慧智微否认大规模裁员:系小范围组织调整
- Handtmann推出容量高达1.3 MWh的电池系统 可用于重型车辆等
- 全固态电池,日系车的新希望?
- 跟帖留言赢好礼:60年回眸——聊一聊示波器的前世今生!
- 看视频瓜分红包:面向高效高密度开关电源的先进功率 MOSFET 技术及应用
- LYTSwitch-1 LED驱动器 天生小体积,应用高效率,围观有好礼!
- ADI 连续无创式血压解决方案
- 有奖直播:市场环境不确定,为物联网设备保驾护航英飞凌很确定
- 免费申请 | Nordic Semiconductor nPM1300-EK PMIC 评估套件
- 村田RFID知识有奖问答 双重好礼等你来挑战
- 瑞萨电子MCU全国技术研讨会开放报名!覆盖上海、南京、杭州、合肥等10大城市!
- 直播|基于英特尔® Agilex™ FPGA的PCIe Gen5和CXL解决方案
- 高达270MHz!恩智浦LPC3000系列全套资料