基于51单片机的高速汽车列车汽车速度测量及报警装置proteus仿真原理图PCB

基于51单片机的直流电机测速系统(proteus仿真 程序 电路 代码) 本文介绍了以单片机AT89C51为核心的直流电机测速系统。系统以L298作为直流电机驱动芯片,通过改变引脚的电压的输出PWM波,来实现直流电机的驱动及其速度的调节,通过键盘来给定的直流电机转速和方向的信息,并由霍尔传感器测定其转速,经单片机处理后由以T6963C为核心的LCD PG160128A 显示输出。软件使用C语言进行编程,简单,方便。最后使用Keil和Proteus 进行联调仿真。模拟实现直流电机的速度的测定和调节直流电机的正转、反转、加速、减速。本系统具有精度高,成本低,使用方便等优点。 阅读详情

功能介绍:
0.本系统采用STC89C52作为单片机
1.LCD1602液晶显示测量车速,同时蓝牙串口上报速度测量结果
2.红外避障模块1触发,启动测速定时器,红外避障模块2触发,停止定时器,完成测速
超过60km/h,蜂鸣器报警
4.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:
在这里插入图片描述

PCB:
在这里插入图片描述

主程序:

#include <reg52.h>
#include "main.h"

float speed = 0; 
unsigned int speedMax = 60; //报警速度60km/h
unsigned int timeCnt = 0;
float timeH = 0;
float timeL = 0;
bit startFlag = 0;
bit oldPinState1 = 0;
bit nowPinState1 = 0;
bit oldPinState2 = 0;
bit nowPinState2 = 0;

void main()
{
    unsigned char dispRow[16];
    
    // 初始化
    LCD_Init();

    // 定时器初始化
    Timer0_Init();
    UART0_Init();

    // 开机显示
    LCD_DispStr(0, 0, "   Welcome!!!   ");
    DelayS(2);
    LCD_Clear();
    LCD_DispStr(0, 0, "  Speedometer   ");
    LCD_DispStr(0, 1, "Speed:  0.00km/h");
    

    while(1)
    {
        
        nowPinState1 = INFRARED_START;
        if (oldPinState1 == 1 && nowPinState1 == 0) //检测到探头1下降沿
        {
            LCD_DispStr(0, 1, "Speed:  -.--km/h");
            TR0 = 1; //打开定时器
            timeCnt = 0;
            TL0 = 0x66;		//设置定时初始值
            TH0 = 0xFC;		//设置定时初始值 1ms
            startFlag = 1; //启动标志
        }
        oldPinState1 = nowPinState1;

        nowPinState2 = INFRARED_STOP;
        if (startFlag == 1 && oldPinState2 == 1 && nowPinState2 == 0) //检测到探头2下降沿
        {
            TR0 = 0; //关闭定时器
            timeH = TH0;
            timeL = TL0;
            speed = 3.6*1000/((float)timeCnt + (float)(65535 - (timeH*256 + timeL))/1000);  //假定两个探头距离为1m
            if (speed > 999) //速度误操作处理
            {
                speed = 999;
                LCD_DispStr(0, 1, "Speed:  Error   ");
            }
            else
            {
                sprintf(dispRow, "Speed:%6.2fkm/h", (float)speed);
                LCD_DispStr(0, 1, dispRow);
                UART0_SendStr(dispRow, 16);
                UART0_SendStr("\r\n", 2);
                if(speed > speedMax) //超过60km/h 蜂鸣器报警3s
                {
                    BUZZER = 0;
                    DelayS(3);
                    BUZZER = 1;
                }
            }
            DelayS(3);
            LCD_DispStr(0, 1, "Speed:  0.00km/h"); 
            startFlag = 0; //清空启动标志
        }
        oldPinState2 = nowPinState2;
    }
}

void Timer0_Init()
{
    TMOD &= 0xF0; //Timer0 16位装载
    TMOD |= 0x01;
	TL0 = 0x66;		//设置定时初始值
	TH0 = 0xFC;		//设置定时初始值 1ms
    TR0 = 0; //关闭T0计时
    TF0 = 0;		//清除TF0标志
    ET0 = 1; //打开T0中断
    EA = 1;  //打开总中断
}

void Timer0_Intterupt() interrupt 1
{
	TL0 = 0x66;		//设置定时初始值
	TH0 = 0xFC;		//设置定时初始值 1ms
    
    if (timeCnt < 0xFFFF)
    {
        timeCnt++;
    }
}


void UART0_Init()
{
    SCON = 0x50;
    TMOD &= 0x0F;
    TMOD |= 0x20; //8位自动重装
    TH1  = RH_UART;
    TL1  = TH1;
    ET1  = 0; //禁止T1中断
    TR1  = 1; //启动T1计时
    //ES   = 1; //打开串口中断
    EA   = 1; //打开总中断
}

void UART0_SendByte(unsigned char dat) //串口发送单字节数据
{
	unsigned char time_out;
	time_out = 0x00;
	SBUF = dat;						  //将数据放入SBUF中
	while ((!TI) && (time_out < 100)) //检测是否发送出去
	{
		time_out++;
		DelayUs10x(2);
	}		//未发送出去 进行短暂延时
	TI = 0; //清除ti标志
}

void UART0_SendStr(unsigned char *str, unsigned char length) //发送定长度字符串
{
// 	unsigned char *tmp;
	unsigned char cnt = 0;
//    unsigned char length = 0;

//    tmp = str;
//    while (*(tmp++) != '\0')
//    {
//        length++;
//    }

	while (cnt < length) //发送长度对比
	{
		UART0_SendByte(*str); //发送单字节数据
		str++;		  //指针++
		cnt++;		  //下一个++
	}
}

//void UART0_Interrupt() interrupt 4 
//{

//    if (RI)
//    {
//        RI = 0;
//    }
//}

仿真演示视频:
https://www.bilibili.com/video/BV1VR4y1A7CU/

实物演示视频:
https://www.bilibili.com/video/BV1Zg411d7ET/

Proteus仿真51单片机+红外测距仪(GP2D12)+ADC0808模数转换 Proteus仿真51单片机+红外测距仪(GP2D12)+ADC0809模数转换 阅读详情

相关推荐

Proteus8.0仿真应用设计(二十一)基于FreeRTOS、STM32F103C8、HAL库、LCD1602、GP2Y0A02YK 的红外测距应用设计仿真

GP2Y0A02YK是一种距离测量传感器单元,由PSD(位置敏感探测器)、IRED(红外发射二极管)和信号处理电路的集成组合组成。由于采用了三角测量法,物体的反射率的变化、环境温度和工作时间对距离检测没有明显的影响。该装置输出与检测距离对应的电压。节能传感器(ATM机,复印机,自动售货机,笔记本电脑,液晶显示器)包装尺寸:29.5×13×21.6mm4。无触式开关(卫生设备、照明控制等)测距范围: 20至150厘米。娱乐设备(机器人、街机游戏机)电源电压:4.5~5.5V。消耗电流:33 mA 5。

zhusl6688的博客 550

基于51单片机的货车超重监测系统仿真设计 包含源程序及仿真文件

基于51单片机的货车超重监测系统仿真设计 包含源程序及仿真文件

51单片机小车-循迹 测速程序、1602显示速度

if(Right_1_led==1&&Left_1_led==0) //右边检测到黑线。if(Left_1_led==1&&Right_1_led==0) //左边检测到黑线。if(Right_1_led==1&&Left_1_led==1) //悬空。//左电机速度值个位。//左电机速度值百位。// 即 ((count1*1CM))/0.5S= (count1*2)CM/S。// 即 ((count1*1CM))/0.5S= (count1*2)CM/S。

weixin_44922566的博客 1337

基于51单片机霍尔测速仪表测转速调速系统方案原理图设计

硬件分析 (文末附文件) 原理框图 原理图: 系统功能分析 本设计由STC89C52单片机电路+液晶LCD1602显示电路+霍尔测速电路+电源电路组成。 1、通过霍尔传感器测速,霍尔传感器检测轮盘上的磁铁进而知道轮盘转了多少周,从而计算出转速。 2、LCD1602液晶实时显示转速。 3、可以通过电位器调节电机的转速。 A3144霍尔传感器模块电路设计 本霍尔传感器模块是基于霍尔元件A3144设计制作的模块,A3144芯片是一种磁传感器,其应用霍尔效应原理,采用半导体集成技术制造的磁敏电路,它是由电压调整

a_huan258147的博客 3万+

基于STC89C52的测速和超速报警系统设计

@[TOC]基于STC89C52的测速和超速报警系统设计 电平触发方式时,中断标志寄存器不锁存中断请求信号。单片机把每个机器周期采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。

weixin_41785199的博客 7115

基于单片机汽车超速报警系统设计-开题报告

本设计是基于单片机汽车超速报警系统设计,主要实现以下功能:1、通过霍尔传感器检测紫车速度2、使用直流电机模拟汽车运行,并通过按键调节汽车转速3、可以通过按键设置速度阈值,超速报警并语音提示4、第一次超速:灯亮+文字提示,持续15-20s(根据路况 上路前设计限速范围);5、第二次超速:蜂鸣器报警及语音文字提示,直至速度降至范围内语音和蜂鸣器停止报警;6、第三次超速:系统自动限速标签:51单片机、LCD1602、霍尔传感器、直流电机、语音播报。题目扩展:客车超载系统。

tenas的博客 868

基于51单片机电动自行车车速报警系统proteus仿真原理图程序

4.采用DC002作为电源接口可直接输入5V给整个系统供电。0.本项目采用STC89C52作为单片机系统的控制MCU。'上’键——电机速度+1 '下’键——电机速度-1。'上’键——加1 '下’键——减1。'左’键/'右’键——更改设置坐标。'上’键——加1 '下’键——减1。'左’键/'右’键——更改设置选项。'左’键/'右’键——更改设置选项。'切换’键——切换显示状态。'切换’键——切换显示状态。'设置’键——进入速度设置。'切换’键——切换显示状态。'上’键/'下’键——清零。

1935

Proteus 仿真课程设计】基于51单片机的测距系统仿真设计

利用Proteus软件进行仿真设计,基于51单片机设计一个测距系统,可以通过超声波测距传感器结合温度传感器计算距离并通过LCD显示屏显示、串口发送数据,并可以通过手动按键设置距离阈值,当检测到距离低于阈值时,用蜂鸣器和LED闪烁进行声光报警,当距离低于阈值一半时 ,加快报警频率。Proteus51单片机;电子仿真

weixin_54010404的博客 4250

基于51单片机的车速检测与控制系统设计

汽车速度检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的车速检测与控制系统。

qq_25502401的博客 1009

基于51单片机车速测量控制

具体功能: 1.通过L298驱动直流电机模拟转动; 2.LCD1602显示转动状态和速度; 3.按键可以控制启动/停止、加/减速、正/反转;

2401_82402501的博客 1276

【免费下载】 基于51单片机霍尔传感器测速Proteus仿真

基于51单片机霍尔传感器测速Proteus仿真 【下载地址】基于51单片机霍尔传感器测速Proteus仿真 基于51单片机霍尔传感器测速Proteus仿真 项目地址: https://gitcode.com/open-source...

gitblog_09819的博客 1017

基于51单片机的自行车测速系统设计[proteus仿真]

速度检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的自行车测速系统设计。

qq_25502401的博客 1095

基于51单片机的车速监测【ADC0832,LCD1602】(仿真

1、脉冲编码器测量车速(仿真直接电机代替)2、通过电位器设置报警值,车速过高报警。3、显示当前车速和阀值。

qq_63964231的博客 755

基于51单片机智能汽车防侧翻防倾倒报警霍尔语音蓝牙设计18-810

18-810、基于51单片机汽车防侧翻防倾倒报警器角度测量霍尔测速设计+语音蓝牙设计产品功能描述:本设计由STC89C52单片机电路+霍尔测速模块电路+LCD1602液晶显示电路+陀螺仪MPU6050模块电路+1位按键电路+电机控制电路+ISD1820语音模块电路+蓝牙模块电路+电源电路组成。1、通过霍尔传感器检测轿车、公交车、货车的实时速度。将轿车、公交车、货车的理论速度阈值写入程序中,当实际速度超过阈值时,语音报警,语音报警内容可以自行录制。2、通过陀螺仪检测轿车、公交车、货车的X轴和Z轴的角度。3、将

Danpianjihuizong的博客 591

51单片机智能小车测速小车原理和开发

51单片机智能小车测速小车原理和开发 定时器和中断实现测速开发和调试代码 小车速度显示在OLED屏 51单片机

wei_Embedded_z的博客 3520

测速的c语言程序,51单片机测速c程序

#include #define uintunsigned int#define ulong unsigned long#define uchar unsigned char //定义一下方便使用sbit d0=P2^0; // 数度公共端sbit d1=P2^1; // 数度公共端sbit d2=P2^2; // 数度公共端sbit d3=P2^3; // 数度公共端uchar code...

weixin_39875754的博客 1224

Proteus仿真】【51单片机】PWM电机调速系统设计

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。本项目使用Proteus8仿真51单片机控制器,使用L298N电机模块、数码管模块、按键模块、LED指示灯模块等。可通过按键K4启动与停止,按键K1加速、按键K2减速,按键K3换向;按键功能:具有加速、减速、正转、反转、启动和停止;测速功能:使用霍尔传感器实现电机测速;显示功能:数码管显示档位、电机转速;指示功能:LED指示电机正转、反转;2、L298N电机驱动模块。

Hello_Muyi的博客 7557

嵌入式-51单片机入门(三)-数码管驱动:从单管点亮、多位扫描到动态刷新与消隐原理

本文系统讲解了数码管驱动原理与技术演进,从单管点亮到多位数码管动态扫描的完整实现过程。文章首先解析了数码管的基本原理,包括共阴/共阳结构、段码表生成和硬件电路架构;然后通过单管驱动案例揭示了初学者常见的认知误区;重点剖析了多位数码管动态扫描中的鬼影问题及其消隐时序解决方案;最后对比了直接扫描与专用驱动芯片两种方案的优劣,并提出了定时器中断、显示缓冲区等工程优化方向。全文贯穿了嵌入式开发的核心思想:IO复用、时间分片、时序控制和硬件卸载,为读者构建了从基础实验到实际项目的技术路径。

Luminousone的博客 356
上一篇: 基于STM32单片机的智能电烤箱温度控制器(加定时)原理图PCB
下一篇: 基于51单片机的衣柜鞋柜湿度控制系统proteus仿真原理图PCB
极寒钛科技
博客等级 码龄6年 826粉丝 161原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值