目录
一、主要功能
基于51单片机,三个电阻传感器链接ADC0832数模转换器分别代表扭矩、车速、电流。
如果扭矩不变,车速变小,L298N驱动电机速度加快,PWM调速
如果车速不变,扭矩越大,L298N驱动电机速度加快,PWM调速
如果扭矩方向发生变化,则电机方向发生改变
如果扭矩小于1N或车速大于90,电机不转
如果电流超过程序设置好的额定值,电机不转蜂鸣器报警
同时,扭矩,车速和电流通过LCD12864显示屏实时显示
仿真图:
编辑
二、硬件资源
基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。
本系统由51单片机、电流传感器、车速传感器、扭矩传感器、报警系统、L298N驱动电机模块、按键模块、LCD12864显示模块组成。
51单片机是一种非常常用的单片机系列,其主要硬件组成如下:
1. 中央处理器(CPU):51单片机的CPU采用哈佛架构,包括一个8位的ALU(算术逻辑单元)、8位的寄存器、PC(程序计数器)以及其他控制逻辑。它能够执行单片机上的指令和进行算术和逻辑运算。
2. 存储器:51单片机通常包含两种主要的存储器,即ROM(只读存储器)和RAM(随机访问存储器)。ROM用于存储程序代码和常量数据,它是只读的,不可修改。RAM用于存储临时数据和变量。
3. 输入输出(I/O)口:51单片机通常包含多个I/O口,用于与外部设备进行数据的输入和输出。每个I/O口都可以配置为输入或输出模式,并且可以通过读写寄存器来控制和访问。
4. 定时器和计数器:51单片机通常包含多个定时器和计数器,用于生成精准的时间延迟和定期中断。这些定时器和计数器可以用于测量时间、计数脉冲和生成脉冲。
5. 中断系统:51单片机通常支持中断功能,用于响应外部事件或特定条件的发生。当中断事件发生时,CPU将会中断当前的执行,转而执行相应的中断服务程序。中断能够提高系统的响应速度和效率。
6. 时钟:51单片机通常需要外部时钟源来提供基本的时钟信号,以驱动CPU执行指令。时钟信号的频率决定了单片机的工作速度和性能。
以上是51单片机的主要硬件组成,通过这些组件的协作,单片机能够完成各种任务,包括控制和处理数据、驱动外部设备、读写存储器等。
三、程序编程
/*全部代码看页尾*/
#include <REGX52.H>
#include<intrins.h>
#include<stdio.h>
#include < character.h >
#include < lcd.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; //扭矩
sbit CLK = P1^1;
sbit DIO = P1^2;
sbit CS1 = P3^5; //电流
sbit CLK1 = P3^6;
sbit DIO1 = P3^7;
sbit CS2 = P1^3; //车速
sbit CLK2 = P1^4;
sbit DIO2 = P1^5;
sbit Motor1_EN = P0^3;
sbit Motor1_IN1 = P0^0;
sbit Motor1_IN2 = P0^1;
sbit BEEP = P0^3;
sbit key = P1^6;
/*变量定义*/
static int number= 0 ,fz=0,flag=0,flag1=0;
static char dl,cs;
static signed int nj;
uchar count,a=0,b,c;
/*函数定义*/
void dlpd();
void cspd();
void njpd();
void ajpd();
/*
扭矩:
车速
电流
*/
void jiemian1(void)
{
Lcd\_Character\_16X16( 1, 0, 0 , function_logo\[0\]); // 扭
Lcd\_Character\_16X16( 1, 0, 16 ,function_logo\[1\]); // 矩
Lcd\_Character\_16X8 ( 1, 0,32,letter_logo\[nj/100\]);
Lcd\_Character\_16X8 ( 1, 0,40,letter_logo\[(nj/10)%10\]);
Lcd\_Character\_16X8 ( 1, 0,48,letter_logo\[nj%10\]);
Lcd\_Character\_16X16( 1, 2, 0 , function_logo\[2\]); // 车
Lcd\_Character\_16X16( 1,