历史上的今天
今天是:2024年12月29日(星期日)
2020年12月29日 | 单片机+LCD1602显示℃ 这种自定义符号
2020-12-29 来源:51hei
#include "all.h"
u8 xdata LCD1602_Write_Buffer1[16];
u8 xdata LCD1602_Write_Buffer2[16];
u8 code LCD1602_5x8[8]={0x08,0x00,0x07,0x08,0x08,0x08,0x08,0x07};
u8 xdata LCD1602_Write_Cursor_Add;
void LCD1602_Delay(u8 len)
{
u8 idata i;
while(len--)
{
i=15;
while(i--);
}
}
void LCD1602_Write_Add(u8 Add) //写地址命令
{
LCD1602_RS=0;
LCD1602_E=0;
LCD1602_Delay(10);
LCD1602_E=1;
HC595_Write_Buffer[0]=Add;
HC595_Write_Buffer[1]=0;
HC595_Write_Data_Drive();
LCD1602_E=0;
}
void LCD1602_Write_Dat(u8 Dat) //写内容
{
LCD1602_RS=1;
LCD1602_E=0;
LCD1602_Delay(10);
LCD1602_E=1;
HC595_Write_Buffer[0]=Dat;
HC595_Write_Buffer[1]=0;
HC595_Write_Data_Drive();
LCD1602_E=0;
}
void LCD1602_Init()
{
u8 i;
P4M0&=0x9f;
P4M1&=0x9f;//P4.6 P4.5 准双向口模式
LCD1602_Write_Add(0x38);
LCD1602_Delay(250);
LCD1602_Write_Add(0x01);
LCD1602_Delay(250);
LCD1602_Write_Add(0x02);
LCD1602_Delay(250);
LCD1602_Write_Add(0x06);
LCD1602_Delay(250);
LCD1602_Write_Add(0x0C);
LCD1602_Delay(250);
LCD1602_Write_Add(0x14);
LCD1602_Delay(250);
LCD1602_Write_Add(0x40);//自定义存储空间起始地址
for(i=0;i<8;i++)
{
LCD1602_Write_Dat(LCD1602_5x8[i]);
}
}
void LCD1602_Display_Ser()
{
u8 i;
LCD1602_Write_Add(0x80);
for(i=0;i<16;i++)
{
LCD1602_Write_Dat(LCD1602_Write_Buffer1[i]);
}
LCD1602_Write_Add(0xC0);
for(i=0;i<16;i++)
{
LCD1602_Write_Dat(LCD1602_Write_Buffer2[i]);
}
switch(LCD1602_Write_Cursor_Add)
{
case 0:LCD1602_Write_Add(0x0C);break;//不显示也不闪烁光标
case 1:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCa);break;
case 2:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCd);break;
case 3:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC7);break;
case 4:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC4);break;
case 5:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC1);break;
case 6:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCf);break;
case 7:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x89);break;
case 8:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x86);break;
case 9:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x83);break;
}
}
一、以上代码,主函数大循环前面初始化P4IO口为准双向口
二、主函数大循环前面需要初始化LCD1602_Init();
三、我们是使用595转换给LCD的D0~D7。你们可以直接用P2口赋值给LCD。
四、主函数每500ms 调用LCD1602_Display_Ser()函数。实现数据每半秒刷新一次即可。省掉读忙的过程。
五、两个LCD1602_Write_Buffer[];数组,分别是上下两行的显存。其他地方有需要,就往里面丢ASCII值就可以了。比如0x30+5.液晶显示数字5
六、以上代码由《人人学会单片机》视频教程原创书写。其他地方引用请注明出处!
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 在面试结束前,大多数的主考官都会丢问题给求职者,最常见的就是:你有没有什么问题或疑问,想要提出来的?无论求职者是否有提出问题,其实,这个问题背后的真正含意,通常是主考官用来测试你对这份 ...… 查看全部问答> |
|
选择比努力更重要 一个人一生当中最大的幸福在于选择对两件事,一是找对单位、找对老板、找对上司;第二件事就是找对妻子或丈夫。为什么这么说呢?当太阳升起时我们与上司共事,当日落西下,我们与自己的爱人相拥。你永远可以更主动地去影响你的上 ...… 查看全部问答> |
|
收音部分采用CXA1238M集成电路,灵敏度高,性能稳定,立体收音,功放采用TDA2822M集成电路。 电子制作是综合能力的体现,从中可学到不少技术和经验,欢迎选购制作。一板两用,既可当FM收音机用,又可以当立体声功放用。本板体积小巧玲珑,给用户 ...… 查看全部问答> |
|
如题,因为8155只需要低八位地址,P2想留做他用,故想采用普通IO模拟地址总线、ALE、WR等端口方式实现。按照时序图写出程序,但实验失败,在此求助,先谢过啦。代码如下: #include #include sbit AL = P2^0; //ALE sbit W = P2^2 ...… 查看全部问答> |
|
直接用如下代码获取,返回值为TRUE,得不到数据: memset(&m_nicdata, 0, sizeof(m_nicdata)); m_nicdata.Size = sizeof(NIC_STATISTICS); m_nicdata.ptc ...… 查看全部问答> |
|
求购在WINCE6.0下,A4平台上运行的TCPMP源码,价钱面议 在下求购能在WINCE6.0下,A4平台上运行的TCPMP源码. 本人在深圳 南山,西丽. QQ 50580776 EMAIL: gmb_669@163.com… 查看全部问答> |
|
是这样的,我最近在ARM上移植了UCOSII,下载了TCP/IP包,目的是利用以太网口实现两个目标板的通信。应用层上用SOCKET编程实现,基于TCP协议。但是问题是server和client怎么也建立不起链接。client方connect函数一直调用失败。server方listen调用成 ...… 查看全部问答> |




