51单片机的三维平台控制方案

合集下载

51单片机的毕业设计

51单片机的毕业设计

51单片机的毕业设计51单片机是一种非常常见的微控制器,广泛应用于各种电子设备和系统中。

它具有体积小、功耗低、性能稳定等优点,因此成为许多电子工程师和学生进行毕业设计的首选。

在进行51单片机的毕业设计之前,我们首先需要了解51单片机的基本原理和编程方法。

51单片机是由Intel公司推出的一款8位微控制器,它的核心是8051架构,具有128字节的RAM和4K字节的ROM。

通过编程,我们可以控制51单片机的输入输出口、定时器、中断等功能,实现各种电子设备的控制和处理。

在选择毕业设计的主题时,我们可以根据自己的兴趣和专业方向进行选择。

以下是几个常见的51单片机毕业设计主题:1. 智能家居控制系统:通过51单片机控制各种家居设备,如灯光、温度、门窗等,实现智能化的家居控制系统。

可以通过无线通信技术与手机或电脑进行远程控制和监控。

2. 智能车辆导航系统:利用51单片机控制车辆的导航、避障、自动驾驶等功能,实现智能化的车辆控制系统。

可以通过GPS、陀螺仪等传感器获取车辆的位置和姿态信息,实现精确的导航和定位。

3. 温湿度监测系统:通过51单片机采集环境中的温度和湿度数据,并通过LCD 显示屏或者无线通信技术将数据传输到手机或电脑上进行监测和分析。

可以应用于农业、气象等领域。

4. 智能安防系统:通过51单片机控制摄像头、红外传感器等设备,实现智能化的安防系统。

可以通过手机或电脑监控和控制家庭或办公室的安全。

5. 智能健康监测系统:通过51单片机采集人体的心率、血压、体温等数据,并通过无线通信技术将数据传输到手机或电脑上进行监测和分析。

可以应用于医疗、健康管理等领域。

在进行毕业设计时,我们需要进行详细的设计方案和实施步骤。

首先,我们需要确定设计的目标和功能,并进行系统的需求分析。

然后,根据需求分析的结果,进行硬件和软件的设计,包括电路设计、PCB设计和程序编写等。

接下来,我们需要进行系统的调试和测试,确保系统的稳定性和可靠性。

《2024年基于51单片机的温度控制系统设计与实现》范文

《2024年基于51单片机的温度控制系统设计与实现》范文

《基于51单片机的温度控制系统设计与实现》篇一一、引言在现代工业控制领域,温度控制系统的设计与实现至关重要。

为了满足不同场景下对温度精确控制的需求,本文提出了一种基于51单片机的温度控制系统设计与实现方案。

该系统通过51单片机作为核心控制器,结合温度传感器与执行机构,实现了对环境温度的实时监测与精确控制。

二、系统设计1. 硬件设计本系统以51单片机为核心控制器,其具备成本低、开发简单、性能稳定等优点。

硬件部分主要包括51单片机、温度传感器、执行机构(如加热器、制冷器等)、电源模块等。

其中,温度传感器负责实时监测环境温度,将温度信号转换为电信号;执行机构根据控制器的指令进行工作,以实现对环境温度的调节;电源模块为整个系统提供稳定的供电。

2. 软件设计软件部分主要包括单片机程序与上位机监控软件。

单片机程序负责实时采集温度传感器的数据,根据设定的温度阈值,输出控制信号给执行机构,以实现对环境温度的精确控制。

上位机监控软件则负责与单片机进行通信,实时显示环境温度及控制状态,方便用户进行监控与操作。

三、系统实现1. 硬件连接将温度传感器、执行机构等硬件设备与51单片机进行连接。

具体连接方式根据硬件设备的接口类型而定,一般采用串口、并口或GPIO口进行连接。

连接完成后,需进行硬件设备的调试与测试,确保各部分正常工作。

2. 软件编程编写51单片机的程序,实现温度的实时采集、数据处理、控制输出等功能。

程序采用C语言编写,易于阅读与维护。

同时,需编写上位机监控软件,实现与单片机的通信、数据展示、控制指令发送等功能。

3. 系统调试在完成硬件连接与软件编程后,需对整个系统进行调试。

首先,对单片机程序进行调试,确保其能够正确采集温度数据、输出控制信号。

其次,对上位机监控软件进行调试,确保其能够与单片机正常通信、实时显示环境温度及控制状态。

最后,对整个系统进行联调,测试其在实际应用中的性能表现。

四、实验结果与分析通过实验测试,本系统能够实现对环境温度的实时监测与精确控制。

基于STC51单片机光立方设计与实现

基于STC51单片机光立方设计与实现

毕业论文(设计)题目:基于STC51单片机的光立方设计与实现**:**学号:**********层次:本科专业:软件工程班级: 12级(13)班指导教师:***独创性声明一、本论文是本人独立完成;二、本论文没有任何抄袭行为;三、若有不实,一经查出,请答辩委员会取消本人答辩资格。

承诺人(签名):年月日摘要本设计使用51系列的单片机STC15F2K60S2作为整个设计的控制,每层的64个LED通过层共阴的形式连接起来。

每束的8个LED通过共阳的形式连接起来。

使用74HC593控制各束LED的阳极,使用ULN2803控制各层的阴极。

组成一个由512个LED、规格为8*8*8的立方体。

同时介绍了STC15F2K60S2、74HC573、ULN2803的使用方法及选用原因。

同时介绍了在调试过程中,遇到的软、硬件方面的问题以及解决方法。

对光立方的原理进行了详细的阐述,并详细的介绍了光立方在应用方面的意义。

关键词光立方;74HC593;STC15F2K60S2;ULN2803;LEDSummary This design uses 51 series microcontrollers STC15F2K60S2 as the control of the entire design, form each of 64 LED by connecting the common cathode layer. Each bundle of eight LED connected through common anode form. Use 74HC593 control each beam LED anode, cathode layers using ULN2803 control. Composition consisting 512 LED, specifications for the cube 8 * 8 * 8. Also introduced STC15F2K60S2,74HC573, ULN2803 to use and selection reasons. Also introduced the problem in the debugging process, encountered software and hardware and solutions. Light cube principle set forth in detail, and describes in detail the significance of light cube applications.Keywords light cube;74HC593;STC15F2K60S2;ULN2803;LED目录1 前言 (1)1.1研究的背景 (1)1.2研究的意义 (1)1.3研究内容和结构 (1)2 总体设计 (2)2.1 系统的设计方案及工作原理 (2)2.2 各模块元件选择 (3)2.2.1 控制模块元件的选择 (3)2.2.2 驱动模块元件的选择 (3)2.2.3 显示模块元件的选择 (4)3 硬件电路设计与实现 (4)3.1 硬件电路布局 (4)3.2 控制模块电路的设计 (5)3.2.1 单片机的说明及引脚规划 (5)3.2.2 电源电路的设计 (6)3.2.3 串口选择电路的设计 (6)3.2.4 程序下载及串口通信电路的设计 (7)3.3 驱动模块电路的设计 (7)3.3.1 ULN2803的说明及引脚规划 (7)3.3.2 74HC573的说明及引脚规划 (8)3.4 显示模块电路的设计 (9)3.5 光立方搭建方法 (9)3.5.1 弯折LED的引脚 (9)3.5.2 光立方的焊接 (11)3.5.3 元器件的焊接 (13)4 软件设计 (13)4.1显示程序的设计 (14)4.2 光立方的显示数据 (15)4.2.1 内置显示数据 (15)4.2.2 串口接收显示数据 (17)4.2.3 显示数据来源的选择 (18)4.3 显示数据的获取 (19)5 测试和问题分析 (20)6结论 (20)附录 (21)参考文献 (23)致谢语 (24)1 前言1.1研究的背景在高速的信息、商业发展过程中,LED点阵广告显示器得到了广泛的应用,LED 点阵显示屏已逐步取代传统的大尺寸纸质广告,在大街小巷常见的LED点阵显示屏都得益于LED灯的发明。

基于51单片机的步进电机控制系统设计与实现

基于51单片机的步进电机控制系统设计与实现

步进电机工作原理
步进电机是一种基于磁场的控制系统,工作原理是当电流通过定子绕组时,会 产生一个磁场,该磁场会吸引转子铁芯到相应的位置,从而产生一定的角位移。 步进电机的角位移量与输入的脉冲数量成正比,因此,通过控制输入的脉冲数 量和频率,可以实现精确的角位移和速度控制。同时,步进电机具有较高的分 辨率和灵敏度,可以满足各种高精度应用场景的需求。
二、系统设计
1、硬件设计
本系统主要包括51单片机、步进电机、驱动器、按键和LED显示等部分。其中, 51单片机负责接收按键输入并控制步进电机的运动;步进电机用于驱动负载运 动;驱动器负责将51单片机的输出信号放大,以驱动步进电机。LED显示用于 显示当前步进电机的状态。
2、软件设计
软件部分主要包括按键处理、步进电机控制和LED显示等模块。按键处理模块 负责接收用户输入,并根据输入控制步进电机的运动;步进电机控制模块根据 按键输入和当前步进电机的状态,计算出步进电机下一步的运动状态;LED显 示模块则负责实时更新LED显示。
三、系统实现
1、按键输入的实现
为了实现按键输入,我们需要在主程序中定义按键处理函数。当按键被按下时, 函数将读取按键的值,并将其存储在全局变量中。这样,主程序可以根据按键 的值来控制步进电机的转动。
2、显示输出的实现
为了实现显示输出,我们需要使用单片机的输出口来控制显示模块的输入。在 中断服务程序中,我们根据设定的值来更新显示模块的输出,以反映步进电机 的实时转动状态。
基于单片机的步进电机控制系统需要硬件部分主要包括单片机、步进电机、驱 动器、按键和显示模块等。其中,单片机作为系统的核心,负责处理按键输入、 控制步进电机转动以及显示输出等功能。步进电机选用四相八拍步进电机,驱 动器选择适合该电机的驱动器,按键用于输入设定值,显示模块用于显示当前 步进电机的转动状态。

51单片机PID算法程序(三)增量式PID控制算法

51单片机PID算法程序(三)增量式PID控制算法

51单片机PID算法程序(一)PID算法(原创文章,转载请注明出处/tengjingshu) 比例,积分,微分的线性组合,构成控制量u(t),称为:比例(Proportional)、积分(Integrating)、微分(Differentiation)控制,简称PID控制图1控制器公式在实际应用中,可以根据受控对象的特性和控制的性能要求,灵活地采用不同的控制组合,构成比例(P)控制器比例+积分(PI)控制器比例+积分+微分(PID)控制器式中或式中控制系统中的应用在单回路控制系统中,由于扰动作用使被控参数偏离给定值,从而产生偏差。

自动控制系统的调节单元将来自变送器的测量值与给定值相比较后产生的偏差进行比例、积分、微分(PID)运算,并输出统一标准信号,去控制执行机构的动作,以实现对温度、压力、流量、也为及其他工艺参数的自动控制。

比例作用P只与偏差成正比;积分作用I是偏差对时间的积累;微分作用D 是偏差的变化率;比例(P)控制比例控制能迅速反应误差,从而减少稳态误差。

除了系统控制输入为0和系统过程值等于期望值这两种情况,比例控制都能给出稳态误差。

当期望值有一个变化时,系统过程值将产生一个稳态误差。

但是,比例控制不能消除稳态误差。

比例放大系数的加大,会引起系统的不稳定。

图2比例(P)控制阶跃响应积分(I)控制在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

为了减小稳态误差,在控制器中加入积分项,积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。

这样,即使误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减少,直到等于零。

积分(I)和比例(P)通常一起使用,称为比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。

如果单独用积分(I)的话,由于积分输出随时间积累而逐渐增大,故调节动作缓慢,这样会造成调节不及时,使系统稳定裕度下降。

图3积分(I)控制和比例积分(PI)控制阶跃相应微分(D)控制在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。

51单片机的使用说明书

51单片机的使用说明书

使用说明书一、简介1.Embeded51Embeded51开发板采用国内常用的 51核心、管脚兼容的STC单片机,单板上即可实现烧写、调试、开发。

同时我们加入了一些基本入门模块比如:数码管显示、LED、掉电存储器、继电器等,目的是启发初学者,带领大家走入嵌入式开发殿堂!当然此板的功能绝对不局限于此。

本着开放的原则,我们开放了所有的 IO口和关键信号管脚,板上原有占用资源可以通过短路帽插拔轻松释放,大家可以发挥自己的想象和动手能力,在我们的基础平台上扩充自己的模块,打造属于自己的开发平台。

如果您能够在Embeded51平台上有所得,我们将会感到无比的欣慰与自豪!另外,我们也欢迎大家对现有平台提出改进建议。

2.试验内容板载资源试验● I/O口输入输出● LED实验●按键实验●单片机内部定时器操作●中断实验●串口通讯●继电器实验●掉电存储器实验●数码管动态扫描显示通过板载的开放 I/O口,您还可以自己扩展:RTC、温度传感器、LCD、蓝牙通讯、超声波、红外、电机驱动等等,只要你想一切皆有可能!二、板卡说明1. 板卡框架及功能说明⑴继电器模块⑵ USB-RS232转换(下载、串口通讯)⑶掉电存储器⑷按键⑸四位数码管显示(共阴数码管)⑹板载资源选择⑺单片机(51核心、管脚兼容、功能兼容)⑻端口开放区⑼端口开放区⑽板卡供电(USB、电源适配器可选)⑾电源开关⑿ LED2. 接口说明1.1供电板卡提供 USB供电和电源适配器 2种方式,电源输入 DC5V,USB接口既提供了电源同时也作为通讯口。

电源开关负责电源通断,电源指示灯指示板卡是否在有电状态。

1.2扩展口经典 51核心单片机提供四组 32个 I/O口,板卡上将这四组 32个端口全部开放出来,为您提供稳定、方便的单片机开发基础系统,您可以插上想象的翅膀扩展您想要的任何模块。

1.3继电器接口接口采用 5.08工业插头,提供弱电控制强电的功能。

1.4跳线区板载基本功能模块可以通过短路帽选择是否连通,基础实验时可以选择连通,方便验证试验结果,以后可以拔去短路帽自己扩展想要的功能模块。

专科 51单片机毕业设计

专科 51单片机毕业设计

专科 51单片机毕业设计
51单片机是一种常用的微控制器,常用于嵌入式系统的设计
和开发。

以下是几个可行的51单片机毕业设计项目:
1. 温湿度监测系统:设计一个基于51单片机的温湿度传感器,可采集环境的温湿度数据,并将数据通过LCD显示出来。

2. 智能家居系统:设计一个基于51单片机的智能家居系统,
包括温度控制、灯光控制、电器控制等功能,可通过手机
APP进行控制。

3. 智能道路交通信号灯控制系统:设计一个基于51单片机的
交通信号灯控制系统,通过车辆和行人的传感器信号,实现智能的信号灯控制。

4. 智能车辆防盗系统:设计一个基于51单片机的车辆防盗系统,包括车辆定位、警报器等功能,可以通过手机APP进行
防盗系统的控制和监控。

5. 智能农业监控系统:设计一个基于51单片机的智能农业监
控系统,包括土壤湿度监测、光照强度监测、温度等传感器,通过采集的数据实现对农作物的智能监控和管理。

这些都是一些基于51单片机的毕业设计项目,具体选择哪一
个项目需要根据个人兴趣和专业背景来决定。

51单片机PID算法程序(三)增量式PID控制算法解读

51单片机PID算法程序(三)增量式PID控制算法解读
图1
控制器公式
在实际应用中,可以根据受控对象的特性和控制的性能要求,灵活地采用不同的控制组合,构成
比例(P)控制器
比例+积分(PI)控制器
比例+积分+微分(PID)控制器
式中
或ቤተ መጻሕፍቲ ባይዱ
式中
控制系统中的应用
在单回路控制系统中,由于扰动作用使被控参数偏离给定值,从而产生偏差。自动控制系统的调节单元将来自变送器的测量值与给定值相比较后产生的偏差进行比例、积分、微分(PID)运算,并输出统一标准信号,去控制执行机构的动作,以实现对温度、压力、流量、也为及其他工艺参数的自动控制。
T ——采样周期。
如果采样周期足够小,则(2-4)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。
51单片机PID算法程序(一)PID算法
(原创文章,转载请注明出处/tengjingshu)
比例,积分,微分的线性组合,构成控制量u(t),称为:比例(Proportional)、积分(Integrating)、微分(Differentiation)控制,简称PID控制
(图1,表1)
2)Atmel8-bit AVR Microcontrollers Application Note:AVR221: Discrete PID controller
(图2,图3,图4,图5,表2)
3)使用Ziegler-Nichols方法的自整定控制
/2007-03/200733042815.htm
最好的寻找PID参数的办法是从系统的数学模型出发,从想要的反应来计算参数。很多时候一个详细的数学描述是不存在的,这时候就需要实际地调节PID的参数.
Ziegler-Nichols方法

51单片机PID算法程序(三)增量式PID控制算法

51单片机PID算法程序(三)增量式PID控制算法

51单片机PID算法程序(三)增量式PID控制算法当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID 的“增量算法”。

增量式PID控制算法可以通过(2-4)式推导出。

由(2-4)可以得到控制器的第k-1个采样时刻的输出值为:(2-5)将(2-4)与(2-5)相减并整理,就可以得到增量式PID控制算法公式为:(2-6)其中由(2-6)可以看出,如果计算机控制系统采用恒定的采样周期T,一旦确定A、B、C,只要使用前后三次测量的偏差值,就可以由(2-6)求出控制量。

增量式PID控制算法与位置式PID算法(2-4)相比,计算量小得多,因此在实际中得到广泛的应用。

位置式PID控制算法也可以通过增量式控制算法推出递推计算公式:(2-7)(2-7)就是目前在计算机控制中广泛应用的数字递推PID控制算法。

增量式PID控制算法C51程序/*==================== =====================================================PID FunctionThe PID (比例、积分、微分) function is used in mainlycontrol applications. PIDCalc performs one iteration of the PIDalgorithm.While the PID function works, main is just a dummy program showinga typical usage.==========================================================================*/typedef struct PID{int SetPoint; //设定目标 Desired Valuelong SumError; //误差累计double Proportion; //比例常数 Proportional Constdouble Integral; //积分常数 Integral Constdouble Derivative; //微分常数 Derivative Constint LastError; //Error[-1]int PrevError; //Error[-2]} PID;static PID sPID;static PID *sptr = &sPID;/*================================================================================ Initialize PID Structure PID参数初始化===============================================================================*/ void IncPIDInit(void){sptr->SumError = 0;sptr->LastError = 0; //Error[-1]sptr->PrevError = 0; //Error[-2]sptr->Proportion = 0; //比例常数 Proportional Constsptr->Integral = 0; //积分常数Integral Constsptr->Derivative = 0; //微分常数 Derivative Constsptr->SetPoint = 0;}/*=============================================================================== 增量式PID计算部分=================================================================================*/ int IncPIDCalc(int NextPoint){register int iError, iIncpid; //当前误差iError = sptr->SetPoint - NextPoint;//增量计算iIncpid = sptr->Proportion * iError //E[k]项- sptr->Integral * sptr->LastError //E[k-1]项+ sptr->Derivative * sptr->PrevError; //E[k-2]项//存储误差,用于下次计算sptr->PrevError = sptr->LastError;sptr->LastError = iError;//返回增量值return(iIncpid);}。

基于51单片机的电梯智能控制系统设计与实现

基于51单片机的电梯智能控制系统设计与实现

基于51单片机的电梯智能控制系统设计与实现电梯智能控制系统是一种基于微控制器的设计,它的主要目的是帮助电梯自动化运行并保证运行的安全性。

本文将介绍基于51单片机的电梯智能控制系统的设计和实现。

一、电梯智能控制系统的设计思路若要设计一款电梯智能控制系统,我们需要考虑以下方面:1. 电梯的联动性:我们需要让电梯在呼叫系统和在楼层之间进行联动通信,从而实现自动化操作。

2. 速度控制器:电梯的电控系统中应该包括速度控制器以及对所有电动机和电脑设备的功率管理。

3. 安全保障:此类系统应该包括底层的传感器和控制器,以预防电梯陷入危险的情况。

基于这些方面,我们可以设计出以下的电梯智能控制系统:1. 位于每个楼层的面板将包括两个按钮:上行/下行和电梯呼叫。

2. 每个电梯都有自己的控制器,可以预测每个乘客的目标楼层以及电梯运动的方向。

3. 运动速度应该根据电梯的位置或者方向进行控制。

当电梯靠近楼层之后,速度应该降低并使电梯到达目的地。

4. 当电梯遇到紧急情况,如被卡住或者有人挡住,控制器应该立即响应并阻止电梯运动,避免任何可能危险的事件发生。

二、电梯智能控制系统的硬件设计以下是电梯智能控制系统的基本硬件设计:1. 单片机:电梯智能控制系统需要恰当的单片机来控制每个电梯的速度和位置,同时实现通信功能。

在本例中,我们使用51单片机。

2. 传感器:控制电梯位置和速度的传感器包括霍尔传感器和光电传感器。

3. 驱动器:驱动器是一种组件,可以调节电器负载的功率流量。

在电梯中,我们使用电动机和变频器驱动器来控制电梯的运动。

4. LED 显示器:该显示器用于指示电梯的运动状态,例如方向的指示灯、上行/下行箭头、电梯当前位置的数字等。

5. 按钮面板:面板应该在每个楼层提供上行/下行按钮和呼叫按钮,以允许乘客控制电梯。

三、电梯智能控制系统的软件设计以下是电梯智能控制系统的基本软件设计:1. 定时器:使用定时器来控制每个电梯的位置和速度,例如电梯到达楼层时,应该停止电梯并允许乘客离开或进入电梯。

基于51单片机的温控系统设计

基于51单片机的温控系统设计

基于51单片机的温控系统设计1.引言1.1 概述概述部分的内容可以包括以下几个方面:温控系统是一种广泛应用于各个领域的实时温度控制系统。

随着科技的发展和人们对生活质量的要求提高,温控系统在工业、家居、医疗、农业等领域得到了广泛应用。

温度作为一个重要的物理量,对于许多过程和设备的稳定运行至关重要。

因此,设计一种高效可靠的温控系统对于提高工作效率和产品质量具有重要意义。

本文将基于51单片机设计一个温控系统,通过对系统的整体结构和工作原理的介绍,可以深入了解温控系统在实际应用中的工作机制。

以及本文重点研究的51单片机在温控系统中的应用。

首先,本文将介绍温控系统的原理。

温控系统的核心是温度传感器、控制器和执行器三部分组成。

温度传感器用于实时检测环境温度,通过控制器对温度数据进行处理,并通过执行器对环境温度进行调节。

本文将详细介绍这三个组成部分的工作原理及其在温控系统中的作用。

其次,本文将重点介绍51单片机在温控系统中的应用。

51单片机作为一种经典的微控制器,具有体积小、功耗低、性能稳定等优点,广泛应用于各种嵌入式应用中。

本文将分析51单片机的特点,并介绍其在温控系统中的具体应用,包括温度传感器的数据采集、控制器的数据处理以及执行器的控制等方面。

最后,本文将对设计的可行性进行分析,并总结本文的研究结果。

通过对温控系统的设计和实现,将验证51单片机在温控系统中的应用效果,并对未来的研究方向和发展趋势进行展望。

通过本文的研究,可以为温控系统的设计与应用提供一定的参考和指导,同时也为利用51单片机进行嵌入式系统设计的工程师和研究人员提供一定的技术支持。

1.2文章结构文章结构部分的内容可以包含以下内容:文章结构部分旨在介绍整篇文章的组织结构和各个部分的内容。

本篇文章基于51单片机的温控系统设计,总共分为引言、正文和结论三部分。

引言部分主要包括概述、文章结构和目的三个小节。

首先,概述部分介绍了本文的主题,即基于51单片机的温控系统设计。

51单片机原理及应用基于KeilC与Proteus教学设计 (2)

51单片机原理及应用基于KeilC与Proteus教学设计 (2)

51单片机原理及应用基于KeilC与Proteus教学设计摘要本文主要介绍了基于KeilC与Proteus平台的51单片机原理及应用的教学设计,旨在帮助初学者更好的了解单片机编程的基本原理,以及如何使用KeilC和Proteus平台进行单片机的开发和调试。

本文包括了单片机的基本原理、汇编语言的基础知识、C语言编程基础、KeilC和Proteus平台的基本使用方法,以及基于这些知识实现的一些实例设计,可以帮助读者在实践中更好的理解单片机编程的基本原理。

1. 51单片机的基本原理51单片机是一种基于CISC架构的8位单片机,由Intel公司于1980年推出,具有高速、低功耗、易于编程等优点,被广泛应用于嵌入式系统中。

51单片机由CPU、存储器、IO口和时钟电路等组成,其中CPU采用Harvard结构,能够同时访问程序存储器和数据存储器,具有较好的执行效率。

2. 汇编语言的基础知识汇编语言是学习单片机编程最基本的知识之一,其主要作用是将人类能够理解的代码翻译成机器可以执行的指令。

汇编语言的学习包括了数据类型、指令集、寻址方式等内容,通过学习这些内容,能够更好的理解单片机编程的基本原理。

3. C语言编程基础C语言是一种高级编程语言,与汇编语言相比具有易学易用等优点。

在单片机编程中,C语言可以更好的实现程序设计的模块化,增强代码的可读性和可维护性。

C语言编程基础知识包括数据类型、语句控制结构、数组、指针等,通过学习这些内容,能够更好的进行单片机编程。

4. KeilC和Proteus平台的基本使用方法KeilC和Proteus是进行单片机编程、仿真和调试的常用工具,能够有效地辅助开发者进行单片机开发。

KeilC是一款集成开发环境,支持多种语言的编程,可用于单片机程序的开发和调试;Proteus是一款电子电路仿真软件,能够进行单片机程序的仿真和调试。

通过学习KeilC和Proteus平台的基本使用方法,能够更好的进行单片机编程。

第2章 MCS-51单片机的结构和原理

第2章 MCS-51单片机的结构和原理

89C51/S51单 片机 内部结构图
RAM地址 寄存器
存储器
P0.0-P0.7 P0驱动器
P2.0-P2.7 I/O接口
P2驱动器
128B RAM
P0锁存器
P2锁存器
4KBROM
程序地址 寄存器
B寄存器 运算器
暂存器1
暂存器2
ACC
SP 缓冲器
ALU
PC增1 中断、串行口和定时器 PSW PC
DPTR
DSP芯片的诞生及发展对近20年来通信、计算机、控制
等领域的技术发展起到十分重要的作用。
典型的DSP算法
Algorithm Finite Impulse Response Filter Equation
y(n)
a
k 0
M
M
k
x( n k )
Infinite Impulse Response Filter
8051片内有ROM(程序存储器,只能读)和RAM(数据存储器, 可读可写)两类,它们有各自独立的存储地址空间,与一般微机
的存储器配臵方式不同。
8051有四个8位并行接口,即P0-P3.它们都是双向端口,每 个端口各有8条I/O线,均可输入/输出。P0-P3口四个锁存器同 RAM统一编址,可以把I/O口当作一般特殊功能寄存器来寻址
冯· 诺曼(Van Neuman)结构
控制命令 程序存储器 地址线
CPU
数据存储器
数据线
哈佛结构 控制命令 地址线 程序总线 程序存储器
CPU
控制命令 地址线 数据总线
数据存储器
8051/8751/8031芯片的外部引脚和指令系统完全兼容,其 内部结构除ROM/EPROM不同外,其余完全相同。

毕业设计51单片机开发版设计

毕业设计51单片机开发版设计

目录第一章引言 (3)第二章硬件设计 (4)2.1设计原则 (4)2.2 AT89S51单片机主控制模块 (5)2.3 键盘模块 (5)2.4 ADC模块 (6)2.5 DAC模块 (7)2.6温度采集模块 (7)2.7显示模块 (8)2.8其他模块 (9)第三章软件设计 (10)3.1 键盘模块程序设计 (11)3.2 ADC模块程序设计 (12)3.3 DAC模块程序设计 (12)3.4温度采集模块程序设计 (13)3.5数码管显示模块程序设计 (14)致谢 (16)参考文献 (17)附录 (18)附录1 键盘模块部分程序 (18)附录2 AD模块部分程序 (19)附录3 DA模块部分程序 (21)附录4 测温模块部分程序 (22)摘要:设计一种基于AT89S51单片机的开发板,该开发板具有成本低、体积小、可靠性高、功能齐全、低功耗设计、操作方便等特点。

本论文详细介绍了该开发板的开发过程及相关硬件结构和软件设计。

开发板以ATMEL公司的AT89S51单片机为核心控制器。

开发板可以作为主控制模块安装于控制系统中执行控制任务,也可以用作实验板,完成单片机各类通用实验,操作简单,控制结果可见,性价比高,可以应用于高校、科研院所的实验室等场合,具有一定的实用价值和现实意义。

关键词:AT89S51;液晶显示;键盘2基于单片机的最小系统设计第一章引言单片机具有成本低、体积小、可靠性高、具有高附加值、通过更改软件就可以改变控制对象等优点,单片机越来越成为电子工程师设计产品时的首选器件之一。

因此拥有一块单片机开发板对单片机学习具有着极其重要的意义。

但是单片机学习效果的优劣直接取决于单片机的选择,C51系列单片机内部具有128字节RAM、5个中断源、32条I/O口线、2个16位定时器、4KB的程序存储器、一个全双工异步串行口。

本开发板选择具有ISP在线编程功能的AT89S51单片机,该单片机不需要烧写器,可在开发板上ISP在线编程,具有广泛的应用前景。

基于51单片机的温度控制系统设计与实现

基于51单片机的温度控制系统设计与实现

基于51单片机的温度控制系统设计与实现1. 系统设计概述温度控制系统是智能控制领域中的一个重要领域,主要应用于各种工业生产、制冷空调、农业温室等领域。

本文主要介绍基于51单片机的温度控制系统。

2. 系统硬件设计系统硬件设计主要分为两部分:传感器采集部分和控制执行部分。

其中传感器采集部分主要采用DS18B20数字温度传感器,控制执行部分则主要采用继电器进行控制。

3. 系统软件设计系统软件设计主要采用C语言进行编程实现。

具体包括温度采集、PID算法控制以及控制执行等功能。

4. 温度采集部分设计温度采集部分采用DS18B20数字温度传感器进行温度采集。

该传感器具有传输速度快、采集精度高等特点。

系统采用单总线模式进行控制,通过读取传感器中的温度数据并进行运算,得到当前温度值。

5. 基于PID算法的控制设计本系统采用PID算法进行控制,具体包括比例控制、积分控制和微分控制。

其中比例控制主要控制温度的偏差,积分控制主要控制温度的稳定性,微分控制主要控制温度的变化率。

6. 控制执行部分设计控制执行部分主要采用继电器进行控制。

当温度值达到设定值时,单片机通过控制继电器的开关状态来控制制冷或制热设备的开关。

7. 系统测试与优化在设计完整的软硬件系统后,需进行系统测试以得到有效的控制效果。

在测试过程中,发现系统存在延迟现象,需要对算法进行优化,以提高系统响应速度和稳定性。

8. 总结基于51单片机的温度控制系统具备采集精度高、响应速度快、控制稳定等特点,能够广泛应用于各种不同的领域。

但是在实践中,还需针对不同领域实际情况进行优化和调整,以提高系统效率和稳定性。

基于51单片机的步进电机控制系统设计与实现

基于51单片机的步进电机控制系统设计与实现

基于51单片机的步进电机控制系统设计与实现步进电机控制系统是基于51单片机的一种控制系统,它主要用来控制步进电机的转动方向和转速等参数。

下面详细解释一下这个系统的设计和实现。

1. 系统硬件设计步进电机控制系统的硬件主要包括51单片机、驱动电路、步进电机和电源等部分。

其中,驱动电路是控制步进电机的关键,它通常采用L298N芯片或ULN2003芯片等常用的驱动模块。

在硬件设计方面,主要需要考虑以下几个方面:(1)步进电机的种类和规格,以便选择合适的驱动电路和电源。

(2)驱动电路的接线和参数设置,例如步进电机的相序、脉冲频率和电流大小等。

(3)电源的选取和参数设置,以满足系统的供电要求和安全性要求。

2. 系统软件设计步进电机控制系统的软件设计主要包括编写控制程序和调试程序。

其中,控制程序是用来实现步进电机的正转、反转、加速和减速等控制功能,而调试程序则用来检测系统的电路和程序的正确性和稳定性。

在软件设计方面,主要需要考虑以下几个方面:(1)确定控制程序的算法和流程,例如使用“循环控制法”或“PID控制法”等控制方法。

(2)选择编程语言和编译器,例如使用汇编语言或C语言等。

(3)编写具体的控制程序和调试程序,并进行测试和调试,以确保程序的正确性和稳定性。

3.系统实现步进电机控制系统的实现主要包括硬件组装和软件烧录两个部分。

在硬件组装方面,需要按照硬件设计图纸进行零部件的选取和电路的组装,同时进行电源和信号线的接入。

在软件烧录方面,需要使用专用的编程器将程序烧录到51单片机的芯片中,并进行相应的设置和校验。

总之,基于51单片机的步进电机控制系统是一个功能强大、应用广泛的控制系统,可以实现精密控制和自动化控制等多种应用,具有很高的实用价值和研究价值。

基于51单片机的温度控制系统设计与实现

基于51单片机的温度控制系统设计与实现

基于51单片机的温度控制系统设计与实现一、本文概述本文旨在探讨基于51单片机的温度控制系统的设计与实现。

随着科技的快速发展,温度控制在各个领域都扮演着至关重要的角色,如工业生产、家庭生活、医疗设施等。

传统的温度控制系统大多依赖于复杂的硬件设备和昂贵的软件平台,而基于51单片机的温度控制系统则以其低成本、高性能和易于实现等优点,逐渐受到广大工程师和研究者的青睐。

本文将首先介绍51单片机的基本原理和特点,为后续的设计和实现奠定理论基础。

接着,我们将详细阐述温度控制系统的总体设计方案,包括硬件选择和软件设计思路。

在此基础上,我们将重点讨论如何实现温度采集、处理和控制的功能,包括传感器的选择、信号调理、A/D 转换、控制算法的实现等。

本文还将探讨温度控制系统的稳定性、可靠性和实时性等问题,并提出相应的优化措施。

通过实际应用的案例,我们将展示基于51单片机的温度控制系统在实际工作中的表现,并评估其性能。

本文将对基于51单片机的温度控制系统的设计和实现进行总结,并提出未来改进和发展的方向。

我们希望通过本文的探讨,能够为相关领域的研究者和工程师提供一些有益的参考和启示。

二、51单片机基础知识51单片机,又称8051微控制器,是由Intel公司在1980年代初推出的一款8位单片机。

由于其结构简单、功能完善、可靠性高且价格适中,51单片机在嵌入式系统领域一直占据重要地位。

尽管现在市面上已经出现了许多性能更强、功能更丰富的单片机,但51单片机由于其广泛的应用基础和良好的教学价值,仍然是许多初学者和工程师的首选。

51单片机的核心结构包括中央处理器(CPU)、4KB的ROM(只读存储器)、128B的RAM(随机存取存储器)、两个16位的定时器/计数器、四个8位的并行I/O口、一个全双工串行通信口以及一个中断控制系统。

它还具有一个5向量的两级中断结构,能够实现简单的中断处理。

51单片机采用冯·诺依曼结构,即指令和数据都存储在同一个存储器中,通过指令操作码的不同来实现不同的功能。

基于51单片机的光立方设计毕业设计

基于51单片机的光立方设计毕业设计

毕业设计基于51单片机的光立方设计*名:***学号: ********班级: 10信科一班专业:信息科学与技术所在系:电子信息工程系指导教师:**基于51单片机的光立方设计摘要本文详细的介绍了光立方的搭建过程,以51系列的单片机STC12C5A60S2为主要的控制芯片,由512个LED通过共阴的形式连接起来,由74HC595为扩展单片机的I/O口,用ULN2803为驱动电路,形成一个规格为8*8*8(长,宽,高)14cm*14cm*20cm立方体,还介绍了这款芯片的特点和使用方法及在调试过程中遇到的软件和硬件方面的问题及解决方法,详细的阐述了光立方的设计原理和架构方法,对光立方目前存在的意义也进行了详细的介绍。

关键词:光立方;74HC595;单片机;ULN2803;LEDLight CuBe Based on 51 single ChiP miCroComPuterABstraCtThis PaPer introduCes the ProCess of Building Light CuBe, with 51 Series MCUSTC12C5A60S2 as the main Control ChiP, ConneCted By 512 LED By CO Yin form, By74HC595 for the exPansion of the MCU I/O Port, using ULN2803 as the drive CirCuit, the formation of a sPeCifiCation for 8*8* 8 (length, width, height) the 14Cm*14Cm*20Cm CuBe, also introduCes the CharaCteristiCs and methods of use of the ChiP and software and hardware in the ProCess of deBugging ProBlems and solutions, desCriBed in detail the design PrinCiPle and arChiteCture method Light CuBe, the CuBe existed at Present signifiCanCe have also Been introduCed in detail.Keywords:Light CuBe; 74HC595; STC12C5A60S2; ULN2803; LED目录摘要 ................................................................................................................................... 错误!未定义书签。

基于51单片机的课程设计

基于51单片机的课程设计

摘要 (2)第1章概述 (3)1.1ADC0832调节频率输入实现的意义 (3)第2章频率计实现的理论分析 (3)2.1ADC0832调节频率输出的基本结构和原理 (3)第3章单片机基础与芯片使用 (4)3.1单片机介绍 (4)3.2ADC0832介绍和时序使用 (7)第4章系统方案设计及实现 (11)4.1单片机选取 (11)4.2系统硬件结构图 (13)4.3各模块的实现 (13)4.4软件的实现 (15)4.5功能调试 (24)结束语 (26)参考文献 (27)致谢 (28)“ADC0832控制频率输出”实质上是运用可调电阻反馈电压模拟量输入到ADC0832中输出数字量。

应用数字量填充单片机定时器初值,可产生中断从而实现电平转换,接到示波器上可观察方波的输出,由数码管直观的看出电平变化频率。

设计的关键在于数模转换,这个由ADC0832来实现,所以可以比较容易得到一个可控制的频率计。

本文以单片机的实际应用为背景,介绍了以单片机为核心ADC0832控制频率输出设计的基本结构和基本原理。

关键词:单片机;ADC0832;数模转换Abstract"ADC0832 control frequency output" is actually using the adjustable resistorfeedback analog voltage input to the ADC0832 digital output. Application ofdigital single-chip timer initial filling, can generate an interrupt to realize the conversion level, received the oscilloscope can observe Fang Bo's output, by the digital tube directly see level change frequency. The key lies in the design of digital to analog conversion, this is implemented by ADC0832, so it can be easily obtained a controlled frequency meter.Based on the background of the practical application of SCM, SCM introduced to the basic structure of frequency output control design of the core and basic principle of ADC0832.Keyword: MCU; ADC0832; digital to analog conversion第1章概述1.1 ADC0832调节频率输入实现的意义应用ADC0832和可调电阻,由可调电阻反馈电压模拟量输入到中输出数字量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于52单片机的三维平台控制技术方案目录1.系统总体设计思路 (2)2.系统硬件部分具体实现 (2)2.1主控制模块的设计与实现 (2)2.2驱动电路的设计与实现 (5)2.3显示电路的设计与实现 (7)2.4键盘电路的设计与实现 (8)2.5测速模块的设计与实现 (9)2.6限位反馈电路的设计与实现 (9)3.系统软件部分具体实现 (10)附录 (13)附录1:源代码 (13)附录2:单片机控制板原理图 (27)附录3:THB7128驱动板原理图 (28)附录4:单片机控制板元件清单 (29)附录5:THB7128驱动板元件清单 (30)1.系统总体设计思路本系统采用STC89C52单片机对三维平台上三个步进电机进行控制,初步实现的功能有:系统启动与停止控制,三轴联动,三轴的加、减速控制,三轴正、反转控制,X轴的启动与停止控制、X轴与Y轴的限位控制、三轴的转速检测与显示,最高1/128电流细分等功能,其系统框图如图1.1所示:图1.1 三维平台步进电机控制系统框图2.系统硬件部分具体实现2.1主控制模块的设计与实现本设计选用STC89C52单片机作为主控制模块。

STC89C52单片机是一种低功耗、高性能CMOS 8位微控制器,具有8K可编程Flash存储器,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,全双工串行口。

STC89C52单片机作为主控芯片,在本设计中主要实现以下几个工作:(1)接收矩阵键盘输入的控制信号;(2)输出PWM脉冲控制三轴步进电机工作,包括输出PWM脉冲信号和方向信号;(3)处理给定转速信号和测速反馈转速信号;(4)在八个八段数码管上显示电机的给定转速和实时转速;(5)接收限位反馈并做逻辑判断;主控制器的引脚分配表如表1.1所示:重庆邮电大学堂下考试答卷主控制器原理图,如图2.1.1所示:图2.1.1 主控制器原理图2.2驱动电路的设计与实现驱动电路采用THB712步进电机驱动芯片对三位平台上的三个步进电机进行驱动。

THB7128是一款专业的两相步进电机驱动芯片,它内部集成了细分、电流调节、CMOS 功率放大等电路,配合外围电路可实现高性能、多细分、大电流的驱动电路。

其主要参数和性能指标如下:• 单芯片两相细分步进电机驱动;• 直接采用单脉冲和方向信号译码控制模式; • 双全桥MOSFET 驱动,低导通电阻0.53on R =Ω; • 可实现正反转控制;• 通过3位选择8档细分控制(1,1/2,1/4,1/8,1/16,1/32,1/64,1/128); • 最高耐压40V DC ; • 高输出电流 3.3out I A =; • HZIP19封装; • 有复位和使能管脚;• 芯片内部有过热保(TSD)和过流检测电路。

驱动器细分设定(M1、M2、M3)如表2.2.1所示。

表2.2.1 驱动器细分设定2.3显示电路的设计与实现本设计采用八个八段数码管实现转速显示功能,其中高4位数码管为给定转速显示,通过编程实现X、Y、Z三轴转速循环显示,低4位数码管为测速反馈的转速显示,显示方式同高4位。

STC89C52单片机内部采用查表法对转速信号进行数值处理,通过P2.0~P2.7口输出段选信号,通过P1.0~P1.2输出3路位选信号到74HC138中,通过3-8译码器对八个八段数码管进行选择。

具体显示模块的硬件电路如图2.3.1所示:图2.3.1 显示模块的硬件电路2.4键盘电路的设计与实现本设计中的键盘电路采用“4*4”矩阵键盘,采用键盘扫描的方式对按键信号进行捕获,并输入到STC89C52单片机的P0口中。

具体键盘功能如表2.4.1所示。

表2.4.1 矩阵键盘功能2.5测速模块的设计与实现本设计采用E6B2-CWZ6C光电编码器对三轴步进电机的转速进行实时检测,并反馈到单片机中用作转速的实时显示。

E6B2-CWZ6C光电编码器有以下特点:•对应电源电压DC 5~24V;•外径 40具备2000P/R的分辨率;•具备使Z相对简单化的原点位置显示功能;•实现轴负重、径向30N、推力相20N;•附有逆接、负荷短路保护回路,改善了可靠性。

E6B2-CWZ6C的输出方式为NPN集电极开路输出方式,共有红、白、橙三路转速信号输出,本设计中只采用其一路测速信号输入到单片机的外部中断口或T1计数器外部脉冲输入端进行转速检测。

E6B2-CWZ6C内部结构如图2.5.1所示:图2.5.1 E6B2-CWZ6C内部结构2.6限位反馈电路的设计与实现限位开关工作原理是,当三维平台没有接近限位开关时,限位开关输出为高电平;当三维平台接近限位开关时,限位开关输出为低电平;利用单片机I/O口去捕获限位开关输出电平,当限位开关输出为低电平时,控制电机方向信号,使电机反转。

本设计中限位开关是采用LJ8A3-1-Z型,实物如图2.6.1所示。

图2.6.1 限位开关实物图3.系统软件部分具体实现STC89C52单片机内部共有三个定时器/计数器资源分别是T0、T1、T2,两个外部中断输入口INT0和INT1,本设计中单片机的内部资源分配如表3.1所示。

表3.1 单片机内部资源分配:系统工作程序流程图如图3.1所示:图3.1 系统工作程序流程图转速检测模块程序流程图如图3.2所示:图3.2 转速检测模块程序流程图限位检测模块程序流程图如图3.3所示:图3.3 限位检测模块程序流程图附录附录1:源代码#include<reg52.h>#include <intrins.h>/*I/O口分配*/sbit cp_x=P3^5; //驱动脉冲信号输出xsbit cp_y=P3^6; //驱动脉冲信号输出ysbit cp_z=P3^7; //驱动脉冲信号输出zsbit fx_x=P1^3; //x轴方向信号sbit fx_y=P1^4; //y轴方向信号sbit fx_z=P1^5; //z轴方向信号sbit x_xianwei1=P1^6; //x轴限位sbit x_xianwei2=P1^7; //x轴限位sbit y_xianwei1=P3^0; //y轴限位sbit y_xianwei2=P3^1; //y轴限位sbit LHJ_A = P1^0; //74HC138(3-8)译码器输入控制信号线sbit LHJ_B = P1^1;sbit LHJ_C = P1^2;sfr T2MOD=0xC9; //T2定时器工作模式unsigned char x_speed=8,y_speed=8,z_speed=8; //给定x,y,z三轴初始化转速unsigned char count_x=0,count_y=0,count_z=0; //记录三轴给定脉冲数变量unsigned int collect_x=0,collect_y=0,collect_z=0; //三轴测速脉冲数存储变量unsigned char t1_flag=0,t2_flag=0,t3_flag=0,t4_flag=0; //定时器T1 10ms标志位unsigned int x_tmpdate[8]={0,0,0,0,0,0,0,0};//定义数组变量unsigned int y_tmpdate[8]={0,0,0,0,0,0,0,0};unsigned int z_tmpdate[8]={0,0,0,0,0,0,0,0};code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管 0-9 a-f 表/**********************数码管位选****************************/#define SMG_1 LHJ_C=0;LHJ_B=0;LHJ_A=0 //译码器的输入脚,全0选择第一位数码管。

#define SMG_2 LHJ_C=0;LHJ_B=0;LHJ_A=1 //译码器的输入脚,001选择第二位数码管。

#define SMG_3 LHJ_C=0;LHJ_B=1;LHJ_A=0#define SMG_4 LHJ_C=0;LHJ_B=1;LHJ_A=1#define SMG_5 LHJ_C=1;LHJ_B=0;LHJ_A=0#define SMG_6 LHJ_C=1;LHJ_B=0;LHJ_A=1#define SMG_7 LHJ_C=1;LHJ_B=1;LHJ_A=0#define SMG_8 LHJ_C=1;LHJ_B=1;LHJ_A=1void keyscan(void); //扫描键盘void delay(void) //延时子函数,5个空指令{_nop_();_nop_();_nop_();_nop_();_nop_();}void init(){fx_x=1;fx_y=1;fx_z=1;TL1=(65536-50000)%256;TH1=(65536-50000)/256;TL0=(65536-1)%256;TH0=(65536-1)/256;TMOD=0x15;T2MOD=0x00;T2CON=0x00;IP=0x20; //外部中断0和外部中断1设置优先级IT0=1; //外部中断0为下降沿触发IT1=1; //外部中断1为下降沿触发EX0=1; //开外部中断0EX1=1; //开外部中断1TR0=1; //开计数器1,准备测速ET0=1;TR1=1; //开定时器1,记50msET1=1;TL2=(65536-1000)%256;TH2=(65536-1000)/256;x_tmpdate[0]=0xf6;y_tmpdate[0]=0xe6;z_tmpdate[0]=0xdb;// x_tmpdate[4]=0xf6; //第五个数码管显示// y_tmpdate[4]=0xe6;// z_tmpdate[4]=0xdb;}void display(unsigned int *lp)//显示{P2=0; //端口2为输出SMG_1; //第一位数码管P2=lp[0]; //查表法得到要显示数字的数码段delay(); //延时5个空指令P2=0; //清0端口,准备显示下位P2=0; //端口2为输出SMG_2; //第二位数码管P2=table[lp[1]]; //查表法得到要显示数字的数码段delay(); //延时5个空指令P2=0; //清0端口,准备显示下位SMG_3; //第三位数码管P2=table[lp[2]]; //查表法得到要显示数字的数码段delay(); //延时5个空指令P2=0; //清0端口,准备显示下位出,否则进位影响到第四位数据SMG_4; //第四位数码管P2=table[lp[3]]; //查表法得到要显示数字的数码段delay(); //延时5个空指令P2=0;//清0端口,准备显示下位// P2=0; //端口2为输出// SMG_5; //第五位数码管// P2=lp[4]; //查表法得到要显示数字的数码段// delay(); //延时5个空指令// P2=0; //清0端口,准备显示下位P2=0; //端口2为输出SMG_6; //第六位数码管P2=table[lp[5]]; //查表法得到要显示数字的数码段delay(); //延时5个空指令P2=0; //清0端口,准备显示下位SMG_7; //第七位数码管P2=table[lp[6]]; //查表法得到要显示数字的数码段delay(); //延时5个空指令P2=0; //清0端口,准备显示下位出SMG_8; //第八位数码管P2=table[lp[7]]; //查表法得到要显示数字的数码段delay(); //延时5个空指令P2=0; //清0端口}void main(){init();while(1){if(x_xianwei1==0) //限位开关控制{fx_x=~fx_x;while(x_xianwei1==0);}if(x_xianwei2==0){fx_x=~fx_x;while(x_xianwei2==0);}if(y_xianwei1==0){fx_y=~fx_y;while(y_xianwei1==0);}if(y_xianwei2==0){fx_y=~fx_y;while(y_xianwei2==0);}// if(y_xianwei==0)// fx_y=~fx_y;// if(z_xianwei==0)// fx_z=~fx_z;/*给定转速数据*/x_tmpdate[1]=15/10/x_speed; //百位x_tmpdate[0]=60000000/1000(T2初值)/200/x_speed/2/100 x_tmpdate[2]=15/1/x_speed/1%10; //十位x_tmpdate[1]=60000000/1000/200/x_speed/2/10%10x_tmpdate[3]=150/1/x_speed%10; //个位x_tmpdate[2]=60000000/1000/200/x_speed/2%10y_tmpdate[1]=15/10/y_speed/1; //百位y_tmpdate[2]=15/1/y_speed/1%10; //十位y_tmpdate[3]=150/1/y_speed%10; //个位z_tmpdate[1]=15/10/z_speed/1; //百位z_tmpdate[2]=15/1/z_speed/1%10; //十位z_tmpdate[3]=150/1/z_speed%10; //个位keyscan(); //扫描键盘if(t2_flag==1) //当1s时间到达时{t2_flag=0; //标志位置0/*分辨率360时测定转速数据*/x_tmpdate[5]=1*collect_x/6/100; //百位60*collect_x/360/100;x_tmpdate[6]=1*collect_x/6/10%10; //十位x_tmpdate[7]=1*collect_x/6%10; //个位y_tmpdate[5]=1*collect_y/6/100; //百位y_tmpdate[6]=1*collect_y/6/10%10; //十位y_tmpdate[7]=1*collect_y/6%10; //个位z_tmpdate[5]=1*collect_z/6/100; //百位z_tmpdate[6]=1*collect_z/6/10%10; //十位z_tmpdate[7]=1*collect_z/6%10; //个位/* if(x_speed>4){x_tmpdate[5]=x_tmpdate[5]/2;x_tmpdate[6]=x_tmpdate[6]/2;x_tmpdate[7]=x_tmpdate[7]/2;}*//*计数变量置位*/collect_x=0;collect_y=0;collect_z=0;}if(t4_flag==1){display(x_tmpdate);}if(t4_flag==2){display(y_tmpdate);}if(t4_flag==3){display(z_tmpdate);}}}void keyscan() //读键盘值{unsigned char k,k_temp;k=0xfe;do{P0=k;k_temp=P0;if(k!=k_temp){switch(k_temp){case0x7e:{EA=1;TR2=1;ET2=1;x_speed=8,y_speed=8,z_speed=8;fx_x=1;fx_y=1;fx _z=1; }break; //启动case0x7d:{EA=0;TR2=0;ET2=0;x_speed=200;y_speed=200,z_speed=200;}break; //停止case 0x7b:{x_speed=200; }break; //x停止case 0x77:{x_speed=8; }break; //x启动case 0xbe: //x轴加速{while(P0==0xbe);if(x_speed>1)x_speed=x_speed/2;break;}break;case 0xbd:{while(P0==0xbd);if(x_speed<64)x_speed=x_speed*2;break;}break; //x轴减速case 0xbb:{ fx_x=1;break;} //x轴正向case 0xb7:{ fx_x=0;break;} //x轴反向case 0xde: //y轴加速{while(P0==0xde);if(y_speed>1)y_speed=y_speed/2;break;}break;case 0xdd:{while(P0==0xdd);if(y_speed<64)y_speed=y_speed*2;break;}break; //y轴减速case 0xdb:{ fx_y=1;break;} //y轴正向case 0xd7:{ fx_y=0;break;} //y轴反向case 0xee: //z轴加速{while(P0==0xee);if(z_speed>1)z_speed=z_speed/2;break;}break;case 0xed:{ while(P0==0xed);if(z_speed<64)z_speed=z_speed*2;break;}break; //z轴减速case 0xeb:{ fx_z=1;break;} //z轴正向case 0xe7:{ fx_z=0;break;} //z轴反向default:break;}}k=_crol_(k,1);}while(k!=0xef);}void T2ISR(void) interrupt 5 //T2定时器,输出驱动脉冲{TF2=0;TL2=(65536-1000)%256;TH2=(65536-1000)/256;count_x++;count_y++;count_z++;if(count_x>64){count_x=0;}if(count_y>64){count_y=0;}if(count_z>64){count_z=0;}if(count_x==x_speed){cp_x=~cp_x;count_x=0;}if(count_y==y_speed){cp_y=~cp_y;count_y=0;}if(count_z==z_speed){cp_z=~cp_z;count_z=0;}}void T1ISR(void) interrupt 3 //T1定时器,记50ms时间{TL1=(65536-50000)%256;TH1=(65536-50000)/256;t1_flag++;if(t1_flag==20){t2_flag=1;t1_flag=0;}t3_flag++;if(t3_flag==40){t4_flag=1;}if(t3_flag==80){t4_flag=2;}if(t3_flag==120){t4_flag=3;t3_flag=0;}}void ISR0(void) interrupt 0 //x轴测速脉冲输入{collect_x++;}void ISR1(void) interrupt 2 //y轴测速脉冲输入{collect_y++;}void T0ISR(void) interrupt 1 //T0计数器,记录z轴测速脉冲{TL0=(65536-1)%256;TH0=(65536-1)/256;collect_z++;}重庆邮电大学堂下考试答卷附录2:单片机控制板原理图附录4:单片机控制板元件清单重庆邮电大学堂下考试答卷附录5:THB7128驱动板元件清单30。

相关文档
最新文档