微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助LCD1602问题

求助LCD1602问题

时间:10-02 整理:3721RD 点击:
我将在STC89C52RC上调试成功的LCD1602程序移植到STC12C5A60S2上,延迟什么的都扩大了;但是只有数字显示正常,字母显示的是乱码,这是什么原因

STC89C52RC是12T单片机,STC12C5A60S2是1T单片机,移植程序过来,关于时间的函数肯定是要修改的哈
标准51单片机是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令周期,刚好就是1/12M*12=1uS,常见指令例如_nop_就是一个周期,刚好1uS,其他的大多多于一个周期,乘除法更多。如果是单片机1T的话,那_nop_只需要1/12uS
另外,数字可以正常显示,字母不能正常显示……说到底都是显示的字符,不应该有不同……不明白

您那里,有用STC12c5a60s2编写LCD1602的程序吗,能够给我参考一下吗;我现在也被弄懵了

LCD1602的控制应该算是比较简单,笔者也是本科时代利用STC89控制过1602的
下面是网上找的一段代码 希望对你有用,请特别要注意线缆连线!
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit rs=P1^0;
sbit rw=P1^1;
sbit en=P1^2;
void delay(uint sum)
{
        int i,j;
        for(i=sum;i>0;i--)
                for(j=110;j>0;j--);       
}
void write_date(uchar date)
{
        rs=1;
        rw=0;
        P0=date;
        delay(5);
        en=1;
        delay(5);
        en=0;
}
void write_com(uint com)
{
        rs=0;
        rw=0;
        P0=com;
        delay(5);
        en=1;
        delay(5);
        en=0;
}
void init()
{
        en=0;
        write_com(0x38);
        write_com(0x0e);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80+0x10);
}
void main()
{
        init();
        write_date('a');
        delay(20);
        write_date('b');
        while(1);
}       

          RCT问题!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top