单片机课设报告_第1页
单片机课设报告_第2页
单片机课设报告_第3页
单片机课设报告_第4页
单片机课设报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、课 程 设 计 任 务 书单片机模块应用设计系统一、 目的任务通过单片机模块化的设计,熟悉汇编语言及调试技巧,学会看懂硬件原理图,熟悉51单片机各个外设二、 设计内容1)设计一个可以显示1234的显示电路,并利用单片机实现。2)利用按键切换,并将各个按键的值显示在数码管上3)中断1按钮切换,设置自己电路板自发自收模式,串口可用自己发送自己按键的键值,键值自己串口接收,并且显示在数码馆上。4)中断2按钮切换,发送到电脑(或从电脑接收)最想要说的一句英文(不少于20个字母),并在数码管上滚屏显示。三、 新增功能:在利用按键切换(即功能2)时,同时控制输出频率可变的方波,驱动蜂鸣器,产生不同频率的声

2、音。附件2: 课程设计报告书题目:单片机模块应用设计系统 学 院 电子与信息学院 专 业 学生姓名 学生学号 指导教师 课程编号 课程学分 起始日期 2015/6/1 教师评语教师签名:日期:成绩评定备注单片机模块应用设计系统目录题目:单片机模块应用设计系统2单片机模块应用设计系统41.选题背景52.过程论述52.1数码管显示部分52.2键盘扫描程序(反极法)92.3功能3112.4功能4(外部中断1)122.5创新(可变频率音调(方波),通过蜂鸣器)153.课程设计总结161.选题背景教师指定命题2.过程论述2.1数码管显示部分2.1.1硬件原理图:(由于硬件采用学院的板子,故不做说明)图1

3、 数码管原理图2.1.2程序部分:2.1.2.1写移位寄存器74595:WRITE_595移位寄存器74595在这里实现的功能就是将IO口:HC595_DAT(P1.7)的写入移位寄存器,串行转并行。从图二的时序图可以清楚看出程序只需往SER(程序定义为HC595_DAT,括号内为程序定义,下同)管脚写一位的数据,并通过SRCLK (HC595_SCK)的每个上升沿,就可以依次把一位的数据写到数码管的a,b,c,管脚,可以想象为了输出8位的数据给数码管,必须依次把显示码的八位依次写进移位寄存器即可。图2 74595时序图图3 程序流程图程序说明:;实现的功能:把RAM"30H&quo

4、t;(范围0:F)(TAB_NUM)内容查表得到显示码,输出到HC595_DAT(P1.7) 并写入移位寄存器,串行转并行/入口条件:RAM"30H"。(TAB_NUM)只要调用此程序,就可以把TAB_NUM内容输出到数码管的管脚a,b.2.1.2.2静态显示静态显示的思想比较简单,是验证上一个程序WRITE_595能否成功的方式。同时作为键值显示的子程序。基本的思想就是把想要显示的数字写进TAB_NUM,调用WRITE_595程序,然后设置P0低4位(数码管的位选管脚)全高,就可以显示了。图4 静态显示效果2.1.2.3动态显示动态显示的算法思想就是每次只显示一位的数码管

5、,其余数码管的位选关闭,不断的轮训,利用余辉就可以是4位数码管显示不同的数字。程序说明:;实现的功能:把TAB_NUM1,2,3,4的数输出到P0口显示/ 标号: DONGTAI1 功能:动态显示0-F子程序只要往TAB_NUM1,2,3,4里面写要显示的4个字节数据,就可以分别显示到对应的数码管。图5 轮训示意图图6 动态显示流程图显示效果:图7 动态显示效果2.1.3数码管程序资源说明占用资源意义或数量TAB_NUM,TAB_NUM1,TAB_NUM2,TAB_NUM3,TAB_NUM4(ram 里面的30H-34H)存放显示的数字HC595_SCK,HC595_RCK,HC595_RST

6、,HC595_DAT(P0.4- P0.7)595控制端口SEG0 ,SEG1,SEG2 ,SEG3(P0.0- P0.3)数码管位选端口2.2键盘扫描程序(反极法)2.2.1硬件原理图:图8 矩阵键盘2.2.2程序部分算法思想:首先让P2口高四位为1,低四位为0。若有按键按下,则高四位中会有一个1翻转为0,低四位不会变,此时即可确定被按下的键的行位置。然后让P2口高四位为0,低四位为1,。若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。最后将上述两者进行或运算即可确定被按下的键的位置。备注:每次读入之前必须先先IO口写1(硬件决定),没有置一的必须相

7、应位与零。资源说明:占用资源意义或数量KEY_VALUE(4DH)得到的键值KEY_FLAG(4EH)按键扫描的状态KEY_XTAB_FLAG(4FH)查表成功与否程序流程图:图9 按键扫描程序程序说明:每次调用KEY_SCAN,通过KEY_VALUE,KEY_FLAG判断扫描得到的键值2.3功能32.3.1流程:思想:中断1按钮电平触发,进入中断服务程序,中断服务程序设置一定的循环(大概3秒)进行按键扫描。如若没有按键,则应该退出中断;否则将循环次数重新赋值,相当于最后一次按键3秒后 退出中断。如若按键按下,则同时使用串口发送键值并自己接收,讲接收的数据显示到数码管(这个自发自收的功能确实有

8、点瞎,确实验证串口是否正常的很好的软件)流程图:图10 外部中断服务程序流程图当然要完成这个功能还必须配置串口,外部中断,这些相对都比较简单,这里不多加说明。效果图:图11 进入中断的界面图12 自发自收效果2.4功能4(外部中断1)发送想说的话到电脑,这里只需要调用串口查询发送的程序就可以,相对比较简单,不多加说明。滚屏显示可能比较麻烦点,基本的思想是这样的:我在TAB_NUM1,2,3,4后面放上我要滚屏显示的数据,每次只要把一定长度内存的数据往前搬移就可以了,当然这里有许多的细节,这些细节不搞定,程序必然是乱的。2.4.1内存搬移(EXINT2_RAMMOV)2.4.1.1流程通过对RA

9、M里内存搬移,前面已经讲过TAB_NUM1-TAB_NUM4 为数码管动态显示的内存,如果把数据放在TAB_NUM4后面(下图红色标志),每次内存搬移都调用几次动态显示的函数,把需要搬移的内存缓冲区最底搬移到TAB_NUM1-1的位置即可以停止。图13 内存搬移2.4.1.3程序说明:占用资源意义或数量R6,R7起始缓存地址:r6(#TAB_NUM1-1), 缓存的长度:r7 (数字的长度+4)RAM(R6-R7+R6)缓存区由于R6地址的数据并不是搬移的对象,为保护起来,所以采用了压栈的方法;由于每次内存搬移的时候会把R7地址后一位搬移到R7地址的位置。滚屏的时候,难免就会出现乱码。所以每次

10、搬移后就恢复R7地址原来的数据。图14 内存搬移流程图2.4.2 中断服务程序2.4.2.1流程中断服务程序里完成,求字符串长度(R1)(以0DH结尾),显示内存初始化(TAB_NUM1-4初始化为零,程序存储器的数字搬移到35H到R1+34H(<4DH)的位置),根据字符串长度循环搬移内存,并同时调用动态显示函数10左右。内存初始化:内存初始化是从程序存存储器的最后一个字节的数据开始搬移到目的地址的最后的地址,循环滚屏数字的长度就完成了内存的初始化。图15内存初始化示意图程序说明:R2暂存数据结果,R3;得到存放的目的地址图16内存初始化流程图滚屏显示:滚屏显示的程序就是在完成内存初始

11、化后调用内存搬移程序,循环几次调用动态显示的程序,比较简单就不画流程图了。2.5创新(可变频率音调(方波),通过蜂鸣器)2.5.1硬件原理图:2.5.2流程基本的思想就是获得按键值的时候,重新配置定时器的溢出率,启动定时器及其中断,在中断服务程序里对P1.3进行反转,就可以输出方波;如果按键没有按下就,关闭定时器停止输出方波。程序比较简单,这里就不画流程图了。这里讲明如何设置波特率。定时器0采用了16位的模式,通过FKHzH(7FH),FKHzL(7EH)在中断服务程序里设置定时器的溢出率。通过下面的几句代码即可更新溢出率:MOV A,KEY_VALUEINC A; 1-16MOV B,#0F

12、HMUL ABMOV B,#0FFHMUL ABMOV FKHzL,AMOV FKHzH,B解释:每次得到键值A,加一(1-16) 并乘以15(15-240)在成以255得到高位(B)赋值给FKHzH,低8位(A)赋值给FKHzL3.课程设计总结本次工程使用了多文件的形式,每个外设都对应一个文件,维护和移植性都很好。由于之前用的是C语言,汇编相对来说,比较晦涩难懂,结构关系以及变量,寄存器的使用经常会有冲突。经过摸索,查阅资料,发现汇编可以跟C那样来写,具体怎么写呢?我的想法就是把自己当成一个c语言的编译器,心里的某个想法用流程图或者c语言描述出来,然后自己转化出相应的汇编。转化的原则有以下几点:1.全局变量及常用的变量放在RAM里,通过一个地址进行引用,就可以达到“全局变量”效果,在任何地方都可以引用;但是这些东西用多了除了暂用RAM外,还会降低代码的可读性。故慎用!2.C语言的函数调用,在汇编可以体现为过程调用。使用过程调用同样可以提高代码的可读性;但是会带来的问题就是寄存器的使用冲突,为了解决冲突,会把子过程使用到的寄存器进行全部入栈保护,而且入栈和 出栈的顺序要求对应(先入后出)。但是如果子过程复杂了,就会出现只入栈没有出栈操作(这个是程序自己设计的问题),由于子过程调用会把PC指针压栈,返回时要PC指针出栈,如果出栈的不是PC指针程序就跑

温馨提示

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

评论

0/150

提交评论