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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机课设.docx

1、单片机课设目录1设计原理与方法 11.1 单片机概述 11.2 单片机引脚说明 21.3 设计原理 32 系统硬件设计 43 程序框图 43.1 主程序 53.2 定时器中断子程序 54 资源分配表 65 源程序 66 调试和性能分析 106.1 仿真调试 106.2 实物调试 126.3 性能分析 147 心得体会 158 参考文献 16本科生课程设计成绩评定表 171设计原理与方法1.1 单片机概述单片机是在一块芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称MCU。51系列单片机内包含下列几部件:(1) 一个8位CPU;(

2、2) 一个片内振荡器及时钟电路;(3) 4KB ROM程序存储器;(4) 128B RAM 数据存储器;(5) 可寻址64KB外部数据存储器和64KB 外部程序存储空间的控制电路;(6) 32条可编程的I/O线(4个8位并行I/O端口);(7) 两个16位的定时/计数器;(8) 一个可编程的全双工串行口;(9) 5个中断源、两个优先级嵌套中断结构。51系列单片机内部结构如图1-1所示。图1-1 51系列单片机内部结构框图1.2 单片机引脚说明 可总线扩展的单片机有44个引脚的方形封装和40个引脚的双列直插式封装形式,最常用的40个引脚封装,如图1-2所示,各个引脚的功能说明如下。 图1-2 5

3、1单片机引脚Vss:接地端。Vcc:电源端,接+5V。XTAL1,XTAL2:接外部晶体或外部时钟信号。RST/VPD: 复位信号输入。 接备用电源。掉电后,在低功耗条件下保持内部RAM中的数据。ALE/PROG:ALE 地址锁存允许。 ALE输出脉冲的频率为振荡频率的1/6。PROG 对8751单片机片内 EPROM 编程时,编程脉冲由该引脚引入。PSEN :程序存储器允许。输出读外部程序存储器的选通信号。EA/VPP: EA =0,单片机只访问外部程序存储器。EA =1,单片机访问内部程序存储器。在8751单片机片内EPROM编程期间,此引脚引入21V编程电源VPP。P0.0P0.7:P0

4、口,数据/低八位地址复用总线端口。P1.0P1.7:P1口,静态通用端口。P2.0P2.7:P2口,高八位地址总线端口。 P3.0P3.7:P3口,双功能静态端口。1.3 设计原理本设计的主要目的是实现两路正交的方波信号(两路信号相差90o),主要包括四个模块:按键模块、单片机模块、数码管显示模块、波形显示模块,构成的原理框图如图1-3所示。 图1-3 设计原理框图本次设计中按键模块是用来改变方波的输出频率,采用的是按键查询方式而不是外部中断请求;数码管显示模块是用来显示方波的输出频率;波形显示模块是用示波器观察波形的相位差以及频率变化。要实现两路方波信号的相位差为90o 以及输出频率的变化,

5、主要依靠单片机模块。单片机模块中使用到了定时/计数器0和定时/计数器1,均工作于方式1,计数寄存器的位数是16位,由THx和TLx寄存器提供8位计数初值,当计满了预设的个数,THx和TLx回零,置位定时/计数器溢出中断标志TFx产生溢出中断。当单片机接收到外部中断请求信号后,处理中断请求,输出信号取反,重新装入初值,开始定时,如此循环,产生方波信号。要实现方波信号频率变化则当查询到按键按下后,改变两个定时/计数器的计数初值即改变定时时间,以此实现频率的变化。要实现两路方波信号正交即相位相差90o就要求在该频率的方波第一次定时时,第二路方波相对与第一路方波延时1/4周期,即第一次装入初值是第一路

6、方波的一半,其后定时中断产生后装入相同初值即可实现两路信号正交。定时/计数器工作于方式1时的初值C计算公式为:C=65536-(t/MC),其中t为预定时时间,MC为单片机的机器周期。2 系统硬件设计系统硬件设计中通过单片机89C51的P2口的P2.0和P2.1两个引脚输出两路方波信号,与示波器相连接,观察波形。通过P3口的P3.2和P3.3两个引脚接两个按键分别控制方波频率的增大和减小。数码管显示模块选用的是共阴极数码管,采用的是动态显示,在电路中采用74HC573来驱动四个数码管,段码显示是由单片机的P0口进行输出,位选是由P1.0P1.3进行输出。采用的是12M的晶振,即机器周期为1s。

7、系统硬件原理图如图2-1所示。图2-1 系统硬件原理图3 程序框图本次软件设计主要包括主程序、延时子程序、系统初始化程序、数码管显示模块子程序、键盘扫描模块子程序、定时器中断子程序。3.1 主程序主程序包括系统初始化和一个死循环系统,循环系统内包括显示模块和键盘扫描模块。当有中断请求信号产生时,跳出循环,执行中断程序。主程序流程图如图3-1所示。图3-1 主程序流程图3.2 定时器中断子程序定时计数器中断子程序有定时器0与定时器1中断,两个中断的入口地址有所差别,但操作基本相同:首先对输出信号取反,定时器初值重新装入,定时开始。定时器中断的流程框图如下图3-2所示。图3-2 定时器中断子程序流

8、程图4 资源分配表以下是本设计中单片机89C51的系统资源分配:P3.2:调整频率增大的按键P3.3:调整频率减小的按键P2.0:第一路方波输出端(定时/计数器0控制)P2.1:第二路方波输出端(定时/计数器1控制)P0口:数码管显示的段选输出P1.0P1.4:数码管显示的位选输出P2.6:数码管段选锁存器控制端P2.7:数码管位选锁存器控制端定时/计数器0:控制P2.0口方波输出定时/计数器1:控制P2.1口方波输出XTAL1和XTAL2接外部晶振,频率为12MHZ5 源程序#include#define uchar unsigned char#define uint unsigned in

9、tfloat fosc=12000000; / 系统时钟系统sbit key1=P32; sbit key2=P33;sbit output1=P20;sbit output2=P21;sbit u1=P26;sbit u2=P27;uint freq,a;uchar TIMERL,TIMERH;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/* 延时子程序 */void delay(uchar n) uchar i; while(n-) for(

10、i=255;i0;i-); /* 显示模块子程序*/void display(uint ufreq) uchar ge,shi,bai,qian; qian=ufreq/1000; ufreq=ufreq%1000; bai=ufreq/100; ufreq=ufreq%100; shi=ufreq/10; ge=ufreq%10; P1=0xfe; u2=1; u2=0; P0=tableqian; u1=1; u1=0; delay(1); P1=0xfd; u2=1; u2=0; P0=tablebai; u1=1; u1=0; delay(1); P1=0xfb; u2=1; u2=0

11、; P0=tableshi; u1=1; u1=0; delay(1); P1=0xf7; u2=1; u2=0; P0=tablege; u1=1; u1=0; delay(1);/* 系统初始化*/void init() P3=0x0f; freq=50; a=10; TIMERL=0xf0; TIMERH=0xd8; output1=1; output2=0; TH0=0xd8; TL0=0xf0; TH1=0xec; TL1=0x78; TMOD=0x11; ET0=1; ET1=1; EA=1; TR0=1; TR1=1;/* 键盘扫描模块*/void chuzhi(float af

12、req)float TF0,TF1; TF0=(65536-fosc/(24.0*afreq); TIMERH=(uint)TF0/256; TIMERL=(uint)TF0%256; TR0=0; TR1=0; TH0=TIMERH; TL0=TIMERL; TF1=(65536-fosc/(48.0*afreq); TH1=(uint)TF1/256; TL1=(uint)TF1%256; output1=1; output2=0; TR0=1; TR1=1; void keyscan()if(key1=0) delay(10); if(key1=0) while(!key1); freq

13、+=a; chuzhi(freq); if(key2=0) delay(10); if(key2=0) while(!key2); freq-=a; chuzhi(freq); /* 主函数*/void main() init(); while(1) display(freq) ; keyscan() ; /* 定时器中断子程序*/void T0_timer() interrupt 1 output1=!output1; TL0=TIMERL; TH0=TIMERH;void T1_timer() interrupt 3 output2=!output2; TL1=TIMERL; TH1=TI

14、MERH;6 调试和性能分析在本次课程设计中,使用Proteus软件进行仿真调试。调试的内容主要为软硬件的协同,观察波形输出结果是否能够与设计方案所设计的那样达到要求。6.1 仿真调试调试结果如下:1)在Proteus软件中运行仿真,示波器窗口中出现正交的两路方波信号,数码管显示波形信号的频率,显然波形频率为50Hz,符合程序初始化的结果,50Hz时仿真结果如图6-1所示。图6-1 仿真结果初始状态(50Hz)2)按下S1键调节方波频率,使方波频率不断增加,仿真结果如图6-2所示。图6-2 仿真结果频率增加(4050Hz)3)按下S2键调节方波频率,使方波频率不断减小,仿真结果如图6-3所示。

15、图6-3 仿真结果频率减小(20Hz)6.2 实物调试实物图如下6-4所示。将HEX文件加载后,用示波器观察单片机的P2.0和P2.4口,得到输出结果。1)系统运行的初始状态如图6-5所示,与仿真结果一致。图6-4 实物图图6-5 实物结果初始状态(50Hz)2)按下S1键调节方波频率,可见方波频率增加,结果如图6-6及6-7所示,由图可以看出在实物的调试中,当频率增加到5KHz时,输出方波开始出现一定程度的失真。图6-6 实物结果频率增加(1050Hz)图6-7 实物结果频率增加(5550Hz)3)按下S2键调节方波频率,可见方波频率减小,结果如图6-8所示。图6-8 实物结果频率减小(20

16、Hz)6.3 性能分析在本次设计中,两路输出方波正交且频率可调。频率调节的精度和初始值可通过程序中的两个值即可进行调节。理论上方波的最高频率可以达到500KHz,但由于运行程序所需时间及各种因素,在实际的过程中,软件仿真可以取得较为理想的输出波形,实物调试中当波形频率达到5KHz的时候,即出现一定程度的失真。总体看来,设计的结果达到了课程设计的要求,在一定范围内,输出波形稳定,调节也比较简单。7 心得体会通过为期一个星期的认真学习和实际操作,我终于完成了本次单片机原理与应用的课程设计。在本次课程设计的过程中,我学到了很多,充分理解单片机应用的基本原理。在实际仿真过程中,也遇到了很多困难,但都在

17、自己的自我学习和同学的帮助下得到很好的解决,通过对电路的仿真使理论知识更加直观生动的展现了出来,加深了我的理解。本次课程设计中,我首先学习怎样使用Proteus 和Keil软件。以前的课设我已经接触过Proteus软件,但为了充分了解了Proteus 和Keil软件的结构组成以及主要功能,我从图书馆借了相关书籍和在网上了很多相关资料。然后通过电脑运行Proteus软件进行了一些简单的仿真。我又学习了一些单片机编程的知识,并通过使用Keil软件进行了编程训练。通过实际的操作Proteus和Keil软件,我真切的体会到理论与实际的差距,虽然之前做了充分的准备,但到实际操作的时候还是遇到很多的问题,

18、通过查找资料和与同学讨论顺利了解决了操作问题。基本掌握了使用Proteus和Keil软件进行仿真,我开始完成本次课设中我的任务。首先根据单片机的理论知识设计好电路图,然后进行理论分析,使自己的电路图具有可行性。然后对电路图进行仿真,最后通过不停地修改终于实现了所要达到的要求。课设的最后一部分就是写实验报告了,有很多人都认为既然是课程设计最重要的就是操作了,实际上实验报告也是非常重要的,通过实验报告我们可以对本次课设进行总结,对自己的出现问题进行详细的分析和解决方法,以免自己在以后再犯类似的错误。这才是最重要的,这样自己才能进步,才能有所收获。课程设计实验报告的严格要求让我们以后在写论文或者报告

19、时候更加的规范,对我们以后有很大的益处。总体上来说,完成本次单片机课设的过程中遇到很多困难,但通过本次课设自己也收获颇丰。而且通过本次课设让我更深的了解了单片机这门课,使我产生了浓厚的兴趣,从中我找到了乐趣,获得了成就感。8 参考文献1 李群芳,张士军.单片机微型计算机与接口技术.北京:电子工业出版社,20082 郭天祥.51单片机C语言教程.北京:电子工业出版社,20093 姚燕南,薛钧义.微型计算机原理与接口技术.北京:高等教育出版社,20044 汪道辉.单片机系统设计与实践.北京:电子工业出版社,20065 楼然苗.51系列单片机设计实例.北京:北京航空航天出版社,2003本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日

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

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