范文一:stm32课程设计
/*
三个坐系的:标标标标标标标
触摸屏:
column 240
x
_ _ _ _ _ _
^ |
| |
| |
| |
| |
| | 320
| |
| |
| |
| |
| |
| |(0,0) - - - - - -> y
液晶示字体及清屏等函数:标标标标标标标标标标标
column 240
x
(0,0) ----------->
| |
| |
| |
| |
| |
| | 320
| |
| |
| |
| |
| |
| |
V- - - - - -
y
液晶示像:标标标标标
column 240
X
-----------A
| |
| |
| |
| |
| |
| | 320
| |
| |
| |
| |
| |
| |
Y <- -="" -="" -="" -="" -(0,0)="">->
Y字 = 320 - X触摸
X字 = Y触摸
X标 像= X触摸
Y标 像= 240-Y触摸
Y标 像= 240 - X字
X标 像= 320 - Y字
*/
标像和字在屏幕的放置有一个方向相反。
“LCD触摸屏控制七彩呼吸灯部分程序:”
#include "stm32f10x.h"#include "bsp_usart1.h"#include "bsp_ili9341_lcd.h"#include "bsp_sdfs_app.h"#include "bsp_bmp.h"
#include "bsp_SysTick.h"#include "bsp_touch.h"#include "bsp_spi_flash.h"#include "bsp_led.h"
#include "even_process.h"#include "bsp_breathing.h //被用的标标标H文件的包含.呼吸灯文件标标标int main(void)
{
uint8_t k;
/* 初始化LCD */
LCD_Init();
LCD_Clear(0, 0, 240, 320, BACKGROUND);//清屏
/* 初始化sd卡文件系,因字的字放在了标标标标标标标标标标标标sd卡里面 */
Sd_fs_init();
/* 系定器标标标标 1us 定初始化标标标标 */
SysTick_Init();
/* 初始化LED */
LED_GPIO_Config();
/* 初始化外部FLASH */
SPI_FLASH_Init(); //PA4/5/6/7
/* 触摸屏IO和中断初始化 */
Touch_Init();//LCD触摸屏的配置用到模标FLASH
PE0/2/3/4, PD13
#if 1
SPI_FLASH_BufferRead(&cal_flag, 0, 1);
if( cal_flag == 0x55 )
{
SPI_FLASH_BufferRead((void*)cal_p, 1, sizeof(cal_p));
SPI_FLASH_CS_HIGH();
for( k=0; k<6; k++="">6;>
printf("\r\n rx = %LF \r\n",cal_p[k]);
}
else
{
/* 等待触摸屏校正完标 */
while(Touch_Calibrate() !=0);
}
#elif 0
/* 等待触摸屏校正完标 */
while(Touch_Calibrate() !=0);
#endif
/* 标示LED控制界面片标标 */
Lcd_show_bmp(100, 30,"/led/ui_window.bmp");//标标标像和字形坐配
置有一个方向相反
Lcd_show_bmp(38, 184,"/led/ui_rb_button.bmp");
Lcd_show_bmp(38, 95,"/led/ui_gb_button.bmp");//标
示状按标标标标标
Lcd_show_bmp(38, 11,"/led/ui_yb_button.bmp");
TIM3_Breathing_Init();
while(1)
{
even_process();//灯的配置及色标标
}
}
void even_process(void)
{
//char lcd_char[20];
switch(even)
{
case E_BUTTON1:
//LED3
if(red_button == S_OFF)//原来状标标标标
{
Lcd_show_bmp(38,
184,"/led/ui_r_button.bmp");
//标标标标标标示状按
red_button = S_ON;//更新状志标标标
}
else
//原来状标标标标
{
Lcd_show_bmp(38,
184,"/led/ui_rb_button.bmp");
//标标标标标标示状按
red_button = S_OFF;
//更新状志标标标
}
LED1_TOGGLE;
//LED状反标标标
even = E_NULL;
break;
case E_BUTTON2:
//LED1
if(green_button == S_OFF)//原来状标标标标
{
Lcd_show_bmp(38, 95,"/led/ui_g_button.bmp");
//标标标标标标示状按
green_button = S_ON;
//更新状志标标标
}
else
//原来状标标标标
{
Lcd_show_bmp(38,
95,"/led/ui_gb_button.bmp");//标标标标标标示状按
green_button = S_OFF;
//更新状志标标标
}
LED2_TOGGLE;
even = E_NULL;
break;
case E_BUTTON3:
//LED2
if(blue_button == S_OFF)//原来状标标标标
{
Lcd_show_bmp(38, 11,"/led/ui_y_button.bmp");
//标标标标标标示状按
blue_button = S_ON;
//更
新状志标标标
}
else
//原来状标标标标
{
Lcd_show_bmp(38,
11,"/led/ui_yb_button.bmp");
//标标标标标标示状按
blue_button = S_OFF;
//更新状志标标标
}
LED3_TOGGLE;
even = E_NULL;
break;
case E_GETCHAR:
//串口接收到数据
if(recv_char == 0)//标标标上
{
Lcd_GramScan( 2 );
LCD_DispEnCh(140,20,"七彩呼吸灯",RED);
}
even = E_NULL;
break;
default:
break;
}
}
/**
* @brief touch_process中断服函数,根据触摸位置更新触摸志标标标标标标标标标标标标标标标标
* @param 无
* @retval 无
*/
void touch_process(void)
{
if(touch_flag == 1)
/*如果按下了*/
{
if(Get_touch_point(&display, Read_2046_2(), &touch_para ) !
=DISABLE) ///* 标标 取点的坐*/
{
printf("\r\n x=%d,y=%d",display.x,display.y);
if(display.x>=34 && display.x<>
//控制条的范标
{
if(display.y>=15 && display.y<>
// LED1
{
even = E_BUTTON1; //根据even随按的改标标标标标标标标even重新,使得标标标标标while(1)中的函数持运行。标标标标
printf("\r\n LED1");
}
else if(display.y>=100 &&
display.y<=135)>=135)>
{
even = E_BUTTON2;
printf("\r\n LED2");
}
else if(display.y>=182 && display.y<=216)>=216)>
{
even = E_BUTTON3;
printf("\r\n LED3");
}
}
}
}
}
触屏按外部中断函数:标标标标标标标标
void EXTI4_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line4) != RESET)
{
touch_flag=1;//静量标标标
touch_process();//触摸控制
EXTI_ClearITPendingBit(EXTI_Line4);//清除志位标标标
}
}
标标中用到外部中断EXTI4_IRQHandler标标标标标标标标标触摸屏更新志位,使得,WHILE里的函数持运行,做到一有按按下就触外部中断,随入标标标标标标标标标标标标标标标标标标标标标标标标SWITCH标句case标标标标标标标标标标标标行。呼吸灯由定器控制模仿,配合3个触屏按的通断标标标标标标使能七彩灯的某一个部分示不同色。比如标标标标标标标标标123,23,13,12,1,2,3七。标标
TIM3_Breathing_Init();//定器通道时时时时3——时时七彩灯的PB0。改分可时时时时以整亮的率时时时时时时
如:TIM_TimeBaseStructure.TIM_Prescaler = 5000;0分,标标72MHZ灯很快,不会有呼吸的效果。整,得标标标标标标标标标标标标标标标标标标标标标5000比合标标适,此可以适当整。中也可以整此得到警,标标标标标标标标标标标标标标标标标标标标标标
医的循的效果,标标标标标标标标标标标Prescaler = 40000,。
//标标标标标标标标标标标置分,此最大2^16-1=65535
/* 呼吸灯的40个亮度等*/标
uint8_t indexWave[] = {1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,
107,143,191,255,255,191,143,107,80,59,44,33,25,19,14,10,8,6,4,3,2,2,1,1};
想法:利用七彩灯在3个按的不同序列按下会有固定的标标标标标标标标标标标标标标
不同色,即不同序列的通会使七彩灯有色的标标标标标标标标标标标标标标标标标标标标
标标标标化,,以及利用呼吸灯在特定色,PB0标标标标标标标标标生色,下可以有由
暗到亮,由亮到暗的性,做出七彩呼吸灯。在家中壁标标标标标标标标标标标标标标
灯,夜色咖啡,玩具等有一定的展前景。标标标标标标标标标标标标标标
范文二:stm32课程设计
实践报告
实践名称:专业工程实践II
院(系):电子与信息工程学院 专业:电子信息科学与技术
班级: XXX
姓名:XXX
实践日期:XXX 成绩:
一、实践目的
在初步了解STM32单片机程序编写和单片机常用外围电路使用方法的基础上,学会利用STM32单片机的库函数及其常用外围模块电路设计一个小系统,该系统可以实现一定的功能。设计内容包括硬件电路和软件程序设计,并进行实际测试验证,通过本次实践增强学生工程实践能力、创新设计能力以及对单片机、电路、模拟电子技术、数字电子技术等专业知识灵活应用的能力。
二、实践内容
1. 硬件电路设计
整体实物图由STM32单片机模块、火焰传感器、咪头传感器以及串口组成。接好实
物后,采集信息,当某一项测量数据超出安
全范围时,自动触发通过串口与单片机相连
接的模块,实现对实验室突发安全情况进行
处理的功能。
图2-1 整体实物图
2. 软件设计
系统采用keil开发工具,使用C语言进行程序设计,程序采用模块化编程。各个模块函数独立封装,在主函数中被调用。主函数流程图如图所示。
- 1 -
开始
输入Sense、Fire、Flag、S
~Sense ~Fire Flag
输出S S++ RESET SET Flag++
结束
3. 验证
- 2 -
影响实验室安全的因素有很多,主要包括环境因素和人为因素。因此系统具有对相关环境采集并具有数据上传的功能。对实验室环境信息进行采集,当某一项测量数据超出安全范围时,自动触发相关模块,提醒出现突发安全情况。
图2-2咪头传感器(a)
图2-2 咪头传感器采集信息后在PC机上显示(b)
咪头传感器对声音进行检测,用手击打咪头,有声音的时候指示灯变亮。
- 3 -
图2-3 火焰传感器
用手机闪光灯模拟明火,逐渐靠近当光源强度达到或超过警戒值时,传感器上的指示灯变亮。 三、小结
为期两周的工程实训已经几近结束,感觉收获颇丰。在老师的指导以及同学的帮助下,从对STM32有了进一步的了解。从建立工程、编写程序到调试程序与硬件,学到了很多。不但让自己进一步了解了软件编程技巧,掌握软件的使用方法,也进一步学习了STM32的相关知识。在建立工程和硬件调试的时候遇到了一些问题,在同学的帮助下多次调试,达到了预期效果。
- 4 -
范文三:stm32课程设计报告
利用TIM定时器的中断和定时功能实现跑马灯
一、原理及目的
1、学习stm32库开发
2、理解和熟悉I/O的使用;
3、进一步掌握定时器、中断处理程序的编程方法 4、利用库函数开发实现跑马灯
二、电路原理图
三、流程图
四、软件算法(代码)
1、Main.c
#include "stm32f10x.h" #include "bsp_led.h" #include "bsp_TiMbase.h" volatile u32 time = 0; int i=0;
int main(void)
{
LED_GPIO_Config();
TIM2_Configuration();
TIM2_NVIC_Configuration();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
while(1)
{
if ( time == 1000 )
{
time = 0;
i++;
if(i>=3) i=0;
switch(i)
{
case 0:
LED1(OFF);LED2(OFF);LED3(ON);break; case 1:
LED1(ON);LED2(OFF);LED3(OFF);break; case 2:
LED1(OFF);LED2(ON);LED3(OFF);break;} } }}
2、led.c
#include "bsp_led.h"
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, EN
ABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pi
n = GPIO_Pin_4|GPIO_Pin_3;
GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3); }
3、led.h
#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"
#define ON 0
#define OFF 1
#define LED1(a) if (a) \
GPIO_SetBits(GPIOB,GPIO_Pin_0);\
else \
GPIO_ResetBits(GPIOB,GPIO_Pin_0)
#define LED2(a) if (a) \
GPIO_SetBits(GPIOC,GPIO_Pin_4);\
else \
GPIO_ResetBits(GPIOC,GPIO_Pin_4)
#define LED3(a) if (a) \
GPIO_SetBits(GPIOC,GPIO_Pin_3);\
else \
ts(GPIOC,GPIO_Pin_3) GPIO_ResetBi
#define digitalHi(p,i) {p->BSRR=i;}
#define digitalLo(p,i) {p->BRR=i;}
#define digitalToggle(p,i) {p->ODR ^=i;} #define LED1_TOGGLE digitalToggle(GPIOB,GPIO_Pin_0) #define LED1_OFF digitalHi(GPIOB,GPIO_Pin_0)
#define LED1_ON digitalLo(GPIOB,GPIO_Pin_0) #define LED2_TOGGLE digitalToggle(GPIOC,GPIO_Pin_4)
LED2_OFF digitalHi(GPIOC,GPIO_Pin_4) #define
#define LED2_ON digitalLo(GPIOC,GPIO_Pin_4) #define LED3_TOGGLE digitalToggle(GPIOC,GPIO_Pin_3) #define LED3_OFF digitalHi(GPIOC,GPIO_Pin_3) #define LED3_ON digitalLo(GPIOC,GPIO_Pin_3) void LED_GPIO_Config(void);
#endif /* __LED_H */
bsp_TiMbase.c
#include "bsp_TiMbase.h"
void TIM2_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStruct
ure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void TIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
TIM_TimeBaseStructure.TIM_Period=1000;
TIM_TimeBaseStructure.TIM_Prescaler= 71;
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , DISABLE); }
4、bsp_TiMbase.h
#ifndef TIME_TEST_H
#define TIME_TEST_H
#include "stm32f10x.h"
void TIM2_NVIC_Configuration(void);
void TIM2_Configuration(void);
#endif
五、效果图
范文四:小车课程设计
2011年至2012年第一学期
《单片机原理与应用》课程设计
班 级 1006402
指导教师 涂立、李旎
学生人数 3
设计份数 1
2011年12月23日
基于单片机的智能寻迹避障小车设计
100640207 周志强 100640219 瞿开俊 100640241 韩双男
一. 设计时间
2011年12月 19日-----6月23日
二. 设计地点
湖南城市学院实验楼计算机机房
三. 设计目的
1. 进一步熟悉和掌握单片机的结构及工作原理。
2. 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3. 通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。
4. 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 5. 培养查阅资料, 独立思考问题的能力。
四. 设计小组成员
100640207 周志强(原理图、流程图设计) 100640219 瞿开俊(编写及调试程序)
100640241 韩双男(负责设计报告的书写及资料整理)
五. 指导老师
涂立老师、李旎老师
六. 设计课题
基于单片机红外线控制的智能寻迹避障小车设计
七. 基本思路及关键问题解决方法
1. 基本思路
1.1如果发射出去的红外线检测到两边都没有障碍物,继续匀速前进。
1.2如果发射出去的红外线检测到左侧有障碍物,那么右轮停止旋转,左轮继续旋转,0.2s 之后右轮恢复旋转,小车继续匀速前进。
1.3如果发射出去的红外线检测到右侧有障碍物,那么左轮停止旋转,右轮继续旋转,0.2s 之后左轮恢复旋转,小车继续匀速前进。
1.4如果发射出去的红外线检测到两边都有障碍物,那么两轮反向旋转0.5s 后, 即小车后退0.5s 后,右轮停止旋转,左轮继续旋转,0.2s 之后继续发射红外线。
2. 关键问题解决方法
2.1 当红外线接收信号为0时,我们视它为遇到障碍。
2.2 当遇到障碍时我们为了在转弯时不遇到障碍设置转弯时间为0.2秒。 2.2 当检测到左右两端的信号都为0时,为了避免车太接近障碍物而无法转弯,我们将小车倒退0.5秒后再右转再循环检测。
八. 流程图以及所需软件、硬件的使用
1. 流程图
图1. 流程图
2. protel 99的使用以及电路图
2.1打开Protel99 SE,点击图标如图2所示:
图2. Protel99 SE图标
2.2点击file 选择new 新建。
2.3在弹出的对话框里写好文件名单击OK 。 2.4单击打开Decuments 。
2.5在空白处右击后选择new 。
2.6分别新建schematic Document 、PCB linrary Document 、Schematic library 、PCB Dcument并命好名。图标如图3所示:
图3. 新建所选图标
2.7新建后选择扩展名.sch 双击打开它。
2.8开始画图,左边可选所需元器件图。
2.9如果没有所需元器件图,那么在decuments 里面选择schlib1.lib 打开它,在这里绘制单片机或者其他元器件。
2.10在sch 中绘制好图后,做好信息表,再保存。 2.11实验所得电路图如图4所示
图4. 电路图
3.keil 软件的使用
3.1在桌面上打开keil 软件
3.2新建工程:选择菜单栏的project 中的new project 3.3在弹出的对话框里,写好工程名和选择好保存路径后保存 3.4选择菜单栏中file 中的new 新建
3.5单击保存快捷按钮,并在弹出的对话框里把名字的扩展名改为.c ,再点击保存,如图5所示:
图5. 更改扩展名
3.6在右边框中右击source group后选择add File to Group ‘source Group 1’如图6所示:
图6. 添加程序文件
3.7选择你所命名的文件单击add 然后在单击close ,如图7所示:
图7. 添加
3.8开始编程,
3.9编程好了之后在project 中选择如图8所示:
图8. 设置程序选项
3.10在target 中设计好使用的晶振频率如图9所示:
图9. 设置晶振
3.11在output 中勾选create Hex file如图10所示:
图10. 设置“Creat HEX File”
3.12再单击快捷工具栏中的4.DPFlash 的使用
得到hex 文件。
4.1连接好线,将模式设为下载模式之后单击安装好的DPFlash 。 4.2选择正确的窜口,在菜单中选择文件单机装载,如图11所示:
图11. 装载
4.3选择要转载的hex 文件单击打开
4.4在图11中单击,弹出一个对话框再单击编程,如图12所示:
图12. 开始编程
4.5开始编程。
图13. 编程中
4.6编程之后退出,完成。
图14. 完成编程
5. 计件表
表1. 基于单片机的智能寻迹避障小车设计计件表
九. 出现的问题及相应解决办法
1. 小车当离障碍物太近时,而无法转向。我们通过倒退0.5s 再右转0.2s 继续循环检测。 2. 当电路图设计时,元件模型缺失,用
自画模型再使用。
3. 实验时,为了避免实验元件损坏对实验造成影响,实验前,我们先对元件进行检测。 4. 为了提高课程设计的效率,我们先统一做好需求分析,再分工做好其他工序。
十. 课程设计心得体会
通过此次课程设计,我们了解到了团队的力量,意识到了知识的乐趣,也感觉到了当知识运用于实践的时候是一件多么令人快乐的事情,并且更加深刻的体会到理论联系实际的重要性。当然,从这次的课程设计中,我们也发现自己的知识功底还太浅薄,因此,在以后的学习中我们会更加努力,在尽量牢固掌握理论知识的基础上,努力提高自己的动手能力。
十一、源程序
#include #define uchar unsigned char #define uint unsigned int sbit z1 = P0^0; sbit z2 = P0^1; sbit y1 = P0^2; sbit y2 = P0^3; sbit h1 = P0^4; sbit h2 = P0^5; uchar num; void qian() { } z1 = 1; z2 = 0; y1 = 1; y2 = 0; //向后 //向前 void hou() { } void zuo() { } z1 = 1; z2 = 0; y1 = 1; y2 = 0; z1 = 0; z2 = 1; y1 = 0; y2 = 1; //向左转 void you() { z1 = 1; z2 = 0; y1 = 1; y2 = 0; } void delay(uint z) { uchar x,y; for (x = z; x>0; x--) for (y = 110; y>0; y--); } void xiaoche() { TR0 = 0; if (h1 == 0 && h2 == 1) { you(); delay(200); } if (h1 == 1 && h2 == 0) { zuo(); delay(200); } if (h1 == 0 && h2 == 0) 转0.2s*/ { hou(); delay(500); you(); delay(200); } if (h1 == 1 && h2 == 1) qian(); TR0=1; } void main() { TMOD = 0x01; TH0 = (65536 - 45872) / 256; TL0 = (65536 - 45872) % 256; //向右转 //延时 //小车运动 //如果检测到左侧有障碍物,向右转0.2s //如果检测到右侧有障碍物,向左转0.2s /*如果检测到两边都有障碍物,后退0.5s 再向右 //如果检测到两边都没有障碍物,继续匀速前进 //设置定时器0的工作方式1 //装初值11.0592M 晶振定时50ms 数为45872 } EA = 1; //开总中断 //开定时器0中断 //启动定时器0 //等待中断发生 ET0 = 1; TR0 = 1; while (1); { } if (num == 2) { } num = 0; z1 = 1; z2 = 0; y1 = 1; y2 = 0; xiaoche(); void T0_time() interrupt 1 { TH0 = (65536 - 45872) / 256; } TL0 = (65536 - 45872) % 256; num++; //重装初值 参考文献: 1闫玉德等.MCS -51单片机原理与应用[M].北京:机械工业出版社.2002:25-48 2. 胡宴如. 模拟电子技术[M].北京:高等教育出版社.2004:121-134 3. 李广弟. 单片机基础[M].北京:北京航空航天出版社.2001:45-47 4. 何立民. 单片机应用选编[M].西安:西安电子科技大学出版社.1998:52-57 5. 黄智伟. 全国大学生电子设计竞训练教程[M].北京电子工业出版社.2004.11. 6. 蔡伟智. 自动调光LED 交通信号灯[J].国际光电与显示.2003.33(4):62-67 7. 李勋. 单片机实用教程[M].北京:北京航空航天大学出版社.2005.05. 8. 段晨东. 单片机原理及接口技术[M].北京:清华大学出版社.2008.07. 9. 谢自美. 电子线路设计实验测试[M].武汉:华中理工大学出版社.1992:62-64. 10. 郭天翔. 新概念51单片机C 语言教程[M].北京:电子工业出版社.2008:9-13 电气与 PLC 控制技术课程设计 运料小车控制模拟 课 程: PLC控制技术 姓 名: 系 别:电气工程及其自动化 班 级: 学 号: 指导老师: 实验日期:年 月 日 基于西门子 S7-200 PLC控制的运料小车设 计 摘 要:随着科学技术的日新月异,对自动化程度要求越来越高,原有的生产线已 不能满足要求。在工业生产中运料是一个非常重要的环节,但是其岗位对人体伤害较大 或者是劳动负荷较 大 。 所 以 运 料 小 车 在 工 业 生 产 中 发 挥 了 重 要 作 用 , 为 企 业 节 省 了 人 力 、 物 力 等 , 节 约 了 生 产成本提高了经济效益。 早期运料小车电气控制系统多为继电器 -接触器等组成的复杂系统,随着时 间的推移这种传统的继电器接触器控制在工作中已经暴露出种种弊端:设计周期 长、体积大、成本高,几乎无数据处理和通信功能,复杂,不 容 易 检 修 及 维 护 , 必 须有专人负责操作等等。 相对而言 PLC 运料小车电气控制系统具有连线简单, 控 制速度快,精度高,可靠性和可维护性好,安装、维修和改造方便等优点。避开 了以往继电器接触不良、开关易损坏等缺点,可靠性和稳定性都有所提高。将 PLC 应用到运料小车电气控制系统,可实现运料小车的自动化控制,降低系统的 运行费用。因此对它的设计具有了现实可能性! 关键字:PLC ;运料小车;电气控制 Based on Siemens S7-200 PLC to control the material car design Abstract :With advances in science and technology, the demand is higher and higher degree of automation, the original production line can not meet the requirements. Haul in industrial production is a very important link, but its position to human body harm is bigger, or is a great work load. So the material car plays an important role in industrial production, save manpower and material resources for the enterprise and so on, about the cost of production improves the economic benefit. Early delivery car electric control system for complex system composed of relay - contactor, etc, with the passage of time the traditional relay contactor control has been exposed shortcomings in work: long design cycle, large volume, high cost, almost countless according to processing and communication function, complex, is not easy to repair and maintenance, there must be someone who's in charge of operation and so on. Relatively PLC haul car electric control system has simple connection, control speed, high precision, good reliability and maintainability, convenient installation, maintenance and renovation. To avoid the previous relay damaged shortcomings such as poor contact, switch, reliability and stability are improved. Applying PLC to haul the car electric control system, can realize automatic control of the material car, reduce the operation cost of the system. So to the design of it is the practical possibilities! Keywords :PLC ; The material car; Electrical control 任务情况描述: 本论文设计的主要任务是研究 PLC 运料小车控制系统来 以 PLC 为控制核心,辅以传感器、控制电路等外围器件,构 成一个控制系统,实现如何自动装料、送料等方面的。来替 代传统接触器、继电器控制的运料小车电气控制线路。 PLC 的自动控制功能和程序化工作方式将使运料的自动化程度 大大提高。 国内外研究现状: 国内:随着科学的发展,自动化的实现水平在国民经济的发 展中起着越来越重要的作用,尤其是对机械行业的生产效 率,制造精度,以及可靠性和安全性提出来更高的要求。 国外:经过多年的发展国外自动送料机械已经形成了独立完 善的体系, 成为机械制造的一个重要分支, 其产品种类繁多, 已形成系列产品,并向“无人化”过渡。 对于自动送料系统,目前韩国、日本等国家都在开发 nc 自 动搬运生产线,这类生产线的送料精度及生产效率都比较 高。 一、设计要求: 用可编程控制器实现运料小车装料及卸料自动往返过程,要求: 1. 研究外设; 2. 接线; 3. 绘出梯形图; 4. 编出程序。 5. 实验室现场调试 原理:小车可在 A , B 两地分别启动; A 地启动后,小车先到料斗处 然后自动驶 向卸料位置,到达卸料处后,再继续向右行驶 到达清洗处,完成一个周期。 (1)手动操作:能手动控制小车向前运行,后退运行。 (2)连续往返自动控制:当小车启动后,能够自动往返运行。 (3)停车控制:小车在自动往返运行过程中,均可用手动开关令其停车;再次 启动后,小车重复(2)中内容。 二、可编程控制器资源分配 I/O及元件分配: 输入:启动 I0.0 停止 I0.1 四个开关 I0.2 I0.3 I0.04 输出:正转 Q16.0 反转 Q16.1 LED1 开始 LED2 卸料 LED3 料斗 LED4 清洗 三、程序设计 1、梯形图 四、总结 早期运料小车电气控制系统多为继电器 -接触器等组成的复杂系统,随着时间的 推移这种传统的继电器接触器控制在工作中已经暴露出种种弊端:设计周期长、 体积大、成本高,几乎无数据处理和通信功能,必须有专人负责操作等等。因 此,新的控制设计已成为社会发展的必然趋势。将 PLC 应用到运料小车电气控 制系统,可实现运料小车的自动化控制,降低系统的运行费用。 PLC 运料小车 电气控制系统具有连线简单,控制速度快,精度高,可靠性和可维护性好,安 装、维修和改造方便等优点。避开了以往继电器接触不良、开关易损坏等缺点, 可靠性和稳定性都有所提高。在检测小车是否到达呼叫停靠点的时候,运用了 行程开关使小车的停靠位置更加准确。同时,由于输入输出很明显,不需要额 外的外接电路,让设计更简洁。这也是采用了成熟的可编程控制器带来的好处。 即使在出现故障、紧急停止等环节中都能快捷操作。 致谢 通过努力, 我实现了课程考核要求的功能, 在实验的过程中收获 了知识,也收获了信心。在学习中 , 老师严谨的治学态度、丰富渊博 的知识、 精益求精的工作态度以及侮人不倦的师者风范是我学习的楷 模,老师高深精湛的造诣与严谨求实的治学精神,将永远激励着我。 通过这次实验,我加强了自己的 PLC 专业知识,使我更好地掌握调 试一个电路的程序的方法和能力。范文五:PLC运料小车课程设计