求助LCD1602问题

2019-07-15 16:09发布

我将在STC89C52RC上调试成功的LCD1602程序移植到STC12C5A60S2上,延迟什么的都扩大了;但是只有数字显示正常,字母显示的是乱码,这是什么原因
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
zjbhello
1楼-- · 2019-07-15 20:57
STC89C52RC是12T单片机,STC12C5A60S2是1T单片机,移植程序过来,关于时间的函数肯定是要修改的哈
标准51单片机是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令周期,刚好就是1/12M*12=1uS,常见指令例如_nop_就是一个周期,刚好1uS,其他的大多多于一个周期,乘除法更多。如果是单片机1T的话,那_nop_只需要1/12uS
另外,数字可以正常显示,字母不能正常显示……说到底都是显示的字符,不应该有不同……不明白
淡定的牙粉
2楼-- · 2019-07-15 22:58
zjbhello 发表于 2015-9-7 18:02
STC89C52RC是12T单片机,STC12C5A60S2是1T单片机,移植程序过来,关于时间的函数肯定是要修改的哈
标准51单片机是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令周期,刚好就是1/12M*12=1uS,常见指令例如_nop_就是一个周期,刚好1uS,其他的大多多于一个周期,乘除法更多。如果 ...

您那里,有用STC12c5a60s2编写LCD1602的程序吗,能够给我参考一下吗;我现在也被弄懵了
zjbhello
3楼-- · 2019-07-16 01:08
淡定的牙粉 发表于 2015-9-7 18:30
您那里,有用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);
}       
2330608526
4楼-- · 2019-07-16 02:55
 精彩回答 2  元偷偷看……

一周热门 更多>