历史上的今天
返回首页

历史上的今天

今天是:2025年04月11日(星期五)

正在发生

2020年04月11日 | 迁移51 的 LCD12864 到 Stm32F407

2020-04-11 来源:eefocus

假期参加电赛崩了。。。闲的无聊,准备做一些底层的代码分享一下,也算是给自己磨炼一下吧。


这次做的是Stm32F407ZGT6 驱动LCD12864 的代码测试的时候使用的是正点原子的探索者 STM32F4开发板、 LCD 插在清翔的51单片机开发板上注意我是用的是 带有中文字库的版本

这里注意驱动LCD需要给模块一个参考电压也就是上图的VO否则LCD显示会出异常(颜色过深或者过浅) 我也是因为这个


所以才使用了成品开发板的电路

程序是从51单片机的程序上迁移过来的,咱们不做深究,只是注重一些迁移的细节。

以上是三个控制引脚的设置,其实还有几个是PSB需要设置,这个是一直拉高我就没用IO了 就直接接到VCC了


在51中 IO的输入输出是由C语言的读取和写入决定的,P0 = 0xff是输出data = P0是 读取


但是在STM32F407中确不是这样的,STM32有自己的输入数出模式,不同的时刻需要对输入输出的寄存器进行配置。


我的实现过程大概是这样的:

输出和输入分别使用一个函数来实现,函数中有切换 IO输入输出模式的操作也有读取和写入的操作


实现了这两个函数以后剩下的代码几乎就可以全部迁移过去了,只要注意一下函数名称就可以了

以上就实现了对LCD12864 的驱动,我测试用的LCD是带有中文字库的,显示汉字很方便,至于绘图,描点、反白、显示数字等等的暂时还没有实现,看心情吧。如果有更新的话后期大家应该可以看得到。


更新的代码来了,  我编写了一些常用的显示代码,

大概是这样的显示int(带符号)double还有hex和bin 


int显示的函数请使用这个后面的那个是有问题的


void LCD_12864_show_int(u8 x,u8 y,int num,u8 len)

{

    u32 temp=1;

    u8 i=0;

    u8 flag=1;

    LCD_12864_pos(x,y);

    if(num <0)

    {

        LCD_12864_write_data('-'); //显示符号

        num *=-1;

    }

    for(i=0;i        temp *=10;

    for(i=0;i    {    

        if(flag &&(num/temp == 0))

        { //flag == 1 并且 num/temp == 0

          //证明这是我们不想要的开头部分的0

            LCD_12864_write_data(' ');// 填充空格

        } else

        {

            flag = 0;//  第一次进入就会置0  之后就不会进到上面的逻辑

            LCD_12864_write_data((num/temp)+'0');

            

            

        }

        num%=temp;

        temp/=10;

    }    

}

这是显示int的实现方法(自己写的可能会有bug我这边测试暂时没有发现问题)

这是显示string的方法,可以直接显示汉字!


double 的显示比较长。。。。而且这个代码存在一定的精度的误差比如你要显示123456.654321可能实现的不是这个数字!!!

其实显示double和 hex  bin 都是先合成一个string然后在现实string主要的难点就是合成string了

以上就是显示的过程了

这是显示的效果图对应于main中

显示bin的话  LCD的长度不是很够 看着就是比较难受

这是显示字符串和 int

看起来还凑合,注意使用的时候长度要有一定的富余


推荐阅读

史海拾趣

Chauvin Arnoux公司的发展小趣事

1934年,Chauvin Arnoux再次引领技术潮流,发明了电流互感器钳形表,这是世界上第一个非接触式电流表。这一发明不仅改变了电流测量的传统方式,而且极大地提高了测量的便捷性和安全性。非接触式电流表的出现,为电气工程师和技术人员提供了更为高效和安全的测量工具,推动了电气行业的发展。

Calex Mfg Co Inc公司的发展小趣事

在国内市场取得一定成绩后,Calex Mfg. Co., Inc.开始积极拓展海外市场。公司制定了全球化战略,通过参加国际展会、建立海外销售网络等方式,不断开拓国际市场。同时,公司还根据不同地区的市场需求,推出定制化的产品和服务,进一步提升了其在国际市场中的竞争力。

台湾奇力(Chip)公司的发展小趣事

奇力公司自创立之初,就致力于LED芯片的研发与生产。在技术积累方面,奇力公司不断引进先进的生产设备和技术人才,通过自主研发和合作创新,不断提升产品性能和质量。随着技术的突破,奇力公司逐渐在LED芯片市场上崭露头角,以其亮度高、性能稳定的产品赢得了客户的信赖。

HB公司的发展小趣事

理念:作为一家负责任的企业,Hartmann Codier GmbH始终将环保理念贯穿于产品研发、生产和销售的全过程中。公司严格遵守RoHS/WEEE等国际环保标准,杜绝使用或包含六种有毒重金属物质。

实践:在产品设计阶段,公司就充分考虑环保因素,采用环保材料和工艺;在生产过程中,公司加强了对废弃物的处理和回收利用;在产品销售后,公司还提供了完善的回收服务。这些措施不仅降低了产品对环境的影响,还提升了企业的社会形象。

台湾岱恩(DAIN)公司的发展小趣事

核心:Hartmann Codier GmbH一直将技术创新视为企业发展的核心动力。公司拥有一支专业的研发团队,致力于开关技术的研发与创新。通过不断的技术突破和产品升级,公司成功推出了一系列具有自主知识产权的高性能开关产品。

影响:这些创新产品不仅满足了市场对高品质、高可靠性开关的需求,还推动了整个电子行业的技术进步和产业升级。Hartmann Codier GmbH因此成为了行业内的技术引领者之一。

Greenconn Corp公司的发展小趣事
合理使用冰箱,避免频繁开关门和长时间开启制冷模式。

问答坊 | AI 解惑

用于汽车火花塞检验实现六西格玛可重复性标准

基于National Instruments(美国国家仪器公司,简称NI)CVS-1454、Sony IEEE 1394 数码相机以及开发于NI LabVIEW Real-Time 和NI Vision Development Module 平台的灵活的模块化软件,构建一个坚固的、可靠的、低成本的车间作业检验解决方案。…

查看全部问答>

光电二极管,光电传感器手册

光电二极管,光电传感器手册 比较全面。 [ 本帖最后由 seapowersensor 于 2009-7-1 16:55 编辑 ]…

查看全部问答>

650W音响功放高速电源电路设计资料

本帖最后由 paulhyde 于 2014-9-15 04:11 编辑 650W音响功放高速电源电路设计资料  …

查看全部问答>

SPI通信小问题

请问下 我在SPI上怎么书写读取DSP上发送过来的字节啊?已有一个接收函数.…

查看全部问答>

PLATFORM BUILDER 驱动编译的问题?

我用的是Platform builder 5.0,新建一个CE 的OS,然后,新建一个驱动的DLL Project,但是编译的出现如下的错误: BUILD: [01:0000000045:ERRORE] CAN.CPP(1,2): error CS1024: Preprocessor directive expected BUILD: [01:0000000046:ERRORE] CA ...…

查看全部问答>

代码阅读器第一个版本, 请大家试试

代码阅读器第一个版本,   请大家试试 http://code-search.kingofcoder.com/…

查看全部问答>

有关petalinux上的web应用

大家好,我的FPGA是SP601,petalinux是0.4版本,我在petalinux上写了一个简易的web服务器,在移植了petalinux的FPGA的板子上可以运行,但是我通过IE浏览器不能访问web网页,我想问一下,petalinux-0.4是否支持web访问?到底问题出在哪里?…

查看全部问答>

PCB制版厂甩铜常见的原因分析

一、 PCB厂制作流程因素:  1、 铜箔蚀刻过度,市场上使用的电解铜箔一般为单面镀锌(俗称灰化箔)及单面镀铜(俗称红化箔),常见的甩铜一般为70um以上的镀锌铜箔,红化箔及18um以下灰化箔基本都未出现过批量性的甩铜。客户线路设计好过蚀刻线的 ...…

查看全部问答>