• 基于51单片机霍尔汽车自行车码表测速测里程显示proteus仿真原理图PCB


    功能:
    0.本系统采用STC89C52作为单片机
    1.LCD1602液晶分三种显示模式
    a)显示实时速度和本次里程
    b)显示当前时间
    c)显示报警速度和总里程
    2.超过报警速度将声光报警
    3.功能按键介绍
    a显示状态下:
    '上’键——电机速度+1 '下’键——电机速度-1
    '设置’键——电机启动/暂停
    '切换’键——切换显示状态
    b显示状态下:
    '设置’键——进入时间设置
    '切换’键——切换显示状态
    *时间设置状态
    '上’键——加1 '下’键——减1
    '左’键/'右’键——更改设置坐标
    '切换’键——确定
    c显示状态下:
    '设置’键——进入速度设置
    '切换’键——切换显示状态
    *报警速度设置状态
    '上’键——加1 '下’键——减1
    '左’键/'右’键——更改设置选项
    '切换’键——确定
    *总里程设置状态
    '上’键/'下’键——清零
    '左’键/'右’键——更改设置选项
    '切换’键——确定
    4.采用DC002作为电源接口可直接输入5V给整个系统供电

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

    PCB :
    在这里插入图片描述

    主程序:

    #include  //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
    #include "main.h"
    
    unsigned long time_20ms; //定时计数
    char dis0[9];			 //液晶数组显示暂存
    char dis1[3];
    unsigned int setNum = 37; //设置值
    //---------------------------------------
    //Name: CALTEMP
    //Temperature data is T=(Data)*0.02-273.15
    //---------------------------------------
    
    bit disFlag = 0;		//更新显示标志
    unsigned int Tem;		//温度
    float objTemp, envTemp; //物体温度和环境温度
    
    void main(void)
    {
    	Timer0_Init(); //定时器0初始化
    
    	LCD_Init();	 //初始化液晶
    	DelayMs(20); //延时有助于稳定
    	LCD_Clear();
    
    	while (1) //主循环
    	{
        
            if (KEY_ADD == 0) //有按键按下
    		{
                DelayMs(150);
                if (KEY_ADD == 0) //按键1按下
                {
                    if (setNum < 200)
                        setNum++; //++
                }
    		}
            
            if (KEY_SUB == 0)
            {
                DelayMs(150);
                if (KEY_SUB == 0) //按键2按下
                {
                    if (setNum > 0)
                        setNum--; //--
                }
            }
        
    		if (disFlag == 1) //显示标志
    		{
    			Tem = ReadObjectTemp(); //读取实物温度
    			objTemp = (float)(Tem)*0.02 - 273.15;
    
    			Tem = ReadEnvironTemp(); //读取环境温度
    			envTemp = (float)(Tem)*0.02 - 273.15;
    
    			sprintf(dis0, "Env:%5.1f", envTemp); //打印环境温度
    			LCD_DispStr(0, 0, dis0); //显示
    			LCD_WriteData(0xDF);
    			LCD_WriteData('C');
    			LCD_DispStr(13, 0, "Set");
    			sprintf(dis0, "Obj:%5.1f", objTemp); //打印目标温度
    			LCD_DispStr(0, 1, dis0); //显示
    			LCD_WriteData(0xDF);
    			LCD_WriteData('C');
    			sprintf(dis1, "%3d", setNum); //打印温度设置值
    			LCD_DispStr(13, 1, dis1); //显示
    
    			if (objTemp > setNum)
    			{
    				BUZZER = 0;
    			} //温度高蜂鸣器鸣叫
    			else
    			{
    				BUZZER = 1;
    			} //温度低 停止
    			disFlag = 0;
    		}
    
    
    
    
    	}
    }
    
    void Timer0_Init()
    {
    	TMOD &= 0xF0;
    	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
    	TH0 = RH_10MS(2); //重新赋值 20ms
    	TL0 = RL_10MS(2);
    	EA = 1;	 //总中断打开
    	ET0 = 1; //定时器中断打开
    	TR0 = 1; //定时器开关打开
    }
    
    void Timer0_Interrupt() interrupt 1
    {
    	TH0 = RH_10MS(2); //重新赋值 20ms
    	TL0 = RL_10MS(2);
    	time_20ms++;
    	if (time_20ms >= 20) //定时更新显示
    	{
    		disFlag = 1;
    		time_20ms = 0;
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107

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

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

  • 相关阅读:
    计算机毕设(附源码)JAVA-SSM基于的校园卡管理系统
    web前端网页设计与制作:HTML+CSS旅游网页设计——桂林旅游(3页) web前端旅游风景网页设计与制作 div静态网页设计
    [HarekazeCTF2019]Avatar Uploader 1
    【云原生】kubectl常用命令大全
    【CSS in Depth 2 精译】1.6 本章小结
    ExpertPrompting:指导大语言模型成为杰出专家
    选择文档管理系统时的 5 个关键考虑因素
    初始 Docker【介绍以及安装】
    [附源码]计算机毕业设计SpringBoot游戏论坛网站
    ysoserial Java反序列化漏洞利用实践
  • 原文地址:https://blog.csdn.net/jimo167913/article/details/128012491