双路输出控制器设计正文单片机格式完整Word文档格式.docx
- 文档编号:5126468
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:28
- 大小:721.14KB
双路输出控制器设计正文单片机格式完整Word文档格式.docx
《双路输出控制器设计正文单片机格式完整Word文档格式.docx》由会员分享,可在线阅读,更多相关《双路输出控制器设计正文单片机格式完整Word文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
通道PA1输出脉宽调制信号时,指示灯LD1点亮,其余指示灯处于熄灭状态;
通道PA2输出脉宽调制信号时,指示灯LD2点亮,其余指示灯处于熄灭状态。
1.6系统工作及初始化状态说明
系统初始化时间设定为23时59分50秒,PA1、PA2输出频率固定为1KHz,串口通讯波特率设定为9600bps。
1.7电路设计部分
使用继电器、三极管(或场效应管)及简单的阻容元器件配合处理器PA1、PA2引脚,设计可调速的24V直流电机正反转动的驱动电路。
设计电路原理图并简述设计思路与电路工作原理。
2硬件设计
2.1系统硬件设计框架
此设计是一个双路输出控制系统,通过输出的信号去控制24V直流电机的正反转以及速度。
其含有单片机最小系统、电源电路、按键控制电路、DS1302时钟控制电路、Lcd1602显示电路、串口通信电路、直流电机驱动电路等,该系统硬件设计框图如图2.1-1。
图2.1-1系统整体设计框架图
2.2电源电路
本设计电源电路主要是24V的直流电源为负载提供电源,在本设计中作为24V直流电机的电源。
如图2.2-1所示,24V直流电源,经三端稳压器U1稳压成5V的直流电,供给单片机STC89C52RC、DS1302时钟芯片、Lcd1602液晶显示器等设备供电。
其中SW1、LED1、R1构成电源指示灯电路,显示电源的工作状态。
图2.2-1电源电路连接结构图
2.3单片机系统电路
在本设计作用选择单片机STC89C52RC作为整个控制系统的核心处理器。
它是STC公司借组经典的MCS-51内核生产的。
同时,它使用了最新的低功耗技术,并且为它配备上了拥有高性能的CMOS8位核心微控制器。
另外它也具有8K在系统可编程闪存。
甚至它使用的是相当稳定成熟的8位CPU和在系统可编程Flash的单芯。
为此,国内大部分兴趣爱好者都使用STC89C52RC进行开发学校。
STC89C52RC单片机的主要功能特性如表2.3-1:
表2.3-1STC89C52RC单片机的主要功能特性
主要特性
6时钟周期/12时钟周期任意选择
硬件看门狗(WDT)
SPI高速同步串行通讯接口
工作频率0~40MHZ
双串口(UART)
3个可编程时钟口
32个通用I/O口
3个16位定时器
低功耗掉电和空闲模式
外部掉电检测电路
512字节RAM
4个中断请求源
2通道的捕获/比较单元
8k应用程序空间
可编程时钟输出
EEPROM功能
工作温度:
-40—85℃
工作电压:
3.3-5.5V
2.3.1单片机最小系统
如图2.3.1-1,是该系统的时钟、复位模块,也是该系统的重要组成模块。
图2.3.1-1单片机最小系统连接结构图
复位电路是由电容C1、电阻R5构成,在上电时,通过复位电路里电容充电后给单片机RST端口一个高电平,当放电完毕,当其恢复低电平时,单片机内数据清零完毕,复位操作完成,为该系统故障清零、正常工作的实现提供方式。
时钟电路由一个电容振荡器电路,C5,C7和晶体Y2,单片机芯片可以配置为使用作为一个高增益反相放大器,振荡器,引脚xal1和XAl2连接到12M晶振。
2.3.2EEPROM数据存储单元
在本设计中要对输出的脉宽信号的占空比进行存储,我们借助单机STC89C52RC的内部EEPROM。
EEPROM的内部程序,擦除次数可达1000000次以上,其中它的内部EEPROM地址表见表2.3.2-1。
表2.3.2-1STC89C52RC内部EEPROM地址表
第一扇区
第二扇区
起始地址
结束地址
2000H
21FFH
2200H
23FHH
第三扇区
第四扇区
2400
25FFH
2600H
27FFHH
第五扇区
第六扇区
2800H
29FFH
2A00H
2BFFHH
第七扇区
第八扇区
2C00H
2DFFHH
2E00H
2FFFHH
2.4液晶显示电路
本设计的的显示电路采用LCD1602液晶显示屏,主要用于时间信息显示、串口调试助手发送过来的信息显示、信号输出通道口与输出信号占空比显示等等。
该显示屏是一种字符型的显示器,它的组成部分主要有行驱动器、列驱动器、16×
2全点阵液晶显示器,能够显示字符,可采用并行方式控制与外部CPU的接口,该显示屏外接电压为+5V,其数据存储器DDRAM为80字节,字符型发生器CGROM,可以工作在-20℃—+70℃,可存储-30℃—+80℃[6]。
LCD1602的引脚功能如表2.4-1所示。
表2.4-1LCD1602引脚功能
引脚号
引脚名称
管脚功能描述
1
VSS
电源地
9
DB2
数据线
2
VDD
电源正
10
DB3
3
VO
显示器对比度
11
DB4
4
RS
数据/命令控制
12
DB5
5
R/W
读/写控制
13
DB6
6
E
使能信号
14
DB7
7
DB0
15
LEDA
背光电源正极
8
DB1
16
LEDK
背光电源负极
LCD1602与单片机连接线路图如图2.4-1所示,LCD1602的第1引脚与地连接,第2、3引脚连接可调电阻4.7k,实现显示内容的对比度调节。
RS、RW、E分别与单片机P0口的P05、P06、P07连接,其中RS为指令数据输入端,RW为指令数据读写端,E为使能端。
DB0-DB7与单片机的P20-P27连接,实现数据传输。
BLA、BLK为背光灯电源。
图2.4-1LCD1602液晶显示器连接结构图
2.5DS1302时钟电路
由于本设计中需要在指定时间控制相应的通道口输出信号,所以采用DS1302用于提供相关时钟信息。
它是由美国DALLAS公司推出的实时时钟芯片。
它自身带有涓细电流充电能力,而且他的功耗也相当的低,因此它在实时时间当中用的相当的多。
它可以提供年月日时分秒等信息。
其电路连接结构图如图2.5-1所示。
图2.5-1DS1302时钟连接结构图
其中DS1302时钟芯片的第2引脚和第3引脚之间接32.768KM的晶振,第1引脚和第4引脚分别接电源的正极和地,第5脚到第7脚分别与单片机STC89C52RC的P1口的P15、P16、P17相接,第8脚接电池的正极。
2.6按键控制电路
在本设计中按键采用的是市场上使用的非常频繁的点动按键,在本设计中主要用于控制熟路输出通道的信号输出方式与调节输出信号的占空比。
其详细电路连接图如图2.6-1所示。
图2.6-1按键控制电路连接结构图
七个按键分别与单片机STC89C52RC的P1口的P10、P11、P12、P13、P14相连接,按键S1用于控制PA1通道的输出信号方式,当我们第一次按下按键S1的时候指定脉宽信号输出通道PA1持续输出低电平,当我们再次按下的时候PA1通过就按照具体的占空比输出频率为1KHZ的脉宽信号。
按键S2主要用于对信号输出通道PA1输出信号的占空比进行调节,我们每按下一次,脉宽信号输出通道PA1的占空比就加10。
同理按键S3用于控制PA2通道的输出信号方式,当第一次按下的时候指定信号输出通道PA2持续输出低电平,当再次按下的时候PA2通过就按照具体的占空比输出频率为1KHZ的脉宽信号。
按键S4主要用于对信号输出通道PA2输出信号的占空比进行调节,我们每按下一次,脉宽信号输出通道PA1的占空比就加10。
由于本设计采用的是lcd1602液晶显示屏,其显示的内容有限,按键S5就用于对显示信息进行切换。
2.7LED灯指示电路
在本设计中LED灯指示部分主要用于指示相应输出通道的一个具体状态。
当我们的脉宽信号输出通道PA1输出固定频率为1KHZ的脉宽调制信号时,与单片机P34口连接的指示灯点亮,与此同时,与单片机P35口连接的指示灯熄灭;
当我们的脉宽信号输出通道PA2输出脉宽调制信号时,与单片机P35口连接的指示灯点亮,同样在此时,与单片机P34口连接的指示灯熄灭。
其详细电路连接图如图2.7-1所示。
图2.7-1LED灯指示灯电路连接结构图
两颗LED指示灯分别与单片机STC89C52RC的P3口的P34、P35相连接。
在LED指示灯的流动阻力,另一端连接100欧姆的上限。
2.8串口通信电路
在本设计中,我们也通过串口调试助手对两路输出通道脉宽信号进行控制,所以在硬件方面我们需要设计串口通信电路。
主要用途是接收由用户经过串口工具传递过来的信息,然后根据相应的信息对脉宽信号输出通道的输出信号进行控制。
例如:
用户输入字符串“00:
59:
23-PA1-Xs”,则我们的双路输出控制器就制定脉宽信号输出通PA1在0点59分23秒的时候持续输出相应占空比的1KHZ的脉宽调制信号X秒后输出低电平。
另外本次设计使用的通信波特率是9600。
我们借助的主要芯片是串口通信部分借助的是MAX232芯片实现与电脑之间的通信。
其详细电路连接图如图2.8-1所示。
图2.8-1串口通信电路连接结构图
2.9直流电机驱动与控制电路
如图2.9-1所示,直流电机驱动与控制与单片机连接图。
主要通过继电器实现对直流电机的控制,继电器的一端连接电源,另一端通过三极管接地。
当脉冲宽度信号输出通道PA1输出为低,三极管8550进行,继电器,常开触点闭合,直流电机转动。
反之,当通道PA1输出的是高电平时,三极管S8550截止,直流电机停止转动。
图2.9-1直流电机驱动电路连接结
3软件设计
根据整个系统的相应的控制要求,本系统的软件采用C语言进行编写。
整个程序都是在KEIL的开发环境下进行开发。
KeilC51是美国KeilSoftware公司研发的51系列兼容单片机C语言软件开发系统。
与汇编相比,C语言在功能上、结构性、可读性和可维护性上有比较明显的优势,所以容易学习容易应用实践。
Keil中包括了C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果使用C语言编程,那么Keil几乎就是最好的选择,即便不使用C语言而用汇编语言来编程,keil方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
整个程序分为如下几个主要部分:
整个系统控制流程图、液晶显示部分流程图、DS1302程序流程图、按键扫描部分流程图等。
3.1主流程图
图3.1-1整个控制系统流程图
如上3.1-1所示,是整个控制系统的控制流程图,具体流程是先在控制程序的一开始对各个部分进行初始化操作以便避免误操作等等(时钟芯片的初始化、液晶显示器的初始化、定时器初始化等),然后就是读出DS1302的时间信息,并送往LCD1602进行实时刷新显示;
接着是单片机不断扫描判断是否有按键按下,如果有按键按下就执行与之相对应的控制命令;
若没有按键按下直接跳至判断占空比值是否改变,如果占空比值发生改变,就存到单片机STC89C52RC的内部EEPPOM当中;
若占空比值为改变,直接跳至串口通信部分,看是否有接收到串口部分的数据,如果接收到了,就根据接收到的数据指定相应的通道去输出指定的占空比值的脉宽信号;
若串口通信部分没有接收到相关数据,就直接调至最开始的读取DS1302的时间信息,并依次循环下去。
3.2液晶显示部分程序流程图
由于本系统的的显示电路采用LCD1602液晶显示屏,因为用LCD1602显示实时显示相关数据系统显示电路,以提供一个更直观的人机界面。
该显示屏是一种字符型的液晶显示器,它的组成部分主要有行驱动器、列驱动器、16×
2个点,能够显示字符,可采用并行方式控制与外部CPU的接口,该显示屏外接电压为+5V,其数据存储器DDRAM为80字节,字符型发生器CGROM,可以工作在-20℃—+70℃,可存储-30℃—+80℃[6]。
图3.2-1LCD1602控制程序流图
液晶显示器LCD1602程序流程图如图3.2-1所示,首先进行初始化操作(如:
设置显示模式、清屏、光标等操作),紧接着就进行检忙判断,直到不忙的时候再次显示地址的设置(即:
数据在LCD1602上面所显示的位置),最后输入所要输出的数据进行显示。
3.3DS1302部分程序流程图
DS1302程序流程图如图3.3-1所示,首先进行初始化操作,然后进行初始时间的设定以及数据的读取与处理,最后处理好的数据送往LDC1602进行显示。
图3.3-1DS1302部分程序流图
3.4按键部分程序流程图
按键部分的程序流程图如图3.4-1所示,首先是对各个按键与单片机的IO接口进行一个初始化操作。
接着单片机内部不断扫描判断是否有按键按下。
如果按键B1按下,PA1_flag就加1,如果超过1就回到0,当PA1_flag=0的时候就让PA1通道持续输出低电平,当PA1_flag=1的时候就让PA1通道根据实际的占空比值输出频率为1KHZ的固定脉宽信号;
如果按键B2按下,主要是用来改变占空比值的,每按下一次,占空比值就加10,如果超过了就是就为0,然后继续往上加,并将改变的占空比值存到单片机STC89C52RC里面的EEPROM中。
同理,如果按键B3按下,信号输出标志PA2_flag就加1,如果其值超过1就回到0,以此循环,当PA,2_flag=0的时候就让PA2通道持续输出低电平,当PA2_flag=1的时候就让PA2通道根据实际的占空比值输出频率为1KHZ的固定脉宽信号;
如果按键B4按下,主要是用来改变占空比值的,每按下一次,占空比值就加10,如果超过了就是就为0,然后继续往上加,同样也将改变的占空比值存到单片机STC89C52RC里面的EEPROM中。
当一开始按键B5按下的时候,液晶显示器的下半屏将显示由串口部分发送过来的数据,当再次按下B5的时候则显示两个脉宽信号输出通道输出信号的占空比。
图3.4-1按键部分程序流图
3.5串口通信部分流程图
如图3.5-1所示,是串口通信部分的流程图,首先也是对其进行一个初始化(波特率的设置等等),然后单片机就记录当前的数据帧,紧接着就是判断是否接收到了数据帧,并通过核心控制器件单片机来对其进行判断以及发送一个应答数据帧;
如果没有接收到数据帧,就直接回到开始。
图3.5-1串口通信部分程序流图
3.6关键部分的程序调试
3.6.1液晶显示部分
在调试工程中,最开始调试的都是显示设备,它一旦调试成功后,可以对后面的调试带来很大的好处,我们需要查看什么数据,直接送到这个上面显示就行了。
那么在对lcd1602进行调试的时候,比较重要的就是看它的时序图,我们需要根据它的时序图来进行调试。
另外lcd1602也还有其他功能可以供我们选择,这样的话可以我们的用户提供更好的人机交换界面,让我们的用户能够更好的提取实际的用户数据什么的。
LCD1602光标显示功能是一个很好的例子。
在实际应用中,我们则根据自身的需要要来对lcd1602的功能进行选择。
另外对于lcd1602的操作主要就是写如一个字节和读入一个字节,之后的处理都是基于这两者的基础之上来进行操作的。
我们只需要根据我们实际的需要来进行相应的操作就行了。
所以lcd1602用起来也是十分的方便了,我们只需要拿到它的数据手册来,根据它的手册来操作它就行了,用起来是十分的方便的。
正是因为如此,lcd1602的应用范围是十分的广泛的。
3.6.2串口通信部分
对于串口通信部分的调试,一定要注意的就是波特率一定要设置正确,如果波特率一但设置不对,在整个传输过程中,你将看不到具体的效果,在对其进行检测的时候也是相当的头疼。
对与这个部分,波特率设置正确后,最核心的控制程序就是下面的了。
我们是通过单片机STC89C52RC的串口中断来实现这一部分的功能,其波特率的设置是通过定时器中断1。
voidUART_Routine()interrupt4
{
if(RI==1)//接受中断标志
{
ES=0;
//关串口中断
cReceive_Data[cNumber]=SBUF;
//存储有串口发送过来的数据
cNumber++;
if(cNumber>
14)
cNumber=0;
RI=0;
//接受中断标志软件清零
ES=1;
//开串口中断
}
}
如上所示的程序,能构实现直接介绍由串口工具发送过来的字符串,然后我们只需要对里面的数据进行判断就行了。
3.6.3EEPROM部分
在本次设计中,我们通过单片机STC89C52RC内部的存储单元EEPROM对两个通道PA1以及PA2输出通道的占空比进行存储。
它内部的EEPROM2KB,耐久性达1000000次。
它的每个扇区的空间为512B。
对于这个部分,程序的控制也是相当的关键。
在最后的使用中,我们需要调用这三个部分,对本次设计中脉宽信号的占空比进行操作。
/*====================字节读==========================*/
unsignedcharbyte_read(unsignedintbyte_addr)
ISP_ADDRH=(unsignedchar)(byte_addr>
>
8);
//地址赋值
ISP_ADDRL=(unsignedchar)(byte_addr&
0x00ff);
ISP_CMD=ISP_CMD&
0xf8;
//清除低3位
ISP_CMD=ISP_CMD|RdCommand;
//写入读命令
ISPgoon();
//公用触发代码
ISP_IAP_disable();
//关闭ISP,IAP功能
return(ISP_DATA);
//返回读到的数据
/*====================扇区擦除==========================*/
voidSectorErase(unsignedintsector_addr)
unsignedintiSectorAddr;
iSectorAddr=(sector_addr&
0xfe00);
//取扇区地址
ISP_ADDRH=(unsignedchar)(iSectorAddr>
8);
ISP_ADDRL=0x00;
ISP_CMD=ISP_CMD|EraseCommand;
//擦除命令3
/*====================字节写==========================*/
voidbyte_write(unsignedintbyte_addr,unsignedcharoriginal_data)
ISP_CMD=ISP_CMD|PrgCommand;
//写命令2
ISP_DATA=original_data;
//写入数据准备
其中字节读,主要是用于一开始,在控制系统首次打开的时候,我们需要读出存储在单片机STC89C52RC内部的脉宽信号的占空比。
读出存储在单片机的内部存储单元EEPROM当中的通道PA1的脉宽信号的占空比:
PA1_duty=byte_read(0x2000);
以及读出存储在单片机的内部存储单元EEPROM当中的通道PA1的脉宽信号的占空比:
PA2_duty=byte_read(0x2200);
对于后面的操作,主要是当我们的占空比发生改变后,我们需要新的占空比存入EEPROM中,具体的操作语句是:
if(PA1_new_duty!
=PA1_duty){//当PA1占空比改变
PA1_new_duty=PA1_duty
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输出 控制器 设计 正文 单片机 格式 完整