小型测试系统设计.docx
- 文档编号:28712880
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:20
- 大小:74.58KB
小型测试系统设计.docx
《小型测试系统设计.docx》由会员分享,可在线阅读,更多相关《小型测试系统设计.docx(20页珍藏版)》请在冰豆网上搜索。
小型测试系统设计
一、设计目的.............................................3
二、设计要求.............................................3
三、仪器设备.............................................3
四、硬件线路图及主要芯片说明.............................3
1.系统所使用的开发板上的区域.................................3
2.系统硬件电路图...........................................3
3.系统所用主要芯片说明......................................4
3.1STC89C52RC芯片介绍...................................4
3.2ULN2021A芯片介绍.....................................4
3.3LCD1602液晶介绍......................................4
五、系统工作原理.........................................5
1.步进电机介绍.............................................5
2.控制原理基本框图..........................................5
六、程序框图..............................................6
七、程序清单..............................................7
八、设计体会.............................................12
九、参考文献.............................................12
一、设计目的
通过具体小型测试系统设计,实践单片机系统设计及调试的全过程,以加深对单片机内部结构、功能和指令系统的理解,并进一步学习单片机开发系统的应用及一些外围芯片的接口和编程方法,初步掌握单片机系统的硬、软件设计技术及调试技巧。
了解步进电机的构造、驱动、工作原理以及步进电机的一些指标术语,掌握步进电机的转动控制方式和调速方法。
加深对单片机开发试验仪各部分功能的了解与使用,方便对以后的设计进行开发、编程与调试。
熟练C语言以及函数、中断的使用。
二、设计要求
1)电机转速可以平稳控制
2)通过键盘可以选择电机的转动方式
3)通过键盘可以设置电机的转速
4)显示器可以显示步进电机的运行状况
三、主要仪器设备
设备
数量
单片机开发板
一套
步进电机
一台
按键
四个
ULN2021A驱动芯片
一片
LCD1602
一片
STC89C52RC
一片
四、硬件线路图及主要芯片说明
1.系统所使用的开发板上的区域
步进电机实验区上面有一个四相步进电机及其驱动芯片,用户可以在上面进行步进电机控制的相关实验。
步进电机将电脉冲信号转变为角位移或线位移实现电机转动。
键盘实验区的按键控制步进电机的启动/停止,正/反转,加/减速,本设计采用单键控制启停、单键控制正反转以及两个按键分别控制加减速。
用STC89C52RC单片机实现控制整个步进电机系统的启动/停止,正/反转,加/减速以及驱动LCD1602显示步进电机的运行状况。
2.系统硬件电路图
步进电机运动系统的硬件电路图(用Proteus绘制)如下图所示:
3.系统所用主要芯片说明
3.1STC89C52RC芯片介绍
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
3.2ULN2021A芯片介绍
本设计采用ULN2021A作为步进电机的驱动芯片,ULN2021A电路具有以下特点:
●电流增益高(大于1000)
●带负载能力强(输出电流大于500mA)
●温度范围宽(-40℃—85℃)
●工作电压高(大于50V)
3.3LCD1602液晶介绍
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
五、系统工作原理
1.步进电机介绍
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机是一种感应电机,它的工作原理是利用电子电路将直流电变成分时供电的多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的多相时序控制器。
虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A...),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-...),八拍(A-AB-B-BC-C-CD-D-DA-A...);当通电时序相反时,转向相反。
本设计采用的通电方式是八拍。
2.控制原理基本框图
步进电机控制原理的基本框图如下:
其中P3.2、P3.3为外部中断,本设计采用下降沿触发方式,通过改变用m和n的值来控制电机的启动/停止,正/反转;P3.4、P3.5为定时/计数器中断,本设计采用计数方式,并工作于方式2,将TH0、TL0、TH1、TL1都设为0xff,这样和外部中断是一样的功能,通过改变脉冲之间的延迟时间T来控制电机的加/减速;P0口用以控制液晶指令与数据的传输,P2.5、P2.6、P2.7连接液晶的三个控制接口从而实现对液晶的控制。
六、程序框图
开始
系统以及LCD
初始化
N
m==0
Y
Yn==0N
正转反转
T0中断T1中断
YY
减速加速
结束
七、程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P2^6;
sbitRW=P2^5;
sbitEN=P2^7;
voidDelayMS(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
ucharBusy_Check()
{
ucharLCD_Status;
RS=0;
RW=1;
EN=1;
DelayMS
(1);
LCD_Status=P0;
EN=0;
returnLCD_Status;
}
voidWrite_LCD_Command(ucharcmd)
{
while((Busy_Check()&0x80)==0x80);
RS=0;
RW=0;
EN=0;
P0=cmd;EN=1;DelayMS
(1);EN=0;
}
voidWrite_LCD_Data(uchardat)
{
while((Busy_Check()&0x80)==0x80);
RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS
(1);EN=0;
}
voidInitialize_LCD()
{
Write_LCD_Command(0x38);DelayMS
(1);
Write_LCD_Command(0x01);DelayMS
(1);
Write_LCD_Command(0x06);DelayMS
(1);
Write_LCD_Command(0x0c);DelayMS
(1);
}
voidShowString(ucharx,uchary,ucharz,uchar*str)
{
uchari=0;
if(y==0)Write_LCD_Command(0x80|x);
if(y==1)Write_LCD_Command(0xc0|x);
for(i=0;i { Write_LCD_Data(str[i]); } } for(i=0;i { Write_LCD_Data(str[i]); } } LCD_Data(str[i]); } } #include #include #defineucharunsignedchar #defineuintunsignedint voidInitialize_LCD(); voidShowString(uchar,uchar,uchar,uchar*); sbitK1=P3^2; sbitK2=P3^3; sbitK3=P3^4; sbitK4=P3^5; uintSp; floatT=45; bitm=1,n=1; ucharLCD_DSP[]={"00.0r/min"}; ucharLCD_DSP1[]={"up"}; ucharLCD_DSP2[]={"down"}; ucharLCD_DSP3[]={"<<"}; ucharLCD_DSP4[]={">>"}; ucharcodeFFW[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//八拍正转 ucharcodeREV[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//八拍反转 voiddelay(uintt) { uchari; while(t--) for(i=0;i<80;i++); } voidmotor_ffw()//正转 { uchari,j; for(j=0;j<2;j++) { for(i=0;i<8;i++) { P1=FFW[i]; delay(T);//调节转速 } if(m==1)break; } } voidmotor_rev()//反转 { uchari,j; for(j=0;j<2;j++) { for(i=0;i<8;i++) { P1=REV[i]; delay(T);//调节转速 } if(m==1)break; } } voidFormat_speed(uchard,uchar*a)//速度转换为数字字符 { a[0]=d+'0'; } voidmain() { TMOD=0x66; TH0=TL0=0xff; TH1=TL1=0xff; TR0=1; TR1=1; IT0=1; IT1=1; IE=0x8f; Initialize_LCD(); while (1) { if(m==0) { if(n==0) { ShowString(9,1,2,LCD_DSP3); motor_ffw(); } else { ShowString(9,1,2,LCD_DSP4); motor_rev(); } Sp=(uint)(9000/T); } else { P1=0xf9; Sp=0; ShowString(9,1,2,""); } Format_speed(Sp/100,LCD_DSP); Format_speed(Sp%100/10,LCD_DSP+1); Format_speed(Sp%10,LCD_DSP+3); ShowString(3,0,10,LCD_DSP); } } voidEX_INT0()interrupt0 { m=~m; } voidTimer0()interrupt1 { if(T<15) T=T+0.2; elseif(T<20) T=T+0.5; elseif(T<30) T=T+1; elseif(T<40) T=T+2; elseif(T<50) T=T+3; elseif(T<100) T=T+6; elseif(T<150) T=T+18; elseif(T<200) T=T+25; else T=200; ShowString(2,1,4,LCD_DSP2); delay(400); ShowString(2,1,4,""); } voidEX_INT1()interrupt2 { n=~n; } voidTimer1()interrupt3 { if(T>150) T=T-25; elseif(T>100) T=T-18; elseif(T>50) T=T-6; elseif(T>40) T=T-3; elseif(T>30) T=T-2; elseif(T>20) T=T-1; elseif(T>15) T=T-0.5; elseif(T>11) T=T-0.2; else T=11; ShowString(2,1,4,LCD_DSP1); delay(400); ShowString(2,1,4,""); } 八、设计体会 通过此次课程设计,首先,我更加扎实的掌握了有关单片机的控制、LCD1602液晶显示、C语言编程等方面的知识以及步进电机原理、控制、驱动方面的知识;其次,我进一步懂得了如何对一个课程设计进行整体规划和实行。 在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查,终于找出了原因所在,但也暴露出了我前期在这方面的知识欠缺。 实践出真知,通过Proteus的仿真,外加开发板调试,使得设计的过程更加顺畅,也使我掌握的知识不再是纸上谈兵。 九、参考文献 [1]徐煜明.《C51单片机及应用系统设计》.电子工业出版社 [2]彭伟.《单片机C语言程序设计实训100例——基于8051+Proteus仿真》.电子工业出版社 [3]郭天祥.《51单片机C语言教程——入门、提高、开发、拓展全攻略》.电子工业出版社 [4]张齐.《单片机与应用系统设计——基于C51的8051+Proteus仿真实验与解题指导》.电子工业出版社 小学教师培养工作总结 一年来,我校在上级部门的指导下,积极开展教师教育教学能力的提高培训工作,有效提高了教师的各种教育教学实际能力,为我校取得良好的办学成效起了重要的作用。 回顾我们的工作,主要有下面几点做法和体会: 一、制定计划,常抓不懈 这一学年虽然新来教师不多只有汤毛毛一位老师,但是我们还是很重视对她的成长。 为了使她能尽快进入教师角色,更好地促进她的专业成长,我校采取了以下措施: 1、以老带新,促其成长。 每一位新教师到我校后,学校都会指派一位有经验的老教师来带,目的是通过一对一的言传身教,使青年教师迅速地掌握实际教学能力,适应我校教学工作的开展。 2、抓骨干,促提高。 骨干教师是学校教学工作的中坚力量,是学校教学工作开展的领头人。 骨干教师的质量和数量,直接关系到我校教师队伍的整体水平,决定了学校教育的质量。 抓好骨干教师的培养工作,就是抓好了全校通过对骨干教师的听课、评课、汇报,他们在思想上受到了一次深刻的触动。 他们说: 老本不能吃,继续往前走,不然就成了枯干的教师了。 3、抓青年,促上进。 青年教师是学校教学工作发展的希望,随着一大批老教师的退休,一批又一批青年教师的充实,迅速提高青年教师的教学技能能已成了学校教学工作的重点。 师德教育。 由于学校教育发展的需要,一年来,我校大量新进了一批新教师。 如何让这一批优秀的学生迅速地成长为合格的、优秀的教师成了学校教育教学工作中面临的重大问题。 为此,我校对新教师、年轻教师坚持不间断、多方面、多渠道加强师德规范教育,以邓小平理论和“三个代表”重要思想为指导,以《教师职业道德规范》、《公民道德建设发展纲要》、《教育法》、《教师法》为依据,坚持理论与实践相结合,开展“三比一树”“践行科学发展观”等活动,教育全体青年教师树立世界观、人生观、价值观的正确观念,树立正确的教育教学观念、态度和远大理想,从而提高了我校教师职业道德的整体水平。 师徒结对。 青年教师在教学上应该说是像一张白纸。 如何在这张白纸上绘出灿烂的图来,这就需要给他们在走上讲台时有一个好的引导,好的榜样,好的导师。 师徒结对无疑能起到这样的作用,达到这样的目的。 通过确定对象---全面听课----跟踪指导的形式开展。 4、抓基本,促技能。 为进一步深化对新课程理念的学习与思考,全面推进新课程改革的进程,切实提高广大教师的课堂教学水平,促进广大教师业务素质的不断提高,我校本学期分别派遣多名青年教师去校外出听课、研讨,来校上展示课、并作说课讲座,课后全体老师还同他们进行了面对面的研讨交流。 二、整体趋优,初露头角 学校采取一系列有效的措施,提高了青年教师的综合素质,促进了我校素质教育全面的发展,教学质量也能有一定的提高,学生的各方面素质有了一定提升。 陈思思老师被评为县级教学新苗,其他老师在学区和县的基本功、论文等评比中均有获奖。 三、明确方向,仍须努力 我们将继续加大培养青年教师全面素质的力度,促进我校青年教师整体素质的优化,为创造学校更美好的未来贡献我们的力量。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小型 测试 系统 设计