数码之家

 找回密码
 立即注册
搜索
查看: 1531|回复: 5

[C51] ICL7135-连接单片机1602显示的仿真

[复制链接]
发表于 2022-9-17 12:00:54 | 显示全部楼层 |阅读模式
本帖最后由 zhangmc419 于 2022-9-17 12:02 编辑

ICL7135-连接单片机,用1602显示的仿真。
/*ICL7135用LCD1602显示,用PROTEUS仿真
D0-D5连接P1.0-P14;B1、B2、B4、B8
接P2.0-P2.3;超量程全显示0*/

#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
u8 bNumber[5] = {0,0,0,0,0};        //五位数码数组
sbit rs=P3^4;                                   //1602RS
sbit rw=P3^5;                                   //1602RW
sbit e=P3^6;                                   //1602EN
/*1602用P0口*/

void delay(u16 i)
{
        u8 j,k;
        for (;i>0;i--)
                for (j=38;j>0;j--)
                        for (k=130;k>0;k--);
}

/*写命令到1602*/
void wrc(u8 c)
{
        delay(1);
        rs=0;
        rw=0;
        e=0;
        _nop_();
        _nop_();
        e=1;
        P0=c;
        e=0;
}
/*写数据到1602*/
void wrd(u8 dat)
{
        delay(1);
        rs=1;
        rw=0;
        e=0;
        _nop_();
        _nop_();
        e=1;
        P0=dat;
        e=0;

}


/*移动光标位置*/
void LCD_SetCursor(u8 Line,u8 Column)
{
        if (Line==1)
        {
                wrc(0x80|(Column-1));
        }
        else if (Line==2)
        {
                wrc(0x80|(Column-1+0x40));
        }
}
/*行,列,显示一个字符,上边行号为1,下边为2*/
void LCD_ShowChar(u8 Line,u8 Column,u8 Char)
{
        LCD_SetCursor(Line,Column);
        wrd(Char);
}

/*LCD1602初始化*/

void init()
{
        delay(0);
        wrc(0x38);
        wrc(0x38);
        wrc(0x38);
        wrc(0x0c);
        wrc(0x06);
        wrc(0x01);
}
/*外部中断初始化*/
void initEx0()
{
        EA  = 1;         //开启总中断
        EX0 = 1;         //开启0号外部中断 P32
        IT0 = 1;         //设置外部中断触发方式 //0 - 低电平触发 //1 - 负跳变触发
        //STROBE触发
}


void main()
{
        u8 Di=0;
        init();
        initEx0();
        while (1)
        {
                LCD_ShowChar(1,1,'U');
                LCD_ShowChar(1,3,'=');
                LCD_ShowChar(1,12,'m');
                LCD_ShowChar(1,13,'v');
                LCD_ShowChar(1,5,bNumber[0]+48);
                LCD_ShowChar(1,6,bNumber[1]+48);
                LCD_ShowChar(1,7,bNumber[2]+48);
                LCD_ShowChar(1,8,bNumber[3]+48);
                LCD_ShowChar(1,9,'.');
                LCD_ShowChar(1,10,bNumber[4]+48);
        }
}
/*中断读取数据*/
void ADC_7135() interrupt 0
{
        u8 Di = 0;
        Di = P1&0x1f;
        switch (Di)
        {

        case 0x01:
                bNumber[4]=P2&0X0F;
                break;
        case 0x02:
                bNumber[3]=P2&0X0F;
                break;
        case 0x04:
                bNumber[2]=P2&0X0F;
                break;
        case 0x08:
                bNumber[1]=P2&0X0F;
                break;
        case 0x10:
                bNumber[0]=P2&0X0F;
                break;
        default:
                break;
        }
}





如果你没M币,可拷贝此程序,参考图片做PROTEUS文件。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 3家元 +46 收起 理由
作死的家伙 + 6
jf201006 + 10 謝謝分享
家睦 + 30

查看全部打赏

发表于 2022-9-17 15:24:21 | 显示全部楼层
整个实物试试啊,纸上得来终觉浅。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 15:58:14 | 显示全部楼层
家有开心果 发表于 2022-9-17 15:24
整个实物试试啊,纸上得来终觉浅。

首先仿真要通过,手头有好几片ICL7135,准备立创打板。现在没时间搞。
回复 支持 反对

使用道具 举报

发表于 2022-9-17 22:16:36 | 显示全部楼层
一堆代码晕头了,大神出品必属精品。
回复 支持 反对

使用道具 举报

发表于 2022-9-17 23:33:28 来自手机浏览器 | 显示全部楼层
现在打板都提价了,这个仿真软件我都不用了,软硬件都想当然的干出来,毕竟仿真过了也不一定好使,不知它现在支持STC和STM的单片机没?
回复 支持 反对

使用道具 举报

发表于 2023-11-5 22:44:19 | 显示全部楼层
回复看一下,手里几片这个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-14 09:04 , Processed in 0.421201 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表