[Proteus51单片机仿真]欢迎光临仿真系统设计

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于AT89C5单片机,红外检测客人是否到来,如果来客人,红外传感器发送高电平给单片机,LCD1602显示屏显示 欢迎光临
如果没有客人,就发送低电平给单片机,单片机收到低电平信号,就让LCD1602显示屏清屏;

仿真图:

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

1、51单片机

2、LCD1602显示屏

3、GP2D12红外检测模块

三、程序编程

/*所有代码看页尾资源*/

#include <REGX52.H>
#include<intrins.h>
#include<stdio.h>
#include "Delay.h"
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned  int
typedef unsigned char u8;
typedef unsigned int  u16;
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
sbit CS=P1^0;        //51单片机引脚设置
sbit CLK=P1^1;
sbit DIO=P1^2;

uchar get_AD_Res()          //ADC0832启动读取函数
{
	uchar i, data1=0, data2=0;
	CS=0;
	
	CLK=0;DIO=1;_nop_();
	CLK=1;_nop_();
	
	CLK=0;DIO=1;_nop_(); 
	CLK=1;_nop_();
	
	CLK=0;DIO=0;_nop_();
	CLK=1;_nop_();
	
	CLK=0;DIO=1;_nop_(); 
	
	for(i=0; i<8; i++)
	{
		CLK=1;_nop_();
		CLK=0;_nop_();
		data1=(data1<<1)|(uchar)DIO; 
	}
	
	for(i=0; i<8; i++)
	{
		data2=data2|(uchar)DIO<<i;
		CLK=1;_nop_();
		CLK=0;_nop_();
	}
	CS=1;
	
	return(data1 == data2)?data1:0;
}

void main()					  //主函数
{	
	char u;
	LCD_Init();         //显示屏初始化
	
	while(1)
	{
		u=get_AD_Res();
		if(u>100)
		{
		 u=0;
		}
		else
		{
		 u=1;
		}
		if(u==0)
		{
		 LCD_ShowString(1,4,"HUAN YING ");
		 LCD_ShowString(2,3,"GUANG  LING ");
		}
		else
		{
		 LCD_ShowString(1,4,"XIE  XIE  ");
		 LCD_ShowString(2,3,"ZAI   JIAN ");
		}
	}
}

四、实现现象

具体动态效果看B站演示视频:

【单片机PROTEUS仿真】欢迎光临!_哔哩哔哩_bilibili

全部资料(源程序、仿真文件、安装包、演示视频):

链接:https://pan.baidu.com/s/1w616yf2qVVa6R8TUn1o9EQ 
提取码:jo5d 
--来自百度网盘超级会员V4的分享

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜间去看海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值