《单片机技术与应用》 课件 项目二 智能车间生产线计数系统设计与制作任务1_第1页
《单片机技术与应用》 课件 项目二 智能车间生产线计数系统设计与制作任务1_第2页
《单片机技术与应用》 课件 项目二 智能车间生产线计数系统设计与制作任务1_第3页
《单片机技术与应用》 课件 项目二 智能车间生产线计数系统设计与制作任务1_第4页
《单片机技术与应用》 课件 项目二 智能车间生产线计数系统设计与制作任务1_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务1检测模块设计与制作单片机技术与应用项目二智能车间生产线计数系统设计与制作任务1检测模块设计与制作三诺生物传感有限公司【基础任务要求】利用红外光电传感器检测产品进行计数,当计数值达到3时报警,并且每1秒钟信号灯闪烁一次。任务1检测模块设计与制作任务实现四步骤绘制控制电路图焊接硬件电路硬件设计调试控制电路调试控制程序软硬件调试仿真运行实物运行功能实现绘制流程图编程实现三个功能:检测计数、蜂鸣器报警、1秒定时软件设计01020304重点、难点难点STC89C52单片机时钟电路复位电路电源电路指示灯电路系统框图任务1检测模块设计与制作蜂鸣器电路红外光电传感器电路任务1检测模块设计与制作红外光电传感器时钟电路复位电路指示灯电路蜂鸣器电路任务名:检测模块设计与制作元件名称图片型号数量Proteus中的名称单片机芯片AT89C511用AT89C51代替STC89C52晶振12MHZ1CRYSTAL电容22pF2CAP电解电容22μf/16V1CAP-ELEC电阻0.1KΩ1RES电阻470Ω1RES电阻10KΩ1RES发光二极管1LED-RED红外光电传感器1用按钮button代替三极管1PNP蜂鸣器1BUZZER元器件选型硬件电路图任务1检测模块设计与制作硬件设计-绘电路细致规范严谨小锦囊电路绘制规范:用统一规定的元件符号尽量避免导线的交叉导线要求横平竖直设置元器件参数元件放在编辑区内元器件之间要用导线连接软件设计1重点、难点如何用红外光电传感器检测产品并计数?2重点如何实现报警功能?3重点、难点如何实现指示灯隔1秒闪烁?1.红外光电传感器原理小测试:当光电开关检测到前方有物体时,传感器输出(

)。当光电开关没有检测到物体时,传感器输出()。0

1

NPN型光电开关如何用红外光电传感器检测产品并计数?--用来检测物体有无的传感器检测计数功能编程思路开始定义光电传感器连接引脚定义蜂鸣器连接引脚定义指示灯连接引脚定义计数变量js计数变量加1判断计数变量js==3?调用报警功能函数计数变量js清零定义光电传感器连接引脚定义蜂鸣器连接引脚定义指示灯连接引脚判断光电传感器输入状态==0?定义计数变量jsYNN拼图小游戏Y①②③④⑤⑥⑦⑧⑨检测计数功能编程思路知识链接sbitIRIN=P3^6; //红外输入voidjishu()//计数函数{if(IRIN==0) //如果红外输入=0{delay(10); //延时10ms

if(IRIN==0){while(!IRIN);//松手检测……}}}例如:如何实现报警功能?蜂鸣器01给P1.3引脚低电平(响)延时给P1.3引脚高电平(不响)延时重复以上过程报警功能编程思路sbitbeep=P1^3;voidbaojing()//报警函数{beep=0; //蜂鸣器响delay(100);beep=1; //蜂鸣器不响delay(100);}如何实现报警功能?voiddelay(unsignedintz){unsignedintx,y;for(x=z;z>0;z--)for(y=110;y>0;y--);}软件设计3重点、难点如何实现指示灯隔1秒闪烁?知识链接2.定时计数器的结构知识链接结构2个16位T/C分别由8位计数器TH0、TL0、

TH1、TL1组成加“1”计数器控制寄存器TCON方式寄存器TMODT0T1

1.启动控制2.计满溢出控制1.选择定时计数器4种工作方式2.选择定时OR计数3.决定启动方式知识链接3.定时/计数器编程(以1秒为例)第1步:初始化,确定三要素(T0或T1、定时/计数功能、工作方式);(1)方式寄存器TMODGATEC/TM1M0GATEC/TM1M0LSBMSB(89H)TMOD控制T1控制T0门控位功能选择位工作方式选择知识链接GATEC/TM1M0GATEC/TM1M0T1T0TMODGATE:

门控位。设定T1、T0运行时是否受INT0、INT1引脚输入电平的控制。GATE=

0不受外部中断控制C/T=1受外部中断控制0为定时功能1为计数功能知识链接(2)定时计数器的工作方式1GATEC/TM1M0GATEC/TM1M0TMODT1T0方式1的特点:16位的定时计数器,由TH的8位和TL的8位组成。M1M0=01【小测试】采用12MHZ晶振单片机,用T0定时,采用方式1控制,请问TMOD的值是多少?知识链接工作方式工作方式1计数位数16位定时/计数器计数寄存器TH1高8位,TL1低8位或TH0高8位,TL0低8位最大计数值M216=65536初值计算公式X初值=M-T定时时间/T机器周期初值设置TH1=X初值/256TH0=X初值/256TL1=X初值%256TL0=X初值%256特点初值不可自动重载(2)定时计数器的工作方式1【小测试】采用12MHZ晶振单片机,用T1定时,采用方式2控制,请问TMOD的值是多少?知识链接工作方式工作方式2计数位数8位定时/计数器计数寄存器TL1(TL0)被定义为计数器TH1(TH0)被定义为赋值寄存器最大计数值M28=256初值计算公式X初值=M-T定时时间/T机器周期初值设置TH1=X初值/256TH0=X初值/256TL1=X初值%256TL0=X初值%256特点初值可自动重载(3)定时计数器的工作方式2知识链接控制程序:12MHZ用T0定时采用方式1控制voidmain(){

TMOD=0x01;//定时器工作方式

TH0=0xfc;//定时器初值

TL0=0x18;//定时器初值

TR0=1;//定时器0启动}voidtimer0() //1s定时{unsignedinti;for(i=0;i<1000;i++){ TH0=0xfc; TL0=0x18; TR0=1; while(!TF0); TF0=0;}}3.定时/计数器编程(以1秒为例)第2步:计算并设置定时计数初值假设定时1ms,循环1000次,实现1s延时。TH0=0xFCTL0=0x18单片机晶振12MHZ知识链接控制程序:12MHZ用T0定时采用方式1控制voidmain(){

TMOD=0x01;//定时器工作方式

TH0=0xfc;//定时器初值

TL0=0x18;//定时器初值

TR0=1;//定时器0启动}voidtimer0() //1s定时{unsignedinti;for(i=0;i<1000;i++){ TH0=0xfc; TL0=0x18; TR0=1; while(!TF0); TF0=0;}}(2)、控制寄存器TCONLSBMSB(88H)TCONTF1TR1TF0TR0IE1IT1IE0IT0T1、T0

启/停控制位T1、T0

溢出标志位“0”停止“1”启动“1”有溢出“0”无溢出可编程可控制“+1”工作“1”“0”记录有无溢出第3步:启动定时计数器3.定时/计数器编程(以1秒为例)第3步:启动定时计数器控制程序:用T0定时采用方式1控制voidmain()//定时器初始化{

TMOD=0x01;//定时器工作方式

TH0=0xfc;//定时器初值

TL0=0x18;//定时器初值

TR0=1;//定时器0启动}voidtimer0() //1s定时{unsignedinti;for(i=0;i<1000;i++){ TH0=0xfc; TL0=0x18; TR0=1; while(!TF0); TF0=0;}}3.定时/计数器编程(以1秒为例)第4步:计数溢出处理(查询和中断两种方式)3.定时/计数器编程(以1秒为例)第4步:计数溢出处理(查询和中断两种方式)定义循环变量i给循环变量i赋初值i<1000?定时计数器赋初值启动定时计数器YN等待TF0=1TF0=0开始结束延时函数流程图i++voidtimer0(){unsignedinti;for(i=0;i<1000;i++){

TH0=0xFC; TL0=0x18;TR0=1;

while(TF0==0){;}

TF0=0;}}

查询方式

while(TF0==0){;//空语句}TF0=0;while(!TF0)知识链接voidtimer0(){unsignedinti;for(i=0;i<1000;i++){TH0=0xFC;

TL0=0x18; TR0=1; while(!TF0); TF0=0;}}

如何用定时计数器编程实现2秒延时?

如何修改程序呢?【举一反三思维训练】程序代码编写规范:1.字母大小写一致2.标点符号必须在英文状态下输入3.遵循变量命名规则4.注意TH0、TL0、TF0、TR0TH1、TL1、TF1、TR15.注意循环语句的格式勤勉创新坚持【定时计数器编程小结】确定TMOD的值确定定时时间,计算初值,确定循环的次数

启动定时计数器第一步第二步第三步第四步

计数溢出处理(查询方式)#include<reg51.h>//51单片机头文件sbitIRIN=P3^6;//红外光电传感器sbitbeep=P1^3;//蜂鸣器sbitled=P1^7;//信号灯voidjishu();//计数函数声明voidbaojing();//报警函数声明voidtimer0();//1秒定时函数声明voiddelay(unsignedintz);//延时函数声明voidled1();//指示灯闪烁函数声明voidjishu()//计数函数{unsignedintjs;

if(IRIN==0)

//如果红外输入=0{delay(10); //延时10msif(IRIN==0){

while(!IRIN);//松手检测

js++;//计数变量加1if(js==3)//当计数值等于3时,蜂鸣器响{baojing();//调用报警函数js=0;//计数变量清0}}}}voidbaojing() //报警函数{beep=0; //蜂鸣器响

delay(100);//调用延时函数beep=1; //蜂鸣器不响

delay(100);//调用延时函数}voidtimer0() //定时1s函数{unsignedinti;for(i=0;i<1000;i++){TH0=0xFC; TL0=0x18;TR0=1;while(TF0==0){;}TF0=0;}}voiddelay(unsignedintz) //延时函数{unsignedintx,y;for(x=z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论