1、工具准备
仿真工具:Proteus 7.0
编程工具:KEIL 4
MCU :89C52

2、仿真电路图的搭建
2.1 最小系统搭建
最小系统的线路图在网上有很多,基本上都是街上晶振和复位按钮就行。本仿真的最小系统搭建如下:

2.2 LCD1602的连接
LCD1602主要由三个控制口和8个数据口组成,一般情况下,在仿真图中,相同标号的线表示在电气连接上是连接在一起的,所以本仿真中,用P0口作为数据口:

2.3 红外传感器和ADC芯片的连接:

3、程序的编写
3.1 LCD1602驱动代码及其API
LCD1602.h文件如下

//LCD1602驱动
#ifndef __LCD1602_H__
#define __LCD1602_H__#include"reg52.h"#define uint unsigned int
#define uchar unsigned charsbit cs = P3^2;
sbit wela = P2^7;
sbit dula = P2^6;
sbit lcden=P3^4;
sbit lcdrs=P3^5;void delayms(uint z);
void write_com(uchar com);
void write_data(uchar date);
void init();
void print_data(uchar *dat);#endif

LCD1602.c文件如下:

#include "lcd1602.h"void delayms(uint z)
{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y-- );
}void write_com(uchar com)
{   lcdrs=0;P0=com;delayms(5);lcden=1;delayms(5);lcden=0;
}void write_data(uchar date)
{lcdrs=1;P0=date;delayms(5);lcden=1;delayms(5);lcden=0;
}void init()   //初始化液晶
{dula=0;wela=0;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);
}void print_data(uchar *dat)
{uchar i = 0;while(dat[i]!='\0'){write_data(dat[i]);i++;}
}

3.2 主函数及ADC和红外模块

#include"reg52.h"
#include<intrins.h>
#include "lcd1602.h"long int read=0;
uchar bai,shi,ge;uchar table[] ="0123456789";
uchar table1[] ="Infrared Measure";
uchar table2[] ="Distance:";void delay(uint a)     //  a 个1us延时
{for(;a > 0;a --)_nop_();_nop_();
}void T0_time() interrupt 1
{cs = 0; RD = 0;read = P1;INT0 = 1;
}
uint adc0804()
{
TMOD=0X01;
TH0=(65536-45872)/256;
TL0=(65536-45872)/256;
EA=1;
ET0=1;
TR0=1;INT0 = 1;cs = 0; WR = 0;delay(255);cs = 1; WR = 1;delay(200);     read = read * 196 /100;return read;}void math(uint x)
{bai = x / 100; shi = x /10 % 10;ge = x % 10;
}void main()
{cs=0;init();     while(1){write_com(0x80);print_data(table1);write_com(0x80+0x40);print_data(table2);math(adc0804());write_com(0x80+0x40+12);write_data(table[bai]);write_data(table[shi]);write_data(table[ge]);  write_data('M');delayms(500);}}

3.3 最终效果图

4、总结
这是一个简单的51仿真实验。对于初学者而言很好理解,也很容易做出来。其中涉及到Proteus的学习,LCD1602、ADC、红外模块的驱动。于程序中,还有定时器。欢迎交流~~~ >_<

基于51单片机的红外线测距仿真相关推荐

  1. 基于51单片机HC-SR04超声波测距带温度补偿

    基于51单片机HC-SR04超声波测距带温度补偿 1 开发环境 2 功能说明介绍 3 程序 3.1 工程文件 3.2 代码 4 原理图 5 元器件清单 6 PCB 7全部资料 1 开发环境 仿真图:p ...

  2. S0011基于51单片机DS18B20温控风扇仿真设计

    基于51单片机DS18B20温控风扇仿真设计 (仿真+原理图+源码+设计报告) 原理图:Altium Designer 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程 ...

  3. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  4. 基于51单片机手动计步器protues仿真设计

    基于51单片机手动计步器protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0021 目录标题 基于51单 ...

  5. 基于51单片机的电子秤proteus仿真设计

    本设计仅供学习参考 基于51单片机的电子秤proteus仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altium Designer 仿真图proteus 7.8 程序编译器:keil 4/ke ...

  6. 基于51单片机的16X64点阵仿真

    目录 一.项目需求 二.仿真图 三.代码 四.资料清单 资料下载地址:基于51单片机的16X64点阵仿真 一.项目需求 16X64点阵上显示汉子,并且可以左右移动. 二.仿真图 左移 右移 三.代码 ...

  7. 基于51单片机智能家居电路控制仿真

    [毕设课设]基于51单片机智能家居电路控制仿真 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机pro ...

  8. 基于51单片机多功能电磁炉仿真设计-protues

    本设计是基于51单片机的电磁炉仿真,通过51单片机的IO接口P3.0为输出口,用于控制线圈的打开和关断.其中P1.0和P1.1对微波炉功率进行调整.附件内容包含protues仿真电路和c语言代码. [ ...

  9. 基于51单片机的电子琴Protues仿真设计

    一.设计背景 基于51单片机的电子琴是一款由51单片机控制器.音频模块和硬件阵列组成的数字化乐器.它可以模拟各种乐器的音效,同时也具有许多常规电子琴所没有的高级功能. 首先,这种电子琴是以数字信号处理 ...

最新文章

  1. 【MySQL】Got fatal error 1236原因和解决方法
  2. spring6:bean的生命始末方法
  3. 【机器学习】LBP特征融合最大灰度差、平均灰度、平均梯度改善SVM检测效果
  4. springmvc国际化
  5. python win10还是linux_在win10的Linux子系统(WSL)上搭载python编程环境
  6. 前端学习(3090):vue+element今日头条管理-参数传递
  7. 95-910-144-源码-FlinkSQL-Flink的UDF
  8. Flutter高级第6篇:事件广播 、事件监听
  9. 怎么去掉字符串最后一个逗号
  10. Android手机使用Windows应用,微软宣布在你的手机应用上运行安卓APP功能向Windows 10稳定版提供...
  11. 项目经理在项目各阶段的工作重点-更新版
  12. Postgresql模糊查询插件pg_bigm安装
  13. strtok()函数详解!
  14. 阜阳师范学院java,刘冬冬 - 阜阳师范学院 - 计算机与信息工程学院
  15. TypeError: AMap.MouseTool is not a constructor TypeError: AMap.MouseTool is not a constructor
  16. CNN应用之性别、年龄识别
  17. 移动端web开发click touch tap区别
  18. c++数字与字符串转换的方法
  19. 如何保障微服务架构下的数据一致性
  20. 10个2018年度最佳网站设计实例赏析及原型分享

热门文章

  1. Uipath Excel 设置单元格背景颜色
  2. 西门子变频器SINAMICS S120电源模块分享
  3. Win10 系统WLAN 显示已关闭,图标是红叉 ,怎么办?
  4. html文件中未定义属性名错误,错误:无法读取未定义的属性已检查
  5. 怎么用java做一个立体相册_抖音上很火的3D立体动态相册实现教程!(不懂编程也能学会)...
  6. python随机生成中文句子_关于python:从语法或Ngrams生成随机句子?
  7. linux删除多余日志,linux删除及设置日志
  8. 电脑桌面计算机是英文,电脑桌面文件都变成了英文状态是怎么回事?
  9. 山大 计算机考研论坛,寻找20年山大计算机考研小伙伴
  10. 首届“全球创新创业教育论坛” 暨“大学三基工程”工作会议将于9月26-28日在湖南韶山召开