饮料罐装生产流水线的单片机控制系统设计Word下载.docx
- 文档编号:8473506
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:22
- 大小:647.47KB
饮料罐装生产流水线的单片机控制系统设计Word下载.docx
《饮料罐装生产流水线的单片机控制系统设计Word下载.docx》由会员分享,可在线阅读,更多相关《饮料罐装生产流水线的单片机控制系统设计Word下载.docx(22页珍藏版)》请在冰点文库上搜索。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机与外围器件。
它是目前比拟好的仿真单片机与外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
[1]
2.2控制系统硬件电路详细设计
控制系统结构图
图〔1〕
如图〔1〕所示整个控制系统输入量有四个,分别为启动开关、停止开关、复位计数值开关以与光电传感器输入信号。
输出有三个,分别为数码管显示、传送带继电器以与灌装设备继电器。
单片机在接收到启动开关信号后,控制4位数码管显示初始计数值,同时输出信号使传送带继电器线圈得电,进而闭合在强电电路中的相应的继电器开关,使传送带带动瓶子运动。
当光电传感器检测到瓶子到达灌装位置时,向单片机发送信号,单片机接收到信号后立即停止传送带,通过内部计时器计时1S后启动灌装设备,同时报警指示灯保持常亮。
单片机内部定时器继续计时5S后,停止灌装设备,关灭报警指示灯,数码管显示值加1,然后启动传送带等待光电传感器检测到下一个信号开启再一次的循环。
在系统运行期间如果接收到停止信号系统会立即关闭传送带和灌装设备,以与数码管显示;
如果接收到复位信号,单片机控制的数码管计数值立即清零;
如果数码管当前的计数值达到了9999,再接收到灌装完成的信号数码管显示值会变成0进而重新计数。
2.2.2电源电路设计
由于设计要求用220V交流电供电,而单片机电路需要的电源是直流5V。
故需要设计220V转5V的直流稳压电路。
本系统采用的为常见的直流稳压方案如图〔2〕所示。
图〔2〕
变压器输出端的9V电压经桥式整流并电容滤波,在电容C1两端大约会有11V多一点的电压,假设从电容两端直接接一个负载,当负载变化或交流电源有少许波动都会使C1两端的电压发生较大幅度的变化,因此要得到一个比拟稳定的电压,在这里接一个三端稳压器的元件U2。
三端稳压器是一种集成电路元件,内部由一些三极管和电阻等构成,在分析电路时可简单的认为这是一个能自动调节电阻的元件,当负载电流大时三端稳压器内的电阻自动变小,而当负载电流变小时三端稳压器内的电阻又会自动变大,这样就能保持稳压器的输出电压保持根本不变。
因为我们要输出5V的电压,所以选用7805,7805。
前面的字母可能会因生产厂家不同而不同。
LM7805最大可以输出1A的电流,内部有限流式短路保护。
三端稳压器后面接有电容,起滤波和阻尼作用。
单片机开关按钮设计
由于单片机上电P2、P3口均为高电平,故此处设计最简单的开关电路,单片机口接按钮接地。
以停止开关为例,如图3所示
图〔3〕
光电传感器电路设计
如图4所示
图〔4〕
光电传感器由两局部组成,一局部是发光的二极管,一局部是由光电三极管组成的光电开关。
当左局部和右局部没有物体遮挡时,发光二极管的光照射到光电三极管基极上,光电三极管导通,电压比拟器LM3933脚电平输出电压为低电平0V;
当左局部和右局部有物体遮挡时,光电三极管截止,电压比拟器LM3933脚电平低于2脚电平2,5V输出电压为高电平5V。
数码管显示模块
图〔5〕
显示模块选用4个LED共阴极数码管,为节省单片机输入输出口选用用74LS164芯片进展串行数码显示。
接线图如下列图,4个74LS164芯片串行连接,U2接收来自单片机的数据,U3、U4、U5输入端接在前一个数据输出的最高位。
每一次刷新显示时,单片机通过第一个74LS164向显示模块输入4个字节通过串行移位的方式,分别保存在U2、U3、U4、U5内进而控制4个数码管的显示。
报警模块
图〔6〕
报警模块选用LED指示灯,由于单片机驱动电流较小故电路中参加三极管进展电流放大。
当三极管的基极接收到来自单片机的低电平信号,三极管正向导通,LED指示灯亮。
2.2.7传送带模块
传送带电机模块由两局部组成:
一局部为弱电的控制电路〔图7〕,一局部是强电电路如〔图8,图9〕。
图〔7〕图〔8〕图〔9〕
当三极管的基极接收到来自单片机的低电平信号时,三极管正向导通吸合继电器开关K1,位于强电电路中的KM1线圈得电,传送带电机启动运行。
当三极管的基极接收到来自单片机的高电平信号时,三极管截止,继电器的线圈通过二极管D1放电,K1断开,KM1线圈掉电,KM1断开,电机停止运行。
2.2.8灌装设备模块
此模块和传送带模块类似,此处不再赘述,电路图如图10、图11、图12所示。
图〔10〕图〔11〕图(12)
3.1控制程序设计平台软件keiluvision2简介
KeiluVision2是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保存了汇编代码高效,快速的特点。
C51编译器的功能不断增强,使你可以更加贴近CPU本身,与其它的衍生产品。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2IDE可为它们提供单一而灵活的开发环境。
[2]
3.2控制程序详细设计
控制程序流程图
控制程序框图包括主程序框图图〔13〕和定时器中断函数框图〔14〕。
图〔13〕
N
Y
图〔14〕
3.2.2详细程序设计
〔1〕数码管显示函数
voiddisplay()
{
ucharLED_code[4];
//存放四个数码管显示代码
uchari,j,chr,sel;
for(i=0;
i<
4;
i++)//将显示的数值转换为显示代码
LED_code[i]=LED_Map[disdata[i]];
i++)//74LS164数码管串行显示程序
{
chr=LED_code[i];
//
sel=0x80;
for(j=0;
j<
8;
j++)
{
Din=chr&
sel;
CLK=0;
sel=sel>
>
1;
delay
(1);
CLK=1;
delay
(1);
}
}
}
(2)计数显示函数
void
cunt_disp()
//计数显示
{
disdata[0]=cunt%1000%100%10;
//取个位
disdata[1]=cunt%1000%100/10;
//取十位
disdata[2]=cunt%1000/100;
//取百位
disdata[3]=cunt/1000;
//取千位
display();
计数显示函数,取出计数值的各个位送给disdata数组。
(3)关闭显示函数
disp_off()
//关闭显示函数
uchar
i,j,chr,sel;
for(i=0;
i++)
chr=
0x00;
//关闭数码管显示
sel=0x80;
for(j=0;
Din=chr&
CLK=0;
sel=sel>
delay
(1);
CLK=1;
关闭显示函数本质上是通过单片机赋值将数码管的每个LED灯关灭。
〔4〕初始化函数
init()
//初始化
TMOD=0x01;
//定时器初始化
TH0=(65536-50000)/256;
//50ms
TL0=(65536-50000)%256;
EA=1;
//开中断
ET0=1;
t0=0;
//时间变量
chuansong=1;
//传送带关闭
guanzhuang=1;
//灌装设备关闭
disp_off();
//显示关闭
cunt=0;
//初始值
TR0=0;
初始化函数为系统未启动状态,此时初始化系统变量并且关闭所有设备。
〔5〕定时器中断函数
timer0()
interrupt
1//50ms定时器中断函数
//50ms设置
t0++;
if(t0==20)
//1s停顿
guanzhuang=0;
baojing=0;
if(t0==120)
//1S停顿加5秒灌装
guanzhuang=1;
//灌装设备启动
baojing=1;
//报警灯亮
chuansong=0;
//传送带关闭
t0=0;
//t0重新赋值0
TR0=0;
//关闭定时器
cunt++;
//显示值加1
if
(cunt==10000)//计数值重置
cunt=0;
cunt_disp();
//刷新显示
〔6〕主函数
main()
//主函数
loop:
init();
while(auto_on);
//等待启动
chuansong=0;
//传送带启动
cunt_disp();
//显示当初始计数值
while
(1)
//主运行程序
if(!
no_stop)
goto
loop;
//判断是否有停止信号
if(rst_cunt==0)
//判断是否复位计数值
cunt=0;
//复位
cunt_disp();
//刷新显示
}
if(!
cunt_in)
//接收到传感器信号
chuansong=1;
//传送带停止
TR0=1;
//定时器打开
while(!
cunt_in);
//等待信号完毕
3.3控制系统Protues仿真
光电传感器仿真
此处用按钮将发光二极管短路来模拟有物体遮挡的情况。
按钮未按下〔无物体遮挡〕时电压比拟器输出高电平,按钮按下之后输出为低电平。
灌装设备和传送带仿真
此处选用protues中的直流单相电机仿真交流电机。
3.3.3数码管显示仿真
3.3.4整体仿真图
完毕语
通过本次的课程设计,学到了很多关于单片机仿真的东西。
在做仿真电路事,遇到了一些困难尤其是电源稳压模块和光电传感器模块,但是通过上网查资料最终还是比拟好的解决了这些问题,另外在编写C51程序时也遇到了一些问题,包括中断函数的编写和信号的处理,但最终也是通过不断地调试,思考解决了问题。
通过本次本次的课程设计,我对专业知识有了更深的认识,相信会对我以后的学习或者工作有很大帮助。
参考文献
[1]XX百科.Protues.baike.baidu./link?
url=wr6Khr4kYydYD-K01yBexH2-RlbjW6MMtxw7TC5siqUE4Ye_l_u3t2ZU5i--FKZQ08TrQVXD_jKd9gfXz2Wc5a
[2]XX百科.keil.baike.baidu./link?
url=yOZ4_pNldquRnwc5MuhZpPUfD1qzE25ax7SPdLfDhbMRUKvWiJY6fUfzYyf_5_dfhjYOObCkexJAXk7UlMgdLq
附录I电路图
单片机板电路图
强电电路电路图
附录IIC51源代码
#include
<
reg51.h>
typedef
unsigned
char
uchar;
int
uint;
sbit
Din=P1^0;
//数码管数据输入
CLK=P1^1;
//时钟输入
auto_on=P2^2;
//自动模式开启
rst_cunt=P2^3;
//复位计数值
baojing=P2^7;
//报警信号输出
cunt_in=P2^4;
//传感器输入
guanzhuang=P2^5;
//灌装设备控制端
chuansong=P2^6;
//传送带控制端
no_stop=P3^0;
//停止信号输入
data
disdata[4];
uint
cunt,t0,t1;
code
LED_Map[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
//0-9
init();
delay(int
count)
i;
count;
i++)
;
//数码显示
display()
LED_code[4];
//存放四个数码管显示代码
LED_code[i]=LED_Map[disdata[i]];
i++)//74LS164数码管串行显示程序
LED_code[i];
//计数显示
{
//
//初始化
//传送带启动
//显示当初始计数值
//主运行程序
//定时器初始化
//50ms
//开中断
//时间变量
cunt=9998;
1//定时器中断函数
(cunt==10000)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 饮料 罐装 生产 流水线 单片机 控制系统 设计