ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:140.89KB ,
资源ID:23179134      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23179134.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机毕业论文报告40硬件图源程序41.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机毕业论文报告40硬件图源程序41.docx

1、单片机毕业论文报告40硬件图源程序41中原工学院单片机与接口技术课程设计报告 目录一、引言32、设计任务33、硬件电路图的设计54、软件的编写10 1)程序流程图11 2)实验源程序15五、心得体会26六、参考文献27七、附录281、引言 单片微型计算机简称单片机,又称微控制器(MCU),它的出现是计算机发展史上的一个重要的里程碑,它以体积小、功能全、性价比高等诸多优点独具特色,在工业控制、尖端武器、通信设备、信息处理、家用电器等嵌入式应用领域中独占鳌头。本次课设采用的STC89C51单片机是51系列单片机的一种代表,目前51系列单片机是国内目前应用最广泛的一种单片机之一。单片机以其系统硬件构

2、架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计的基础课。本次课程设计主要目的是为了更进一步学会使用和了解单片机,增强学生的动手能力,让我们更透彻的将平时所做的实验吃透学懂。2、设计任务一、所需设备:伟福系列单片机仿真实验箱、PC机及实验指导书二、设计内容题目1:数据采集系统从键盘中任意选出6个键作为系统的功能键和LED数码显示一起组成一个单片机键盘显示系统(小的监控程序),并通过实验箱上的接口芯片实现相应的功能(注:这些硬件电路全在实验箱上,但自己要能设计)。要求设计相应的硬件电路,并画出实现题目要求功能的流程图,编写、调试相应的程序。编程要求:开机后显示班级号(4位),学号(2位)

3、(复位状态),然后通过功能键设置参数,而后运行主程序。6个功能键为:设定加一减一确定运行换位设置参数步骤:复位状态下,按下“设定”键后6位显示的状态为:显示设定值显示参数行号888801四位设定值中的某一位小数点亮(或者整个值闪烁),表示对该位进行设置。用“加一”、“减一”键改变该位的值,用“换位”键改变设置位(由左到右),用“确定”键保存设定的值。本次设计要求能设置四行参数即可,每行参数在09999之间,当连续按“确定”键时,对应的行号(上图)从0104循环变化。按下“运行”键,执行数据采集程序(参考实验箱相应的硬件电路,但要求不同),采集模拟量05V,显示对应的物理量在0000最大值之间变

4、化。5V对应的显示值(最大值)是多少可以在设定时通过某行(四行参数中的一行)参数设置的数值选择确定。三、 硬件电路图的设计实验中主要用STC89C51单片机做处理器,首先的确保一个单片机最小系统,所以首先绘制的是单片机最小系统的电路图,下图是上次做小车时绘制的最小系统电路图: 要用到键盘和六个数码管显示,故需对其接口进行扩展,所用的器件有74HC138与P2口的高四位相连接,进行译码,译码之后和锁存器74LS373所存P0口的位数相与,对数码管的段码和位码进行片选选定,同时也可对键盘的读取接口和数据采集芯片进行片选选通,从而给定一个确定的地址,这样单片机就可以与外接电路进行数据的采集,键盘的判

5、定,及数字的显示等工作。下图为74HC138的连接电路 其中P2.7接138的E3脚,E1和E2都接在低电平上,P2.6/ P2.5 /P2.4分别和138的C /B/ A引脚连接,这样地址片选就可以达到从8000H到FFFF的地址。下图为单片机P0口接74LS373锁存器数码管段码接口和位码接口都用的是74LS374芯片,片选信号由138译码器和74LS373锁存器所给地址决定,键盘的读取用芯片74LS245芯片来扩展,本电路主要是参考平时所作实验,及实验的电路连接来设计的。下图为段码接口,位码接口及键盘读入口的接线电路:键盘及数码管显示电路设计好之后,接下来要设计的就是数据采集系统的电路,

6、由于我选的题目是任务一里的第一个任务,所以数据采集系统使用的的是AD转换,将5V的电压通过电位器的调节,也就是模拟量通过AD0809芯片转换成数字量,在单片机上显示出来。下图即为AD0809与单片机的接口电路: AD0809其中D0D7与P0口相接,由P0口的数据选择哪一路的输入,EOC与单片机P3.2口相连接,转换完后产生中断延时让其显示,片选线由138的Y1输出口和单片机的读口即P3.7经过一个或非门相连。这样0809的地址即为9000H,由P0口给定的值决定是IN口口的输入,试验箱上只有两个输入口,我在编程时选定IN0口输入,IN0口接一个连了五伏电压的电位器。4、软件的编写软件所要实现

7、的功能:1、开机后显示班级、学号 10-2 12 ;2、用的是实验箱键盘最后一排的六个键,依次为:“设定” “加一 减一 换位” ”确定“ ”运行“;3、按“设定”键,默认第一位闪烁,此时按“加一”和“减一”键可以调整数值;4、设定完一位后,按“换位”键可以对下一位进行设定;5、四位都设定完之后,按“确定”键,去闪烁,并将参数01下设定的值保存;6、再按下“确定”键,跳至参数02,此时可以依照步骤3对其进行设置;7、参数01、02、03、04设定好之后,可以按“确定”键对设定的值查询;8、在不同的参数下,按下“运行”键可以将以该设定值最大值,0为最小值的AD转换结果显示到前四位数码管上。 明确

8、软件所要达到的目的之后,首先得先清楚试验中数码管和键盘的读入地址和数码管的位码地址,为编程序确定键值及参数会起到一个直接的作用,只有清楚这些了才能随心所欲的设定没一个功能键的位置。(1)程序流程图 流程图是一个程序的主干,也就是说程序是建立在一个流程图的主体框架之上的,有流程图程序才可以有条理的进行编写.下面为实验程序的流程图 N , Y N (2)实验源程序 WEI EQU 08002H ;位DUAN EQU 08004H ;段IN EQU 08001H ;键盘读入口CS0809 EQU 09000HLEDBUF EQU 30H ;显示缓冲区CANSHU EQU 51H ;参数1234ORG

9、 0000H LJMP START ORG 0020HSTART:MOV 25H,#00H MOV LEDBUF,#01H ;班级、学号的序码 MOV LEDBUF+1,#00H MOV LEDBUF+2,#012H MOV LEDBUF+3,#02H MOV LEDBUF+4,#01H MOV LEDBUF+5,#02H MOV 36H,#00H MOV 40H,#00H ;参数1缓冲区 MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 44H,#00H ;参数2缓冲区 MOV 45H,#00H MOV 46H,#00H MOV 47H,#00HMOV 4

10、8H,#00H ;参数3下缓冲区 MOV 49H,#00H MOV 4AH,#00H MOV 4BH,#00H MOV 4CH,#00H ;参数4下缓冲区 MOV 4DH,#00H MOV 4EH,#00H MOV 4FH,#00H MOV 50H,#00H MOV CANSHU,#01H ;参数L2:MOV R0,#LEDBUF ;显示班级、学号 LCALL DISPLAYLED1 ;显示子程序,R0为参数 LCALL TESTKEY ;判断“有效键”是否按下? JNB 20H.0,L2 ;没有键按下,则继续显示班级、学号L3:MOV 25H,#00H MOV A,CANSHU MOV B,

11、#04H MUL AB ADD A,#3CH ;将参数首地址存入R0 MOV R0,A ;第一次有键按下默认显示参数1下设定的值,即:显示从40H单元开始的内容 LCALL DISPLAYLED2 ;调用设定参数显示子程序 LCALL TESTKEY ;检测是否有键按下 JNB 20H.0,L3 ;没有键按下,则继续显示参数1下设定的值 LCALL PAZ ;有键按下,则判断运行键是否按下 CJNE R5,#05H,QD1 LJMP SD ;R5=5QD1:LJMP S44 SD:SETB 20H.1 MOV 36H,#00H MOV A,CANSHU MOV B,#04H MUL AB AD

12、D A,#3CH ;通过参数来选择设定值的缓冲区 ADD A,36H MOV R0,AH1:MOV A,CANSHU MOV B,#04H MUL AB ADD A,#3CH ADD A,36H MOV R0,A ;R0指向闪烁寄存字节处 JB 20H.1,S1 MOV R0,#10H SETB 20H.1 LJMP DS1 S1:MOV R0,90H ;将闪烁字节的值显示出来 CLR 20H.1 DS1:MOV A,CANSHU MOV B,#04H MUL AB ADD A,#3CH MOV R0,A ;R0指向显示首区 LCALL DISPLAYLED2 LCALL TESTKEY JN

13、B 20H.0,H1 LCALL PAZ CJNE R5,#02H,S11 ;换位 MOV A,CANSHU MOV B,#04H MUL AB ADD A,#3CH ADD A,36H MOV R0,A MOV R0,90H INC 36HHW1:MOV A,CANSHU MOV B,#04H MUL AB ADD A,#3CH ADD A,36H MOV R0,A MOV A,36H CJNE A,#04H,H1 MOV 36H,#00H LJMP HW1S11:CJNE R5,#04H,S22 ;加1 INC 70H ;闪烁值加1 MOV A,90H CJNE A,#0AH,H1 MOV

14、 90H,#00H LJMP H1S22:CJNE R5,#03H,S33 ;减1 DEC 70H ;闪烁值减1 MOV A,70H CJNE A,#0FFH,H2 MOV 90H,#09H H2:LJMP H1S33:CJNE R5,#01H,H2 ;确定1(去掉闪烁,并将该参数下的设定值保存到对应的缓冲区) MOV A,CANSHU MOV B,#04H MUL AB ADD A,#3CH ADD A,36H MOV R0,A MOV R0,90H LJMP L3S44:CJNE R5,#01H,W1 ;确定2(将参数加1,并将该参数下的设定值显示到数码管上) INC CANSHU ;参数

15、加1,指向下一个参数 MOV A,CANSHU CJNE A,#05H,L22 MOV CANSHU,#01H LJMP L3 W1:CJNE R5,#00H,L22 YX:LCALL AD ;采集(调用AD转换子程序,获得AD值) LCALL TESTKEY JB 20H.0,L22 LJMP YX ;运行L22:LJMP L3;判断有效按键子程序TESTKEY:MOV DPTR,#WEI MOV A,#00H MOVX DPTR,A ;6条列线全置0 MOV DPTR,#IN位为:0) ANL A,#01H ;若是最后一排有键按下,则ANL之后A=0,否则A=1 CJNE A,#01,B1

16、 ;判断按下的是否是最后一排的键(有效按键)? CLR 20H.0 ;A=1,则最后一排没有键按下,将20H.0清0 LJMP FH B1:SETB 20H.0 ;A=0,则最后一排有键按下,将20H.0置1 FH:RET;判断键位,通过R5返回,运行-00H,确定-01H,换位-02H,减1-03H,加1-04H,设定-05H PAZ:MOV R4,#0FEH ;1111 1110B MOV R5,#0FFH ;1111 1111BNEXT:MOV DPTR,#WEI MOV A,R4 MOVX DPTR,A ;只将第6列置0 MOV DPTR,#IN ;读入键状态 ANL A,#01H ;

17、若“运行”键按下,则ANL之后A=0; CJNE A,#01H,QDZ ;判断“运行”键是否按下?(依次判断最后一排的键) MOV A,R4 RL A ;否,则左移一位 MOV R4,A INC R5 ;执行后,R5=00H LJMP NEXT QDZ:INC R5 ;按下“运行”键,则跳至此处,执行后,R5=00H MOV LEDBUF,R5 ;若前面没有按“运行”键,则R5=01H;有,则R5=00HLOOP:LCALL TESTKEY JB 20H.0,LOOP ;有键按,则循环检测按键 RET;显示1子程序(班级、学号)DISPLAYLED1:MOV R2,#20H ;选通第1位数码管

18、 MOV R3,#06H ;6位数码管显示,控制循环6次 L1:MOV DPTR,#WEI MOV A,R2 MOVX DPTR,A RR A ;右移一位,选通下一位数码管 MOV R2,A MOV DPTR,#LEDTAB MOV DPTR,#DUAN MOVX DPTR,A ;输出段码 LCALL DELAY ;调用延时 INC R0 ;指向下一个要显示的段码 DJNZ R3,L1 RET;显示2子程序(设定值和参数)DISPLAYLED2:MOV R2,#20H ;选通第1位数码管 SETB 21H.0 ;将21H.0置1 MOV R3,#06H ;6位数码管显示,控制循环6次 L12:

19、MOV DPTR,#WEI MOV A,R2 MOVX DPTR,A RR A ;右移一位,选通下一位数码管 MOV R2,A CJNE A,#02H,L44 ;没选通第五位数码管(0000 0010B),则跳转,正常显示 CLR 21H.0 ;选通了第五位数码管,则将21H.0清0 MOV DPTR,#LEDTAB MOV DPTR,#DUAN MOVX DPTR,A ;输出段码 LCALL DELAY ;调用延时 JB 21H.0,H11 ;21H.0等于1,即没选通第五位数码管,则跳转 MOV R0,#4FH ;选通了第五位数码管,则给R0初始地址4FH SETB 21H.0 H11:I

20、NC R0 ;(50H)=00H,第五位数码管显示“0”;(51H)=01H,第六位数码管显示“1” DJNZ R3,L12 ;直到六位数码管都显示一遍,返回 RET;AD转换子程序AD:LCALL PXS ;调系数 MOV DPTR,#CS0809 ;采集 MOV A,#00H MOVX DPTR,A JNB P3.2,$ :利用ADC0809的EOC信号触发中断INT0(P3.2口) LCALL ZHUANHUAN MOV R0,#60H LCALL DISPLAYLED2 MOV P1,#80H RET;判系数子程序 PXS:MOV A,CANSHU MOV B,#04H MUL AB

21、ADD A,#3CH MOV R0,A MOV R1,A SWAP A INC R0 MOV 53H,A INC R0 SWAP A INC R0 MOV 54H,A MOV A,53H ANL A,#0F0H CJNE A,#00,DYYQ MOV 25H,#01H INC R1 SWAP A INC R1 MOV 53H,A INC R1 SWAP A ADD A,#00 MOV 54H,A DYYQ:MOV 57H,#02H MOV 58H,#55H MOV 55H,#00H MOV 56H,#00H MOV 22H,#00H MOV R0,#0FFHLOOP5:INC R0 CLR C

22、 MOV A,56H ADD A,58H DA A MOV 56H,A MOV A,55H ADDC A,57H DA A MOV 55H,A CLR C MOV A,56H SUBB A,54H MOV 22H.0,C MOV A,55H SUBB A,53H MOV 22H.1,C MOV R2,22H CJNE R2,#00,NEXT5 MOV A,56H CJNE A,54H,NEXT5 INC R0NEXT5:MOV C,22H.1 JC LOOP5 MOV 22H,#00H CLR C MOV B,R0 RET;转换子程序ZHUANHUAN:MUL AB MOV 6AH,B MOV

23、 6BH,A MOV 6CH,#03H MOV 6DH,#0E8H MOV R0,#0FFH LOOP1:INC R0 ;判定千位 MOV A,6BH MOV 2BH,6BH SUBB A,6DH MOV 6BH,A MOV A,6AH MOV 2AH,6AH SUBB A,6CH MOV 6AH,A NEXT1:JNC LOOP1 MOV 60H,R0 MOV 6AH,2AH MOV 6BH,2BH MOV 22H,#00H ;判定百位 CLR C MOV 6CH,#00H MOV 6DH,#64H MOV R0,#0FFH LOOP2:INC R0 MOV A,6AH CJNE A,#00

24、H,BW1 MOV A,6BH MOV 2BH,6BH SUBB A,6DH MOV 6BH,A LJMP NEXT2 BW1:MOV A,6BH SUBB A,6DH MOV 6BH,A MOV A,6AH SUBB A,6CH MOV 6AH,A LJMP LOOP2 NEXT2:JNC LOOP2 MOV 61H,R0 MOV 6BH,2BH MOV 22H,#00H ;判定十位 CLR C MOV 6DH,#0AH MOV R0,#0FFH LOOP3:INC R0 MOV A,6BH MOV 2BH,6BH SUBB A,6DH MOV 6BH,A NEXT3:JNC LOOP3 M

25、OV 62H,R0 MOV 63H,2BH MOV A,25H CJNE A,#01H,TZ1 MOV 63H,62H MOV 62H,61H MOV 61H,60H MOV 60H,#00H TZ1:RET;延时子程序DELAY:MOV R6,#06 D1:MOV R7,#210 DJNZ R7,$ DJNZ R6,D1 RET ;显示字形LEDTAB:DB 3FH,06H,5BH,4FH,66H ;01234 DB 6DH,7DH,07H,7FH,67H ;56789 DB 77H,7CH,39H,5EH,79H ;ABCDE DB 71H,00H,76H,40H ;F灭H - END五、

26、心得体会对于这次课设,总体感觉还可以,比上学期参加培训时学习单片机的效果好多了,上学期就在张老师的带领下在周末进行电子设计大赛培训,总结一下上学期的收获就是认识了结了单片机。这学期通过五月份的一次只能小车的设计,对单片机的熟练程度明显加强了,那一次的比赛可以说是我将书本知识运用于实践的第一次。这学期相当于再次把单片机的课本又跟着老师学了一遍,现在对于单片机虽然还有些地方有些迷惑,但总体上来说51单片机的了解还是相对透彻的,通过这么长时间的单片机学习,我感觉到只有不断的去实验,不断地去验证,才可以将理论转化为实践,因为有些时候分析的想的会和实际发生的效果完全不同,只有不断的去试验去实践,才可以真

27、正掌握一门技术。这次课程设计虽然实间有两个星期,但是实验室相对紧张,我们上学期自己使用的板子有些功能还没有添加,相对来说硬件还是有点欠缺,所以时间还是很紧张的,因为一周只有在实验室能呆上一天多点,这样就对我们还是构成了挑战。我选的是实验一的第一个题目,虽然有些子程序是平时做实验所做过的,但是整体来说程序还是比较复杂,用的汇编语言编程最大的一点弊端就是程序太长,调试起来比较吃力,有时一个小小的问题就得调试一两个小时,我最长的一次是AD转换成255后欲将其转换成所设置的最大数的问题,对于这个参数拿个笔计算起来几分钟的时间,但是要在试验箱上显示出来没有误差还真是不容易,就一个参数的取值问题我就在程序

28、调试上花了近五个小时,最后的结果是把误差缩减到最小是15左右,最终实验结果是完成出来了,但是还是感觉不太理想。我觉得单片机就是一个不断的试验和不断的实践的课程,只有自己不断地去练习才可以掌握其真谛。 通过过这次实训,我对单片机的有了更近一步的了解并且熟悉了单片机各个管脚的功能。我深刻地认识到实践操作的重要性,同时理论知识必须与实践操作紧密相结合,两者缺一不可,这也是教学环节中的一个重要环节,只有坚持理论与实践相结合,才能更好的提高自己的动手操作能力,并且可以从中培养自己独立思考问题以及解决问题的能力。这次实训实现了软件与硬件的有效结合,将书本知识运用到实践中,让我受益匪浅。 六、参考文献单片机原理、接口技术及应用(含C51) (西安电子科技大学出版社 主编 杨学昭 王东云)电路 (高等教育出版社第五版 邱关源)电子技术基础上下册(高等教育出版社 康华光)新概念51单片机C语言教程 (电子工业出版社 郭天祥) 七、附录总体硬件电路图:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1