江苏大学单片机课程设计_第1页
江苏大学单片机课程设计_第2页
江苏大学单片机课程设计_第3页
江苏大学单片机课程设计_第4页
江苏大学单片机课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、目录第一章 前 言 1第二章 系统硬件设计 32.1 步进电机简介 32.2 专用键盘显示接口芯片 8279 31.2.1 8279 特征 31.2.2 8279 命令状态字 42.3 其他器件选择 42.4 电路原理图及说明 5第三章 系统软件设计 63.1 程序流程图 63.2 程序清单 63.3 调试过程 6第四章 总结 7附录 1 硬件逻辑图 8附录 2 程序清单 90第一章 前 言单片机作为微型计算机的一个重要分支,以广泛应用到工业控制、智能仪器和家用电器等各个领域,特别是In tel公司生产的MCS-51系列单片机,由于其集成度高、处理功 能强、结构简单、可靠性高、价格低廉等一系列

2、特点,已成为应用系统开发的首选单片机 之一。随着单片机技术的日益成熟和广泛应用,单片机技术已成为工科学生,特别是电类 学生必须掌握的一门专业技术。步进电机作为执行元件,是机电一体化的关键产品之一,随着工业自动化的发展,步 进电机的应用越来越广泛,广泛应用在各自动化控制系统中,步进电机是一种用于开环控 制的驱动元件。它是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移 的微电动机。步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。步进电动机的发 展与计算机工业密切相关。自从步进电动机在计算机外围设备中取代小型直流电动机以 后,使其设备的性能提高,很快地促进了步进电动机的发展

3、。另一方面,微型计算机和数 字控制技术的发展,又将作为数控系统执行部件的步进电动机推广应用到其他领域,如电 加工机床、小功率机械加工机床、测量仪器、光学和医疗仪器以及包装机械等。发展趋势之一,是继续沿着小型化的方向发展。随着电动机本身应用领域的拓宽以及 各类整机的不断小型化,要求与之配套的电动机也必须越来越小,在57、 42 机座号的电动机应用了多年后,现在其机座号向 39、35、30、25方向向下延伸。瑞士 ESCAF公司最 近还研制出外径仅10mm勺步进电动机。发展趋势之二,是改圆形电动机为方形电动机。由于电动机采用方型结构,使得转子 有可能设计得比圆形大,因而其力矩体积比将大为提高。同样

4、机座号的电动机,方形的力 矩比圆形的将提高 30%-40%。发展趋势之三,对电动机进行综合设计。即把转子位置传感器,减速齿轮等和电动机 本体综合设计在一起,这样使其能方便地组成一个闭环系统,因而具有更加优越的控制性 能。发展趋势之四,向五相和三相电动机方向发展。目前广泛应用的二相和四相电动机, 其振动和噪声较大,而五相和三相电动机具有优势性。而就这两种电动机而言,五相电动 机的驱动电路比三相电动机精密且复杂,因此三相电动机系统的价格比要比五相电动机更 低一些。随着我国制造业的发展,嵌入式系统已经成为制造业的核心技术,它被广泛地应用到 工业控制、仿真系统、医疗仪器、信息家电、通信设备等众多领域。

5、目前,围绕嵌入式系 统展开研究和开发,已经成为计算机软硬件技术发展最活跃的方向之一。嵌入式系统不同与通常纯粹的软件系统或硬件系统,而是软件与硬件通过自爱一起 的,有些功能既可以用软件实现,也可以通过硬件实现。另外,嵌入式系统设计所面临的 挑战不仅涉及到计算机软件和硬件,也不涉及到许多非计算机工程方面的问题,注入机械 尺寸问题、功耗问题和制造成本问题等,即使是计算机工程方面的问题,大部分系统在实 时性、可靠性和多速率等问题方面也都有特别要求。目前,实现嵌入式系统的硬件方法主要有:定制逻辑( ASIC),现场可编程逻辑门阵 列(FPGA和嵌入式微处理器三种。在实际系统实施中,绝大多数系统是采用嵌入

6、式微处 理器方式,如:单片机、单板机或嵌入式微处理器芯片等。这是因为用微处理器实现嵌入 式系统是一种十分有效的方法,它使得在不同价位上设计不同特性的产品系列成为可 能,并且能够扩展新特性以满足飞速发展变化的市场需求。2匚匚匚匚匚匚匚匚匚匚匚匚匚匚匚匚匚匚匚匚2 3 V ? 56 7T-DS 01234 57 也江酣魁吩?L?IER7IF日0旧対丘5 e 5二|加 二|肿Z1CNTL/STB SHIFT 二|異3m】二I。如0 30UTB二| 0UTB3Z10UTA2二|丽 OS二MO第二章系统硬件设计2.1步进电机简介本课程设计采用单片机软件实现对步进电机的运转控制,使用单片机的Pl 口循环输

7、出代码,经功率放大器来控制步进电机的三相绕组,从而控制步进电机运转。步进电机以 三相六拍的工作方式转动。过改变三相通电顺序来实现转向的控制,若按A- A4 B- BCC-CA-A次序通电为正转,则按 A-AC C CBB BA-A次序通电为反转。用 89C51 的P1.1、P1.2、P1.3分别按图1所示的A、B、C三信号格式送数即可,正转时输出的顺 序为02H-06H-04H-0CH-08H-0AH-02H,反转时输出的顺序为02H 0AH- 08H- 0CH- 04H- 06H- 02H。2.2专用键盘显示接口芯片82798279是专用键盘/显示器控制芯片,能对显示器自动扫描,能识别键盘上

8、按下键的键 号;可充分提高CPU勺工作效率。8279与MCS-51接口方便,由它构成的标准键盘/显示器 接口在微机应用系统中使用越来越广泛。2.2.18279 特征能同时执行键盘与显示器操作。扫描式键盘工作方式。有 8 个键盘 FIFO(First in First out) 存储器带触点去抖动的双键锁定或 N键巡回功能。两个8位或16位的数字显示器。可左/右输入的16字节显示用RAM由键盘输入产生中断信号。扫描式传感器工作方式。用选通方式输入信号。单个16字符显示器。可编程扫描定时。工作方式可由CPU编程。图2-1 8279芯片示意图2.2.28279命令状态字表1命令状态字命令特征值功能特

9、征値0?氐DsD*Do6DiDo0111XKXX读显乎RAM自动加1显示RAM的“芥字节地址1a01XXXX宥显示RAM自动加1显菱RAMM个字节地址1011111显示器写禁止禁止写直口禁止写B 口消隐离口消隐B 口11010X11A, B全部1零FIFO成空状(洁除显議10畜:中斷靈傥; 传感器读岀地 址置零寄存器A.B组允许酒除A. E清咸加H总清除11L B皆置1111*XX结束中断堵泯-fa-P-方弍设置特姝丄1TJ3式表2命令状态字命令特怔但功能特征也D?DeDSDaDaDjDi0Q00QD00艰键键定I - - 3uL, 左踊迭入8X8显示01扁码扫描键盘I显示器N键轮回11101

10、传感器拒阵右端送入16x3显示11译码扫描选邇输入显示扫描001XMXKK程序时钟覺乂 231分扌袈X0101XXX读FIFO備感器 RAM传感器RAM目动 加1传感器RAM的S个宇节地址位2.3其他器件选择1. 74LS37374LS373是八D锁存器(三态).一个封装中有八个锁存器,三态总线驱动输出 置数全并行存取,缓冲控制输入,时钟/使能输入有改善抗扰度的滞后作用。在电路中的作 用是:由于P0 口既是数据口又是地址口,所以加一个锁存器锁存地址。2. 74LS138为3线8线译码器共有54/74S138和54/74LS138两种线路结构型式。利用G1、/(G2A)和/(G2B)可级联扩展成

11、24线译码器;若外接一个反相器还可级联扩展成32线译码器。 若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。电路中的作用是:使器件的地址连续,用三根线控制八根线。3.74LS240八单线驱动器。(反码,三态输出),这种八缓冲器和线驱动器是为提高三态输 出存储地址驱动器,时钟驱动器和总线定向接收器和发射器的性能可和集成度而特意设计 的。4.7451:8路驱动器,增强数码管显示的亮度。2.4电路原理图及说明MCS-51采用8279扩展的键盘、显示器的接口电路控制三相步进电机的运转,P1.1、P1.2、P1.3分别接三相步进电机的A、B、C三相,构成一个完整的单片机应用系统,设计

12、 20个键组成的键盘以输入数据与命令,8只LED显示器用于系统显示输出。采用 89C51的 P1 口输出信号,经放大驱动一台步进电机,电路图见附录1。6第三章系统软件设计3.1程序流程图:开清PU巫初始化82T9检查按键Y否有控制键?MET樓相正辎肮毗榜*机转翻N齐碍反暮3.2程序清单(详见附录2)3.3调试过程CTO图3-11)在调试过程中,我们遇到了以下问题:i. 按EXEC键后的速度不明显。ii. 当输入200步,1000步后,步进电机不按步数进给,无法停止。2)问题解决方案:我们将LOOP9后的程序“ DJNZR4,L OOP8改为” CJNEDJNZR3,L OOP9”CJNEi.我

13、们将EXEC键的处理程序L3中设置步数的部分放到延时程序中调速变得明显这样就不会让R3为0时再自减LATE2,可以使R4,#00 H,L 00P8R3,#00 H, L00P97第四章 总结十天时间转眼间就过去了,不得不说这十天过的很充实。刚开始,看到一切都是那么 的陌生,经过三天的摸索,终于能够看懂程序,好的开始就是成功的一般,看懂了程序, 心中就有了计划,第四天开始尝试着编写程序,写程序要求要求的是严谨的思维,一丝不 苟的态度,以及较强的逻辑思维能力,我并不是一个专业的程序员,以前也没写过这么复 杂的程序。 于是,我把程序的要求和程序的运行步骤详细的写了出来, 一步一步踏踏实实, 经过四天

14、的尝试,各个程序模块已经完成,实践是检验真理的唯一标准,第一次编译出错 是难免的,几个比较严重的错误已经在上面调试过程中列了出来,功夫不负有心人,在同 学老师的帮助下,一个完整的程序终于写好了。在这次实习过程中, 我锻炼自己的思考能力, 动手能力。 总而言之,纸上得来终觉浅, 绝知此事要躬行。8附录1硬件逻辑图ALE 30肚卜BQ 21w14391238n12j4巧IL172JJJ32?7Fn;14|12Q74LS373PO.0:MCS-51P07P2J丽CLK A0RL3RL224/26/27/30/1矽3Q8/18/9/IM20/12/21/IVi.vLA38V12VVRL&?451RES

15、ET74LSSL0 SL1 SL2 BDSHIFTOLTTAOOltTAJ137 j.? 6/14-4L.S4i13831沟、IRQOICNTL 1OCTB3附录图110附录2程序清单DAT_8279EQU0C000H;键盘显示接口COM_8279EQU0C001HORG0000HNOPAJMPMAINORG0030HMAIN:CLREA;内外程序存储器选择端,可以使用内部存储器MOVSP,#60H;设置堆栈指针CLRAMOVPSW,A;程序状态字清零MOVIE,A;中断允许寄存器清零MOVR0,#7FHINIT:MOVR0,A;清除 CPU RAMDJNZR0,INITINIT8279:MO

16、VDPTR,#COM_8279;初始化 8279MOVXDPTR,AMOVA,#34H;分频设置MOVXDPTR,AACALLOFFLED; 调用子程序清除 8279RAMMOVDPTR,#COM_8279MOVA,#80H; 写显示 RAM 命令,从左面第一个 LED 开始进行MOVXDPTR,ABACK:MOVDPTR,#DA T_8279;写入数据进行显示MOVA,#81HMOVXDPTR,A;LED 数码管显示为 qMOV30H,#80H;LED 数值所在地址放入 30HMOV31H,#40H;存放熟知的地址在 31H ,WAIT:ACALLSCANKEYJNCWAIT;无键跳转MOV

17、A,R1JBACC.4,COMMKEY;判断是否为命令键,是则跳转,不是则顺序执行KEYNUM:MOVA,30H;有键赋值, LED 数值给 AMOVDPTR,#COM_8279MOVXDPTR,A;把 LED 数值送到端口地址MOVA,R1;键值给 AMOVR0,31HMOVR0,A;将键盘真实值送到40H 中 (此程序保证键盘真实值被保留 )INC31H;31H 自加,指向 41HMOVDPTR,#DISPCODE;段代码给数据指针MOVCA,A+DPTR;键值是多少就偏移多少单元MOVDPTR,#DA T_8279MOVXDPTR,A;将键值的段代码送到显示接口INC30H;30H 内容

18、加一, LED 数值加一MOVA,30H;LED 数值送给 ACJNEA,#88H,W AIT;判 断 LED 八 个显 示 是否 全 部被操作,若没有则返回继续读键值MOV30H,#80H;全部被操作后,从最左边重新开始MOV31H,#40HSJMPWAIT;以上程序保证了 8 个数码管全部显示COMMKEY: MOVDPTR,#PROGCOMM;其它键的处理与命令, PROGCOMM 首地址给数据指针MOV A,R1ANL A,#03H;0000 0011 相与,只看后两位RL A;PROGCOMM 中各句程序间相隔两个单元,保证跳转正常JMP A+DPTR;判断执行哪部操作PROGCOM

19、M: AJMP LASTPAJMPAJMPNEXTPEXECPLASTP:MOVR2,#00H;实现电机的点动正转MOVDPTR,#NUMBER1;正转首地址L1:MOVA,R2MOVCA,A+DPTRMOVP1,A;电动机六拍依次给P1口,每输入一次调用一次延时,共六次ACALLDELAYINCR2MOVA,R2CJNEA,#06H,L1RETNEXTP:MOVR2,#00H;实现电机的点动反转MOVDPTR,#NUMBER2;反转首地址L2:MOVA,R2MOVCA,A+DPTRMOVP1,A;电动机六拍依次给P1口,每输入一次调用一次延时,共六次ACALLDELAYINCR2MOVA,R

20、2CJNEA,#06H,L2RETEXECP:ACALLRETTIME;调用步进停止转动电机OFFLED:MOVA,#0DFH;共阳极数码管,11011111显示RAM置为FF,数码管关闭MOVDPTR,#COM_8279MOVXDPTR,A;将状态字送给端口地址OFFLED1:MOVXA,DPTRJBACC.7,OFFLED1RET; 判断是否清 0完毕,清除完则返回主程序SCANKEY:MOVDPTR,#COM_8279;等待按键MOVXA,DPTR;接口地址得到的数值给AANLA,#07H;0000 0111 相与,只看后三位状态CJNEA,#00H,HA VEKEY;后三位不为零则有键

21、输入跳转到 HAVEKEYCLRRETC;无按键 C 清零;返回HAVEKEY:MOVDPTR,#DA T_8279;有键读键值MOVXA,DPTR; 键值给 AMOVB,A;备份键值MOVR1,#00HMOVDPTR,#KEYCODE;查 键值表 ,首地址取出,放到数据指针中KEYLOOP:CLRAMOVCA,A+DPTR;首地址键值给 ACJNEA,B,NOKEY;比较 A 与读入 键值大 小, 若相等则找到键值,否则继续寻找AJMPFOUNDKEY; 找到键值,进行处理NOKEY:INCDPTR;指针偏移一个单元INCR1;键值大小增加一AJMPKEYLOOP;未找到 循环继续找FOUN

22、DKEY:MOVA,R1;键值大小给 ASETBC;C 置一并返回RETNUMBER1:DB 02H,06H,04H,0CH,08H,0AHNUMBER2:DB 02H,0AH,08H,0CH,04H,06HLATE:MOVA,44H;调速延时循环SWAPAL3:ORL MOV DJNZ DJNZRETA,45HR7,AR7,L3R6,LATEDELAY:MOVR7,#20HDELAY1:MOVR6,#0EFHDJNZR6,$DJNZR7,DELAY1RET;点动延时循环KEYCODE: DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAHDB 0D1H,0D9H,0DAH,0C3H,0CBH,0D2H,0D3H,0DBH COMCODE:DB 0E3H,0E2H,0E1H,00HDISPCODE: DB 0CH,9FH,4AH,0BH,99H,29H,28H,8FHDB 08H,09H,88H,38H,6CH,1AH,68H,0E8HDB 0C8H,3AH,0ECH,0FFHTIME:MOVA,40H;把千位百位放到R3SWAPA;高低四位交换ORLA,41H;逻辑或MOVR3,AMOVA,42H;把十位个位放到R4SWAPAORLA,43HMOVR4,AL5:MOVR2,#00HL4:MOVDPTR,#NUM

温馨提示

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

评论

0/150

提交评论