综合电子电路设计与调试实验报告可编程顺序控制器.doc

上传人:good****022 文档编号:116507747 上传时间:2022-07-05 格式:DOC 页数:24 大小:764.48KB
返回 下载 相关 举报
综合电子电路设计与调试实验报告可编程顺序控制器.doc_第1页
第1页 / 共24页
综合电子电路设计与调试实验报告可编程顺序控制器.doc_第2页
第2页 / 共24页
综合电子电路设计与调试实验报告可编程顺序控制器.doc_第3页
第3页 / 共24页
点击查看更多>>
资源描述
综合电子电路设计与调试实 验 报 告题目: 可编程顺序控制器 学院: 专业: 班级: 姓名: 学号: 2009年 11 月 30 日课 堂考 勤(20分)实 验报 告(20分)PCB制作、安装焊接软硬件调试(60分)总 评成 绩指 导教 师综合电子电路设计与调试 可编程程序控制器(一)研制意义在我们日常生活中,可编程顺序控制器的通用性极强,在工业和家电控制中经常采用顺序控制器,实现工作的节拍运行,也就是第一步工作完成了,才开始下一步,每一步都有持续的时间。作为传统继电接触控制的替代产品,这个系统由于它可以通过软件编程来改变控制过程,而且具有硬件电路简单,编程容易,抗干扰能力强及可靠性高等优点,并且非常适合于在恶劣的工业环境下使用。(二)研制任务a.研制一款基于AT89C51单片机、采用JQC-3F继电器和LCD1602C液晶显示器的可编程顺序控制器;b.硬件电路的设计与制作,软件程序的编写与调试;c.设计报告的撰写。(三)设计要求 a.键盘图例 键盘按键布局 键盘内码值(ASCII码) b.显示图例(四)系统硬件框图(五)硬件各单元电路设计及原理图 a.继电器输出单元电路由于AT89C51复位时P0口(接上拉电阻)为FFH,系统一开机,继电器触点就会闭合,因此在P0口的输出与ULN2003之间加了74LS04反向器,这样使得系统在开机时发光二极管就处于暗的状态。(1)若P0.0=1,则OUT1=0V 继电器的VCC和GND之间的电压差为12V 继电器线圈通电 常开触点闭和(AA为常开触点,B为常闭触点) LED亮。(2)若P0.0=0,则OUT1=12V 继电器的 VCC和GND之间的电压差为0V 继电器线圈不通电 常开触点不闭和(AA为常开触点,B为常闭触点) LED暗。b.继电器输出单元电路原理图 c.夜晶显示单元电路(1)AT89C51的P1.0P1.7控制LCD1602C液晶显示器的8根数据线(DB0DB7)。(2)AT89C51的P3.5P3.7分别控制LCD1602C液晶显示器的3条控制线(RS、R/W、E),其中P3.5控制RS,P3.6控制R/W,P3.7控制使能端口 E。d.液晶显示单元电路原理图e.键盘输入单元电路(1)系统中的键盘输入单元电路是采用44阵列键盘,与单片机AT89C51的P2口连接;(2)按键S1S15采用扫描方式得到键盘码;(3)按键S16作为单片机复位按键。f.键盘输入单元电路原理图g.电源保护电路(六)系统软件主程序流程图系统功能及工作过程描述:a.先接通电源,调整输入电压为5V左右,液晶显示器分两行显示Please Input和 Number:,我从键盘输入我的学号:06220404。弹出两行字母分别为:Name:Xuyanxin和Number:06220404;b.间隔60秒左右紧接着分两行显示PLEASE INPUT HOW和MANY STAGE:( ),输入数字2,弹出两行字母分别为:STEP_OUT_TIME和INPUT:。我从键盘输入1_1100_10,按输入键,接着输入2_0101_10,连续按输入键和执行键;c.可以观察到有四盏绿灯先是仅有前两盏亮,维持10秒后就是第2和第4盏灯亮,又维持了10秒,最后弹出了两行字母OVER和PLEASE RESET,结束整个测试过程。(七)系统调试 a.系统硬件调试(1)ULN2003的1脚为输入端,1016脚为输出端,8脚接地,9脚接电源(+12V);(2)若输入端1脚为低电平,则对应的输出端16脚输出为+12V,继电器不会动作。(继电器的VCC和GND之间的电压差为0V继电器线圈不通电常开触点不闭合);(3)若输入端1脚为高电平,则对应的输出端16脚输出为0V,继电器常开触点闭合。(继电器的 VCC和GND之间的电压差为+12V继电器线圈通电常开触点闭合)。b.系统软件调试(1)LCD显示:在任意位置显示任意字符或字符串;清屏,光标闪烁及移动;最后的实时输出显示。(2)显示按键对应的功能:当有键按下时,运行相应的程序,观察LCD上是否能显示键值或相应功能。可以同时观察DATA及SFR窗口中相应寄存器中的数据是否正确。c.系统综合调试(1)系统上电时,LCD上显示“*PLEASE INPUT HOW MANY STAGE ()BU”。(2)按数字键,键入要求的步骤数,例如要实现3个步骤,则只需按在括号内键入3就可以了,输入后按确认键。(3)接着输入控制数据,每输入一个步骤后按输入键,可以在RAM数据窗口查看每一步数据是否已保存。(4)按执行键,按下此键后,系统就会按照输入的数据执行,控制每一步的工作时间和继电器状态,并且会在LCD上显示出来。d.调试的主要事项(1)调试使用仪器:万用表,电压电流输出器,起子,测试探头,以及Proteous和Keil软件;(2)调试过程中出现的故障,原因及解决方法:当接通电源后,接在电源旁边的红灯并没有亮,经过发现是因为正负极搞错了,于是我又重新参看PCB原理图,找到正极的准确位置,把原来的灯取出来,然后又焊上了一个,结果红灯一接通电源就亮了;当前期软件显示正确无误的前提下,结果出现了四盏绿灯没有按照预测的那样亮起来,原因是我用的是AT89C51的芯片,但是里面烧写的程序中关于倒计时的部分是不能在其中实现的,这能在AT89C52芯片中才可以的,结果通过换芯片,四盏绿灯按照程序准确的显示了亮灭情况;此外,在调试软件程序编程过程中,一开始总是实现不了输入学号后弹出姓名和学号,原来是因为我对于Keyscan这个函数的调用不是很熟悉,经过老师的指导和协助,最终我编好了整个程序,并在Proteous中进行了仿真,一切都显示正确。(七)设计电路的优缺点及自身收获和体会 a.电路的优缺点: (1)电路的优点:这次试验研制的是一款基于AT89C51单片机、采用JQC-3F继电器和LCD1602C液晶显示器的可编程顺序控制器,它的设计电路简单易行,功能较强。由于采用编程来控制要实现的目的,具有很大的灵活性,可以通过变换程序达到多种功能; (2)电路的缺点:这次试验我们采用2K的电阻代替了阻值较小的电阻,因此使得四盏绿灯亮度不够。本次没有采用继电器,容易使四盏绿灯的电压不是很稳定。而且本次试验没有使用继电器,使绿灯的电压不能很稳定。 c.试验过程中的收获和体会 在此次试验中,我学会了如何运用Proteous和Keil软件调试程序,懂得了一些基本的函数调用方法和一些新函数的使用(如Keyscan函数的使用),看到自己编写的程序仿真成功,让我很开心,尝到了学习的乐趣和成就感。当然,在调试过程中,我发现我的红灯不亮时,原因竟然是因为我的正负极接错了,所以我总结了一下自己,焊板时一定要参照PCB原理图,认真仔细,关注每一个引脚,相信我以后会做的更好。 (八)附录 a.硬件电路原理图和PCB图 (1)完整的硬件电路原理图 (2)PCB原理图 b.软件程序源代码(核心程序) void yanxin() uchar j;uchar code row1=Name:Xuyanxin; /12个字符uchar code row2=Number:06220404;init(); /初始化液晶 write_com(0 x01); write_com(0 x0f); write_com(0 x0c); for(j=0;j30;j+) delay(250); write_com(0 x82); write_com(0 x80+1); /向液晶发出命令,命令代码为0 x80,表示设置光标在第一行的开始,见文档1602液晶说明.pdf的4.3.1节 for(j=0;j12;j+) write_shu(row1j); /向液晶提供需要显示的字符write_com(0 x80+0 x40+1);/向液晶发出命令,光标移动到第二行,并空出第一个字符 for(j=0;j15;j+) write_shu(row2j); /向液晶提供需要显示的字符 void Xu() uchar i,j,g,h;uchar code line1=Please Input; /12个字符 uchar code line2=Number:;init(); /初始化液晶 write_com(0 x80); /向液晶发出命令,命令代码为0 x80,表示设置光标在第一行的开始,见文档1602液晶说明.pdf的4.3.1节 for(i=0;i12;i+) write_shu(line1i); /向液晶提供需要显示的字符 write_com(0 x80+0 x40);/向液晶发出命令,光标移动到第二行,并空出第一个字符 for(i=0;i0) h=g; g=0; if(h=0 x30 & h=0 x39) if(q=1) write_com(0 x0f); write_as(0 x80+0 x40+8+i,h); i+; q=0; /判断是否是确认键 if(h=12) break; h=0; void start()/开机提示,并输入步数 uchar i,b,temp0,temp1; uchar code start=PLEASE INPUT HOW; uchar code start1= MANY STAGE:( ); write_com(0 x80); for(i=0;i16;i+) write_shu(starti); write_com(0 x80+0 x40); for(i=0;i0) temp1=temp0; temp0=0; if(temp10 x30&temp1=0 x39) write_shu(temp1); write_com(0 x80+0 x40+14); b=temp1; if(b!=0) while(temp1=12) bu=b;/ascii 码 write_com(0 x80+0 x40+14);write_com(0 x0c); write_shu(bu); input(); void input()/输入步数,操作,时间 uchar i,j,temp0,temp1; uchar b9; uchar code table=STEP_OUT_TIME; uchar code table1=INPUT:; write_com(0 x01); write_com(0 x82); for(i=0;i16;i+) write_shu(tablei); write_com(0 x80+0 x40); for(i=0;i6;i+) write_shu(table1i); i=0; j=0; write_com(0 x0f); while(i0) temp1=temp0; temp0=0; if(i=0 x30&temp1=0 x39)|(temp1=0 x5f)&(j9) bj=temp1; if(q=1) write_com(0 x0f); write_as(0 x80+0 x40+6+j,bj); j+; q=0; if(temp1=11)/清除键功能 write_com(0 x80+0 x40+6); write_com(0 x0c); for(j=0;j9;j+) bj=0 x30; write_shu(bj); write_com(0 x80+0 x40+6); write_com(0 x0f); j=0; if(j=9) write_com(0 x0c); if(temp1=13)/输入键功能 for(j=0;j9;j+) aij=bj; write_as(0 x80+0 x40+6+j,aij); for(j=0;j9;j+) bj=0 x30; i+;if(i(bu-0 x30) write_com(0 x80+0 x40+6);for(j=0;j9;j+) write_shu(0 x2a); j=0; if(i=(bu-0 x30)&(temp1=14) while(1) excute(); /执行命令 并OVER void excute() /执行命令 并OVER uchar m; uchar i,j; uchar shi,ge; uchar code table2=BEGIN; uchar code table3=OVER; uchar code table4=PLEASE RESET; i=0; j=0; m=(a07-0 x30)*10+(a08-0 x30); write_com(0 x80+0 x40); for(j=0;j5;j+) write_shu(table2j);TR0=1; /定时器开始工作while(i=(bu-0 x30) for(j=0;j6;j+) write_as(0 x80+0 x40+6+j,aij);d1=ai2-0 x30; d1=!d1;d2=ai3-0 x30; d2=!d2;d3=ai4-0 x30; d3=!d3;d4=ai5-0 x30; d4=!d4; if(tt=1) tt=0; m-;/倒计时 if(m=0) shi=m/10; ge=m%10; write_com(0 x80+0 x40+6+7); write_shu(0 x30+shi); write_shu(0 x30+ge); TR0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; i+; if(i=(bu-0 x30)/over write_com(0 x01); write_com(0 x80+6); for(j=0;j4;j+) write_shu(table3j); write_com(0 x80+0 x40+2);for(j=0;j12;j+) write_shu(table4j); while(1); m=(ai7-0 x30)*10+(ai8-0 x30); TR0=1; /定时器开始工作 shi=m/10; ge=m%10; write_com(0 x80+0 x40+6+7); write_shu(0 x30+shi); write_shu(0 x30+ge); void main() int r=300; Xu(); yanxin(); for(r=0;r300;r+) delay(200); r+; start();while(1);void timer0() interrupt 1 /定时器中断 TH0=(65536-50000)/256; TL0=(65536-50000)%256; t+; if(t=20) tt=1; t=0;c.元器件清单1K电阻2个2K电阻4个4.7K电阻4个10K电阻1个LCD-1602液晶显示器1个AT89C51芯片1个插座16个74LS04芯片1个LED灯5个晶振1个电源插座1个10uF电容2个30PF电容2个电位器1个d.重要芯片引脚资料(1)AT89C51单片机引脚图(2)LCD1602C液晶显示器引脚图 (3)74LS04六反相器引脚图 e.参考文献 可编程顺序控制器课件及相关指导资料。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!