单片机课程设计单片机实现的顺序控制

合集下载

单片机指令的执行流程

单片机指令的执行流程

单片机指令的执行流程单片机是一种集成了微处理器、内存、输入输出接口和定时器等功能于一体的集成电路芯片。

它可以用来控制各种电子设备,执行各种指令来实现特定的功能。

本文将详细介绍单片机指令的执行流程。

一、指令的获取单片机的指令存储在程序存储器中,也称为ROM(只读存储器)。

指令的获取是指单片机从程序存储器中读取下一条指令的过程。

当单片机上电复位或者执行完一条指令后,会自动获取下一条指令。

二、指令的解码指令的解码是指单片机根据从程序存储器中获取到的指令内容,将其翻译成可以执行的控制信号的过程。

解码器会将获取到的指令解析成对应的操作码和操作数。

三、指令的执行指令的执行是指单片机根据解码得到的控制信号,执行指令中的操作。

根据不同的指令类型和操作码,单片机会执行不同的操作,如数据传输、算术运算、逻辑运算等。

四、状态改变在指令的执行过程中,单片机的状态会发生相应的改变。

这包括程序计数器的更新、标志位的设置等。

程序计数器用于指示下一条将要执行的指令的地址,当一条指令执行完毕后,程序计数器会自动加1或根据指令的跳转或条件分支进行相应的改变。

标志位用于记录运算结果的状态,如进位、溢出等。

五、回到第一步在指令的执行完成后,单片机会回到第一步,继续获取下一条指令,然后进入下一个周期的指令的解码和执行。

通过以上的步骤,单片机可以按照程序存储器中的指令序列顺序执行各种功能。

每个指令的执行时间取决于单片机的时钟频率和指令的执行周期。

在实际应用中,我们可以根据具体的需求和性能要求来选择合适的单片机,并编写相应的指令序列来实现所需的功能。

总结:单片机指令的执行流程包括指令的获取、指令的解码、指令的执行、状态改变和回到第一步等步骤。

通过这一系列的操作,单片机可以按照指令序列来控制各种电子设备。

了解单片机指令的执行流程对于学习和应用单片机控制技术非常重要。

只有深入理解了单片机的执行流程,才能编写出高效、可靠的程序代码。

单片机课程设计-单片机控制步进电机

单片机课程设计-单片机控制步进电机

单片机课程设计-单片机控制步进电机单片机课程设计单片机控制步进电机一、引言在现代自动化控制领域,步进电机以其精确的定位和可控的转动角度,成为了众多应用场景中的关键组件。

而单片机作为一种灵活、高效的控制核心,能够实现对步进电机的精确控制,为各种系统提供了可靠的动力支持。

本次课程设计旨在深入研究如何利用单片机来有效地控制步进电机,实现特定的运动需求。

二、步进电机的工作原理步进电机是一种将电脉冲信号转换为角位移或线位移的开环控制电机。

它由定子和转子组成,定子上有若干个磁极,磁极上绕有绕组。

当给绕组依次通电时,定子会产生磁场,吸引转子转动一定的角度。

通过控制通电的顺序和脉冲数量,可以精确地控制电机的转动角度和速度。

三、单片机控制步进电机的硬件设计(一)单片机的选择在本次设计中,我们选用了常见的_____单片机。

它具有丰富的引脚资源、较高的运算速度和稳定的性能,能够满足控制步进电机的需求。

(二)驱动电路为了驱动步进电机,需要使用专门的驱动芯片或驱动电路。

常见的驱动方式有全桥驱动和双全桥驱动。

我们采用了_____驱动芯片,通过单片机的引脚输出控制信号来控制驱动芯片的工作状态,从而实现对步进电机的驱动。

(三)接口电路将单片机的引脚与驱动电路进行连接,需要设计合理的接口电路。

接口电路要考虑信号的电平匹配、抗干扰等因素,以确保控制信号的稳定传输。

四、单片机控制步进电机的软件设计(一)控制算法在软件设计中,关键是确定控制步进电机的算法。

常见的控制算法有脉冲分配法和步距角细分法。

脉冲分配法是根据电机的相数和通电顺序,按照一定的时间间隔依次输出控制脉冲。

步距角细分法则是通过在相邻的两个通电状态之间插入中间状态,来减小步距角,提高电机的转动精度。

(二)程序流程首先,需要对单片机进行初始化设置,包括引脚配置、定时器设置等。

然后,根据用户的输入或预设的运动模式,计算出需要输出的脉冲数量和频率。

通过定时器中断来产生控制脉冲,并按照预定的顺序输出到驱动电路。

MCS-51单片机在注塑过程中的顺序控制

MCS-51单片机在注塑过程中的顺序控制

MCS -51单片机在注塑过程中的顺序控制夏晓玲(鄂州大学 机电工程系, 湖北 鄂州 436000)摘要:该文介绍了运用MCS -51单片机及其接口,实现对注塑过程中的顺序控制,针对控制中的实际问题,进行状态检测和显示,对于故障现象给出声、光提示和报警,并作出抗干扰设计,保证系统可靠稳定运行。

关键词:单片机;接口;顺序控制;抗干扰设计 中图分类号:TP271+2文献标识码:A 文章编号:1008-9004(2004)04-0031-03 一、引言微型计算机是大规模集成电路技术发展的产物,由于实际应用的需要,它正向着两个不同的方向发展:一个是向高速度、大容量、高性能的高档微机方向发展,另一个则是向稳定可靠、体积小和价格廉的单片机方向发展。

单片机因其将中央处理器(CPU )、随机存储器(RAM )、只读存储器(ROM )、中断系统、定时/计数器以及I/O 口集成在一块芯片上而得名[1]。

单片机主要应用于控制领域,用以实现各种测试和控制功能。

在工业控制中,像冲压、注塑、制瓶、轻纺等生产过程都是一些连续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称作顺序控制。

注塑机工艺过程大致分为“合模———注塑———延时———开模———产伸———产退几个顺序动作。

本文基于以上情况用MCS —51单片机对注塑机工艺过程实行控制,具体介绍了控制原理与组成,单片机及接口电路,控制方框流程图,系统软件设计,以及实际运行情况等。

二、控制原理及组成据2004年《中国教育技术装备》,本系统由以下几部分组成:1、单片机;2、I/O 接口;3、电气控制;4、给定及显示;5、状态检测及显示打印;6、故障检测及声光报警;7、抗干扰电路;8、系统工作软件。

键盘输入给定、相应参数设置,充分利用单片机及接口电路,实现运行过程中的各项控制,声、光报警,显示和打印等。

在系统设计中考虑了多项故障保护和检测:过电压保护、欠电压保护、过电流保护、光电隔离等。

单片机实验 工业顺序控制

单片机实验  工业顺序控制
2、学习Keil,Proteus软件使用
二、实验说明
AT89C51的P1.0—P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,低电平启动。P3.3为外故障输入模拟开关,P3.3为0时不断告警。P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。
1)P3.4连K1,P3.3连K2,P1.0-P1.6分别连到L1-L7, P1.7连电子音响SOUND输入端;
2)K1开关拨在下面,K2拨在上面;
3)K1拨在下面(显低电平),各道工序应正常进行;
4)K2拨在下面(显低电平),应有声音报警(人为设置故障),可从虚拟示波器观察SOUND信号变换情况;
P1=0x7f; /*关输出*/
while(!INT1) /*若故障未消除,则报警*/
{ for(i=0;i<0xa0;i++) /*给蜂鸣器发震Leabharlann 脉冲*/{ P1_7=1;
Delay(50);
P1_7=0;
Delay(50);
}
P1_7=0;
Delay(6550);
}
P1=TT; /*恢复现场*/
unsigned char TT;
void Delay(unsigned int value) /*延时子程序*/
{
while(value!=0)
value--;
}
void int1()interrupt 2 using 0 /*中断服务程序--暂停并警*/
{
int i;
TT=P1; /*保护现场*/
}
void main (void)
{

单片机指令的时序和延迟控制

单片机指令的时序和延迟控制

单片机指令的时序和延迟控制单片机(Microcontroller)是一种集成了中央处理器(CPU)、存储器和各种输入输出接口等功能于一体的微型计算机系统。

在使用单片机编程时,时序和延迟控制是非常重要的概念。

本文将探讨单片机指令的时序以及如何进行延迟控制,以帮助读者更好地理解和应用单片机。

一、时序控制的重要性在单片机编程中,时序控制是指按照一定的时间顺序来执行不同的操作或指令。

单片机内部的时钟信号根据一定的频率发生变化,每个时钟周期内,单片机都会执行一条指令。

因此,了解和掌握时序控制是实现正确功能的关键。

二、时序控制的方法单片机的指令执行时间主要取决于以下两个方面的时序控制方法:1. 硬件延迟控制硬件延迟控制是通过硬件电路来实现的,常见的硬件延迟控制方法包括使用门电路、计数器、定时器等。

通过这些硬件电路,我们可以准确控制指令的执行时间,实现不同指令的时序控制。

例如,可以使用门电路来控制指令的执行次序。

当满足特定条件时,门电路才允许指令通过,否则会阻止指令的执行。

这样可以实现特定指令的延迟执行和条件判断。

2. 软件延迟控制软件延迟控制是通过软件编程的方式来实现的。

当需要延迟一段时间让某个指令执行完毕后再执行后续指令时,可以使用软件编写延迟循环。

延迟循环是通过无意义的循环次数来实现一段时间的延迟。

在延迟循环中,通过对计数器递增或递减进行循环控制,从而实现指定时间的延迟。

三、延迟控制的应用延迟控制在单片机编程中非常常见,可以应用于各种场景和需求。

1. 时序控制在某些情况下,我们需要按照特定的时序控制来保证系统的稳定性和正确性。

例如,当控制设备进行数据传输时,需要根据设备的时序要求来控制指令的执行次序。

延迟控制可以确保每个指令在正确的时间执行,避免数据传输错误或设备死锁等问题。

2. 输入输出控制延迟控制还可以用于输入输出控制。

比如,当需要与外部设备进行通信时,我们需要根据外部设备的规定时序进行数据的读写。

单片机课程设计单片机实现的顺序控制

单片机课程设计单片机实现的顺序控制

电气及自动化课程设计报告题目:单片机实现的顺序控制课程:单片机系统设计与Proteus仿真学生姓名:学生学号:年级:专业:班级:指导教师:2015年9月目录一、课程设计性质和目的单片机课程设计是单片机原理与应用及C51程序设计课程结束后的一门综合性实践课;利用所学知识用单片机实现顺序控制;所选题目单片机实现的顺序控制紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度;通过电路设计、安装、调试等一系列环节的实施使我对单片机有了更进一步的了解,并且是我有了以下收获;1加强了对单片机和C语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识;2用单片机模拟实现具体应用,使个人设计能够真正使用;3把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼;4提高了利用已学知识分析和解决问题的能力;二、软件介绍1、 ProteusProtues软件是英国Lab Center Electronics公司出版的EDA工具软件该软件中国总代理为广州风标电子技术有限公司;它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件;它是目前比较好的仿真单片机及外围器件的工具;虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐;Proteus是世界上着名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计;是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型;在编译方面,它也支持IAR、Keil和MATLAB等多种编译器;2、 Keil uVision4KeilC51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用;Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境μVision将这些部分组合在一起;运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统;如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍;三、设计要求及原理说明1 、课程设计的任务与要求在工业生产中,利用单片机的数字量输出可实现顺序控制;例如,注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机控制很容易实现;单片机的控制注塑机的7道工序,7道工序用控制7只发光二极管的点亮来模拟;设定每道工序时间转换以延时来表示;为“故障”开关,合上为故障报警;控制上的音响发出报警声响;报警声响只有在工作期间才会响起,而停止工作期间报警不会响起;脚上的单刀双掷开关作为“启动”或“停止”开关;设定前6道工序中只有一位输出,只点亮1只发光二极管,第7道工序有3位同时输出、、上的3只发光二极管同时点亮;2 、原理说明本题目利用单片机的输出的高低电平来控制发光二极管的亮与灭,表示工业生产过程的顺序控制进程,输出的高低电平控制是否发出警报声响;与作为输出,单片机检测与的输出电平,来判断“故障”或“停止”开关的状态;四、设计主要流程先分析设计要求,根据设计要求来设定代码程序,然后进行代码的编写,接着对代码进行编译校验,检查错误,改正错误;接着根据设计要求和代码,进行顺序控制器的原理电路图设计,此步要在Protues软件进行绘制仿真,然后根据设计要求对绘制出的原理电路图进行测试,如若不符合设计要求继续更改,直至符合要求为止;然后进行电路模拟,将符合设计要求的电路先行保存;再将源程序代码用Keil软件生成hex文件;再利用stc软件将生成的hex文件传输到单片机中完成验证;大致设计流程如下图所示;“生成hex文件并传输到单片机中”,这一设计步骤由于电脑原因无法连接C51单片,所以无法实现;流程图五、顺序程序设计通过分析设计要求可知,需要完成单片机输出的高低电平来控制发光二极管的亮与灭,表示工业生产过程的顺序控制进程,输出的高低电平控制是否发出警报声响;与作为输出,单片机检测与的输出电平,来判断“故障”或“停止”开关的状态;则设计程序代码及其解释如下:void main{EX1=1;顺序控制器的原理电路 对原理电路进行仿真调试如下:图3.仿真电路调试1一、在调试过程1中,当按下按钮开关后会发现7个发光二极管会从上到下依次由“亮”到“灭”,而此时引脚上的单刀双掷开关置于启动向上处,此时电路正常工作;如图2所示二、当单刀双掷开关置于停止向下处时电路状态如图3所示;最后三个发光二极管会亮,前四个会灭,并保持这种状态;三、当单刀双掷开关置于启动向上处时,将引脚上的开关闭合,此时电路状态如图4所示;此时电路处在“故障”状态,LS1处SOUNDER 会发出警报声,表示电路故障;图4.仿真电路调试2图5.仿真电路调试3七、总结通过本课程设计,我对单片机的工作原理以及运用要求有了更进一步的了解,对我的动手能力,编程能力都有很大的帮助;这次课程设计的控制要求有:用七只发光二极管模拟工业控制中的7道工序,高电平点亮,每道工序用定时器进行工序间的顺序转换;我首先收集了大量的资料,查找有关集成芯片和器件的文献,只有对各种元器件有了充分的了解之后在实际的操作才会更快;在操作过程中我发现自己的电路图接对了,但是却无法仿真出来,仔细检查后发现没有把代码加入电路中;可见如果不对整个设计的每一个细节都了解的清清楚楚的话,哪怕做对了,你都搞不懂这是怎么回事;这告诉我们,以后无论在工作还是在生活中,都要认真对待每一个细节,不能得过且过,不求甚解;在编程方面一直是我的弱项,好多程序我都搞不明白,这个时候我都会尽量去问同学,在课程设计的过程中,同学之间的相互帮助是相当重要的,有时自己的一个坎半天都过不去,但是说不定同学的一个点拨,我们就通了;所以,我们要学会团结协作,这样,才会事半功倍;这次的课程设计教会我们的不止是专业知识,在生活道理上也教会了很多,让我们终生受益;八、参考书籍①、单片机原理与应用及C51程序设计第3版清华大学出版社②、基于Protues的单片机课程的基础实验与课程设计人民邮电出版社③、单片机课程设计实例指导北京航空航天大学出版社。

单片机课程设计理念

单片机课程设计理念

单片机课程设计理念一、课程目标知识目标:1. 理解单片机的基本原理和结构,掌握其工作流程。

2. 学会使用单片机的编程语言,如C语言,编写简单的程序代码。

3. 掌握单片机的输入输出接口功能,并能够进行基本的电路连接。

技能目标:1. 能够运用所学知识,设计并实现简单的单片机控制系统。

2. 培养学生的动手实践能力,通过编程和电路搭建,解决实际问题。

3. 培养学生的团队协作能力,能够与他人合作完成复杂的单片机项目。

情感态度价值观目标:1. 激发学生对单片机技术的兴趣,培养其探究精神和创新意识。

2. 培养学生勇于尝试、面对失败的积极态度,提高解决问题的自信心。

3. 增强学生的科技意识,使其认识到单片机在现实生活中的广泛应用和价值。

课程性质:本课程为实践性较强的学科,注重理论联系实际,培养学生的动手操作能力和创新能力。

学生特点:学生具备一定的电子基础和编程能力,对单片机有一定了解,但实践经验不足。

教学要求:结合学生特点和课程性质,采用项目驱动教学法,使学生在实践中掌握单片机知识,提高综合运用能力。

将课程目标分解为具体的学习成果,以便于教学设计和评估。

二、教学内容1. 单片机原理概述:介绍单片机的组成、工作原理及性能特点,对应教材第一章内容。

- 单片机的结构及功能- 单片机的工作流程及性能参数2. 单片机编程语言:学习C语言编程基础,掌握单片机编程规范,对应教材第二章内容。

- C语言基本语法和数据类型- 单片机编程规范与技巧3. 输入输出接口:学习单片机的I/O接口功能及应用,对应教材第三章内容。

- I/O接口的工作原理- 常用I/O接口电路设计4. 中断与定时器:了解中断系统的工作原理,学习定时器的应用,对应教材第四章内容。

- 中断系统原理与编程- 定时器功能及应用5. 单片机应用实例:结合实际项目,锻炼学生的动手实践能力,对应教材第五章内容。

- 简单控制系统设计与实现- 综合项目分析与实践教学大纲安排:共分为五个阶段,每阶段2-3课时,按照教材章节顺序进行教学。

单片机设计_按键顺序控制加减计数(1602_液晶显示)_程序

单片机设计_按键顺序控制加减计数(1602_液晶显示)_程序

#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define LCD_IO P2sbit KK1 = P3^2; //按键输入;sbit KK2 = P3^3; //按键输入;sbit LCD_RS = P3^5;sbit LCD_RW = P3^6;sbit LCD_EN = P3^7;uchar code LCD_line1[] = " The Counter";int idata mydata=0;/************************************************************** * 名称: Delay_1ms()* 功能: 延时子程序,延时时间为1ms * x* 输入: x (延时一毫秒的个数)* 输出: 无***************************************************************/ void Delay_1ms(uint x){uchar i, j;for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);}/************************************************************** * 名称: lcd_bz( )* 功能: 测试忙碌子程序* 输入: 无* 输出: result***************************************************************/ bit lcd_bz(){bit result;LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();_nop_();_nop_();result=(bit)(P3&0x80);LCD_EN = 0;return result;}/*************************************************************** 名称: W_LCD_Com( )* 功能: 写指令子程序* 输入: com* 输出: 无***************************************************************/void W_LCD_Com(uchar com){while(lcd_bz());LCD_RS = 0; LCD_RW=0; LCD_EN = 0; // LCD_RS和R/W同时为低电平时,可以写入指令LCD_IO = com; Delay_1ms(5); //下面用EN输入一个高脉冲LCD_EN = 1; Delay_1ms(5); LCD_EN = 0;}/*************************************************************** 名称: W_LCD_Dat( )* 功能: 写数据子程序* 输入: dat* 输出: 无***************************************************************/void W_LCD_Dat(uchar dat){while(lcd_bz());LCD_RS = 1; LCD_RW=0;LCD_EN = 0; // LCD_RS为高,LCD_RW为低时,可以写入数据LCD_IO = dat; Delay_1ms(5); //下面用EN输入一个高脉冲LCD_EN = 1; Delay_1ms(5); LCD_EN = 0;}/*************************************************************** 名称: W_LCD_STR( )* 功能: 写字符串子程序* 输入: *s* 输出: 无***************************************************************/void W_LCD_STR(uchar *s){while(*s > 0) {W_LCD_Dat(*s); s++;}}/*************************************************************** 名称: LCD_cursor( )* 功能: 设置光标位置子程序* 输入: pos* 输出: 无***************************************************************/void LCD_cursor(uchar pos) //LCD光标定位到处{W_LCD_Com(pos+0x80); //第一行地址是0x80}/*************************************************************** 名称: initial( )* 功能: 初始化子程序* 输入: 无* 输出: 无* 指令:#define LCD_AC_AUTO_INCREMENT 0x06 //数据读、写操作后,AC自动增一#define LCD_DISPLAY_ON 0x0C //显示开#define LCD_DISPLAY_DOUBLE_LINE 0x38 //两行显示***************************************************************/void initial(){W_LCD_Com(0x06|0x04);W_LCD_Com(0x0c|0x08);W_LCD_Com(0x38);W_LCD_STR(LCD_line1);}/*************************************************************** 名称: Main()* 功能: 主函数***************************************************************/void main(){bit flag;uchar temp;uchar pos;Delay_1ms(10) ;initial();while(1){pos=0x4f;if(mydata>255)mydata=0;else if(mydata<0)mydata=255;if(mydata>127) //把mydata当做-128~127的有符号数来显示{flag=1;temp=256-mydata;}else {temp=mydata;flag=0;}LCD_cursor(pos);W_LCD_Dat((temp%10)+'0');pos--;//光标左移(其实光标不显示,只是为了输出高位)Delay_1ms(10);if(temp/100 || temp/10){LCD_cursor(pos);W_LCD_Dat((temp/10)%10+'0');pos--;}Delay_1ms(10);if(temp/100){LCD_cursor(pos);W_LCD_Dat((temp/100)%10+'0');pos--;}if(flag){LCD_cursor(pos);W_LCD_Dat('-');//负号}else{ LCD_cursor(pos);W_LCD_Dat(' ');//清除负号(空格代替)}if(!KK1){while(KK2);while(!KK2);mydata++;}else if(!KK2){while(KK1);while(!KK1);mydata--;}} }。

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

单片机课程设计单片机实现的顺序控制内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)电气及自动化课程设计报告题目:单片机实现的顺序控制课程:单片机系统设计与Proteus仿真学生姓名:学生学号:年级:专业:班级:指导教师:2015年9月目录一、课程设计性质和目的单片机课程设计是《单片机原理与应用及C51程序设计》课程结束后的一门综合性实践课。

利用所学知识用单片机实现顺序控制。

所选题目《单片机实现的顺序控制》紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度。

通过电路设计、安装、调试等一系列环节的实施使我对单片机有了更进一步的了解,并且是我有了以下收获。

(1)加强了对单片机和C语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。

(2)用单片机模拟实现具体应用,使个人设计能够真正使用。

(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。

(4)提高了利用已学知识分析和解决问题的能力。

二、软件介绍1、 ProteusProtues软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前比较好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上着名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。

2、 Keil uVision4KeilC51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

三、设计要求及原理说明1 、课程设计的任务与要求在工业生产中,利用单片机的数字量输出可实现顺序控制。

例如,注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机控制很容易实现。

单片机的P1.0-P1.6控制注塑机的7道工序,7道工序用控制7只发光二极管的点亮来模拟。

设定每道工序时间转换以延时来表示。

P3.3为“故障”开关,合上为故障报警。

控制P1.7上的音响发出报警声响。

报警声响只有在工作期间才会响起,而停止工作期间报警不会响起。

P3.4脚上的单刀双掷开关作为“启动”或“停止”开关。

设定前6道工序中只有一位输出,只点亮1只发光二极管,第7道工序有3位同时输出(P1.6、P1.5、P1.4上的3只发光二极管同时点亮)。

2 、原理说明本题目利用单片机的P1.0-P1.6输出的高低电平来控制发光二极管的亮与灭,表示工业生产过程的顺序控制进程,P1.7输出的高低电平控制是否发出警报声响。

P3.3与P3.4作为输出,单片机检测P3.3与P3.4的输出电平,来判断“故障”或“停止”开关的状态。

四、设计主要流程先分析设计要求,根据设计要求来设定代码程序,然后进行代码的编写,接着对代码进行编译校验,检查错误,改正错误。

接着根据设计要求和代码,进行顺序控制器的原理电路图设计,此步要在Protues软件进行绘制仿真,然后根据设计要求对绘制出的原理电路图进行测试,如若不符合设计要求继续更改,直至符合要求为止。

然后进行电路模拟,将符合设计要求的电路先行保存。

再将源程序代码用Keil软件生成hex文件。

再利用stc软件将生成的hex文件传输到单片机中完成验证。

大致设计流程如下图所示。

(“生成hex 文件并传输到单片机中”,这一设计步骤由于电脑原因无法连接C51单片,所以无法实现。

)流程图五、顺序程序设计通过分析设计要求可知,需要完成单片机P1.0-P1.6输出的高低电平来控制发光二极管的亮与灭,表示工业生产过程的顺序控制进程,P1.7输出的高低电平控制是否发出警报声响。

P3.3与P3.4作为输出,单片机检测P3.3与P3.4的输出电平,来判断“故障”或“停止”开关的状态。

则设计程序代码及其解释如下:void main(){EX1=1; //外部中断1允许IT1=0; //电平触发中断EA=1; //总中断允许while(1){P1&=0xfe; //工序1,完成后进入工序2Delay(2000);P1&=0xfd; //工序2,完成后进入工序3Delay(2000);P1&=0xfb;Delay(2000);P1&=0xf7;Delay(2000);P1&=0xef;Delay(2000);P1&=0xdf;Delay(2000);P1&=0x8f;Delay(2000); //7道工序完成,重新开始循环}}void int1_isp() interrupt 2 //外部中断1中断服务函数{P=~P3_4; //报警}}在keil软件中测试如下:六、电路的设计与仿真顺序控制器的原理电路及仿真如下图2所示。

电路中的7个发光二极管从上到下分别代表7道工序。

仿真运行,发光二极管将按顺序控制规律来点亮。

P3.4引脚上的单刀双掷开关用来选择控制操作启动(向上)或停止(向下)。

P3.3引脚上的开关闭合,表示发生故障,从而控制P1.7上的音响发出警报响。

报警声响只有在工作期间才会响起,而停止工作期间警报不会响起。

P1口的P1.0~P1.6接七只发光二极管,P1.7接报警器,P3.4接开工启动开关,P3.2接外部故障输入模拟开关。

主程序流程图:当程序启动,开启中断,并使P1、P3口初始化,当给start开始信号即P3.4得电时,运行主程序中使发光二极管得电的程序,从L0至L7,按顺序每次只点亮一只二极管,并延时一段时间,然后点亮下一只二极管,当第七只二极管得电延时完成后,程序跳转到工序1开始的地方,按此规律从工序1到工序7依次循环进行下去。

中断服务子程序:当外部故障输入模拟开关即P3.3得电时,运行中断子程序,先使P1=0x00即关闭输出保护现场,speak=1使报警器报警。

然后判断故障情况,如果故障清除,则恢复现场跳出中断子程序回到主程序;如果故障没有清除,则报警器继续报警直至故障清除。

图2. 顺序控制器的原理电路对原理电路进行仿真调试如下:图3.仿真电路调试1 (一)、在调试过程1中,当按下按钮开关后会发现7个发光二极管会从上到下依次由“亮”到“灭”,而此时P3.4引脚上的单刀双掷开关置于启动(向上)处,此时电路正常工作。

如图2所示(二)、当单刀双掷开关置于停止(向下)处时电路状态如图3所示。

最后三个发光二极管会亮,前四个会灭,并保持这种状态。

(三)、当单刀双掷开关置于启动(向上)处时,将P3.3引脚上的开关闭合,此时电路状态如图4所示。

此时电路处在“故障”状态,LS1处SOUNDER 会发出警报声,表示电路故障。

图4.仿真电路调试2图5.仿真电路调试3七、总结通过本课程设计,我对单片机的工作原理以及运用要求有了更进一步的了解,对我的动手能力,编程能力都有很大的帮助。

这次课程设计的控制要求有:用七只发光二极管模拟工业控制中的7道工序,高电平点亮,每道工序用定时器进行工序间的顺序转换。

我首先收集了大量的资料,查找有关集成芯片和器件的文献,只有对各种元器件有了充分的了解之后在实际的操作才会更快。

在操作过程中我发现自己的电路图接对了,但是却无法仿真出来,仔细检查后发现没有把代码加入电路中。

可见如果不对整个设计的每一个细节都了解的清清楚楚的话,哪怕做对了,你都搞不懂这是怎么回事。

这告诉我们,以后无论在工作还是在生活中,都要认真对待每一个细节,不能得过且过,不求甚解。

在编程方面一直是我的弱项,好多程序我都搞不明白,这个时候我都会尽量去问同学,在课程设计的过程中,同学之间的相互帮助是相当重要的,有时自己的一个坎半天都过不去,但是说不定同学的一个点拨,我们就通了。

所以,我们要学会团结协作,这样,才会事半功倍。

这次的课程设计教会我们的不止是专业知识,在生活道理上也教会了很多,让我们终生受益。

八、参考书籍①、单片机原理与应用及C51程序设计(第3版)清华大学出版社②、基于Protues的单片机课程的基础实验与课程设计人民邮电出版社③、单片机课程设计实例指导北京航空航天大学出版社。

相关文档
最新文档