历史上的今天
返回首页

历史上的今天

今天是: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

六、以上代码由《人人学会单片机》视频教程原创书写。其他地方引用请注明出处!


推荐阅读

史海拾趣

福斯特(FIRST)公司的发展小趣事
如果怀疑某个传感器或控制单元故障,可以尝试替换测试以确认问题所在。
Alpha Industries公司的发展小趣事

在环保意识日益增强的今天,Alpha Industries积极响应绿色生产的号召。公司利用电子技术优化生产流程,减少能源消耗和废弃物排放。此外,Alpha Industries还推出了采用环保材料制成的军事服装系列,以实际行动践行绿色环保理念。这些举措不仅有助于提升公司的社会形象,也为公司的可持续发展奠定了坚实基础。

这些故事展示了Alpha Industries如何在电子技术的推动下,不断创新并适应市场变化,进而在相关领域取得显著发展。尽管这些故事并未直接涉及电子行业的核心业务,但它们却充分体现了Alpha Industries在技术创新和市场拓展方面的积极努力和取得的成果。

Eurotechnique公司的发展小趣事

随着全球对环保和可持续发展的关注度不断提高,Eurotechnique也开始注重环保和可持续发展。公司采用环保材料和生产工艺,降低产品对环境的影响。同时,Eurotechnique还积极参与环保公益活动,推动电子行业的绿色发展。此外,公司还致力于研发更加节能、环保的产品,以满足市场的需求。

Amperite Co公司的发展小趣事

近年来,随着数字化和智能化的快速发展,Eurotechnique也加快了数字化转型和智能化升级的步伐。公司投入大量资金和资源,引进先进的数字化生产线和智能化设备,提高生产效率和产品质量。同时,Eurotechnique还加强了与互联网、大数据等新技术领域的合作,推动公司的数字化转型和智能化升级。这些努力使得Eurotechnique在竞争激烈的电子行业中保持了领先地位。

Global Connector Technology公司的发展小趣事
电源系统中的电压波动或电磁干扰可能干扰继电器的正常工作。
DURAKOOL公司的发展小趣事

为了更好地服务全球客户,DURAKOOL公司加强了全球化布局,在多个国家和地区设立了生产基地和研发中心。同时,公司也积极寻求与全球知名企业的合作,如与杜邦公司等建立了良好的合作关系,共同推动电子行业的发展。

问答坊 | AI 解惑

用10个漂亮问题完美结束面试

本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 在面试结束前,大多数的主考官都会丢问题给求职者,最常见的就是:你有没有什么问题或疑问,想要提出来的?无论求职者是否有提出问题,其实,这个问题背后的真正含意,通常是主考官用来测试你对这份 ...…

查看全部问答>

找工作,选择比努力更重要

选择比努力更重要 一个人一生当中最大的幸福在于选择对两件事,一是找对单位、找对老板、找对上司;第二件事就是找对妻子或丈夫。为什么这么说呢?当太阳升起时我们与上司共事,当日落西下,我们与自己的爱人相拥。你永远可以更主动地去影响你的上 ...…

查看全部问答>

FM收音机带有立体声收音

收音部分采用CXA1238M集成电路,灵敏度高,性能稳定,立体收音,功放采用TDA2822M集成电路。 电子制作是综合能力的体现,从中可学到不少技术和经验,欢迎选购制作。一板两用,既可当FM收音机用,又可以当立体声功放用。本板体积小巧玲珑,给用户 ...…

查看全部问答>

求助:51与8155连接问题,模拟端口方式

如题,因为8155只需要低八位地址,P2想留做他用,故想采用普通IO模拟地址总线、ALE、WR等端口方式实现。按照时序图写出程序,但实验失败,在此求助,先谢过啦。代码如下: #include #include sbit AL = P2^0;    //ALE sbit W = P2^2 ...…

查看全部问答>

海浪发电的漂浮灯

除了每天准时升起的太阳时刻不停的将取之不竭能量输送到地球上,时刻波动起伏的广阔海面也蕴含着无穷的能量。这款漂浮在水面的信号灯利用海面的水流驱动发电机产生电力来点亮信号灯,可安置在暗礁周围用于警示或装置在深海边缘提醒游泳者慎入以及在 ...…

查看全部问答>

LCD液晶的操作

1602液晶:2行,每行16个点 主要看“写指令”和“写数据”,因为E=高脉冲,所以在初始化的时候要给E低电平,为高脉冲做准备。 1602液晶的屏幕地址,且以0x80为基地址。 在初始化中的指令码对应下表: 我写的LC ...…

查看全部问答>

如何获取WIFI的NIC_STATISTICS

直接用如下代码获取,返回值为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…

查看全部问答>

socket编程的问题

是这样的,我最近在ARM上移植了UCOSII,下载了TCP/IP包,目的是利用以太网口实现两个目标板的通信。应用层上用SOCKET编程实现,基于TCP协议。但是问题是server和client怎么也建立不起链接。client方connect函数一直调用失败。server方listen调用成 ...…

查看全部问答>

EVC下将LPBYTE转换成LPWSTR,谢谢!

LPBYTE lpByte; 如何转化为LPWSTR类型呢?…

查看全部问答>