(单片机课程设计报告).doc

上传人:时光煮雨 文档编号:14874302 上传时间:2022-02-22 格式:DOC 页数:18 大小:286.50KB
返回 下载 相关 举报
(单片机课程设计报告).doc_第1页
第1页 / 共18页
(单片机课程设计报告).doc_第2页
第2页 / 共18页
(单片机课程设计报告).doc_第3页
第3页 / 共18页
(单片机课程设计报告).doc_第4页
第4页 / 共18页
(单片机课程设计报告).doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《(单片机课程设计报告).doc》由会员分享,可在线阅读,更多相关《(单片机课程设计报告).doc(18页珍藏版)》请在三一文库上搜索。

1、单片机课程设计报告单片机课程设计报告题 目: 可控流水灯 摘要单片机是一种集成电路芯片,采用超大规模技术,把具有数据处理能力的微处理器、随机存取数据存储器、只读程序存储器、输入输出电路、可能还包括定时计数器、串口通信口、显示驱动电路,脉宽调制电路、模拟多路转换器及 A/D 转换器等电路集成到一块芯片上,构成一个最小而完善的计算机系统。这些电路在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。对可控流水灯设计通过编写代码实现 10 个 LED 灯 4 种流水灯显示方式。在设计中主要采用 89C51 这款芯片作为控制主体,用发光二极管来作为显示灯。系统通过 P2 口外接 8 个发光二极

2、管,P3 口接 2 个发光二极管。设计中辅以简单的设备和必要的电路,设计了一款流水灯,最终达到预期的目的。关键词 单片机 89C51 发光二极管 流水灯 目 次1 引言 .12 课题综述 .12.1 课题来源与意义.12.2 面临的问题.13 系统设计 .13.1 总体设计.13.2 模块设计.23.3 硬件设计.54 代码编写 .65 系统调试 .76 系统运行结果与分析 .7结 论 .9致 谢 .10参 考 文 献 .11附录 .12- 1 -1 引言单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在的单片机的控制范畴无所不在,

3、例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。2 课题综述2.12.1 课题来源与意义课题来源与意义随着经济的发展、科技的突飞猛进,芯片业得到了迅速的发展,是单片机技术在各种民用和工业控制等领域得到更广泛的应用。单片机凭借其低成本、高性能的不可代替优势已经成为了微电脑 控制的主力军。学习单片机的有效方法是将理论与实践并重,因此通过对单片机可控流水灯的设计和研究,鼓励学生在熟悉基本原理的前提下,与实际应用相联系,提出自己的方案,来完善设计,使得他们更好的掌握单片机的应用。2.22.2 面临的问题面临的问题本次课程设计的要求是对 10 个 LED 灯

4、设计 4 种流水灯显示方式.解决的问题有流水灯显示方式的设计。下面将对各个问题展开论述。3 系统设计3.13.1 总体设计总体设计实现这个课题我们使用 89C51 作为控制主体,使用十个共阳极发光二极管作为LED 显示流水灯。外接一个晶振来提供外接时钟脉冲,和复位电路.- 2 -模块图如下:图 3-1 系统模块图流程图如下:开始启动结束发光管显示模式图 3-2 系统流程图3.23.2 模块设计模块设计3.2.1 主体控制模块及介绍芯片 89C51 是核心,P0、P1、P2、P3 口均可以作为 I/O 口使用。发光管经过上拉电阻接在 89C51 的 P3 口上两个,P2 口外接 8 个发光二极管

5、.核心控制模块AT89C51复位电路模块时钟电路模块显示电路模块- 3 -图 3-3 主体控制模块图管脚说明:VCC:供电电压。 GND:接地。 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管

6、脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写

7、时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉电阻的缘故。 - 4 -P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示: P3口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1) P3

8、.4 T0(记时器 0 外部输入) P3.5 T1(记时器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过

9、一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间

10、内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 振荡器特性: XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.22 时钟模块时钟电路用于产生单片机工作时所需的时钟信号,在芯片的外部通过 18 脚、19 脚接晶体振荡器和微调电容,形成反馈电路,构成一个稳定的

11、自激振荡器。电路中的 C1、C2 取 30Pf 左右,二晶体振荡器的频率范围通常是 1.2-12MHZ,晶体振荡器的频率越高,振荡频率越高。- 5 -图 3-5 时钟模块图3.2.3 流水灯模块发光二极管就是 LED,是一种由磷化镓等半导体材料制成的、能直接将电能转换成光能的发光显示器件。当其内部有一定电流通过时,就是发光。发光二极管具有功耗低、体积小、可靠性高、寿命长和相应快等优点。流水灯模块采用 10 个 LED 发光二极管,通过代码的编写,实现 4 种流水移动,其中电阻的作用是保护二极管,向它提供较小的电流,防止二极管因为电流过大而烧毁。设计中,发光二极管是共阴极接法的,我们只需要将其初

12、值不断的左移就会看到 LED 轮流的被点亮,也就实现了流水灯的功能。- 6 -图 3-5 流水灯模块图3.33.3 硬件设计硬件设计图 3-7 硬件连接图4 代码编写定义各个端口: sbit led1=P20; 定义 p1.0 端口为了 led 1 sbit led2=P21; sbit led3=P22;sbit led4=P23;sbit led5=P24;sbit led6=P25;sbit led7=P26;sbit led8=P27;- 7 -sbit led9=P30;sbit led0=P延时:delay(uint z) 延时环节 uint x,y; for(x=z;x0;x-)

13、 for(y=110;y0;y-); 方式 1:for(i=1;i20;i+) /第一种情况,全部亮 P2=0XFF;P3=0XFF;delay(100);P2=0X00;P3=0X00;delay(100);第一种情况,使十个发光二极管全部亮方式 2:让第 1,3,5,7,9 灯依次亮方式 3:让十个灯顺序亮方式 4:让两个一组顺序亮5 系统调试通过对编写好的代码用 keil 进行编译后,因为对 keil 不是太熟悉,以至于花- 8 -了很长时间都无法载入到 protues 中进行模仿。后来在请同学帮忙,才得以完成。并且每种方式都可以很好的得以实现。 6 系统运行结果与分析通过 USB 线接

14、通提供电源后, led 灯能正常显示, led 灯首先一全部亮的方式实现,在循环了 20 次后第一种情况结束:接着自动进行第二种情况,使奇数的灯依次亮,同样的在循环了 20 次后自动进入进入第三种循环方式,如此进行直至结束。但是,由于技术达不到,不能使用开关进行选择哪一种循环方式;同时也不能自动停止,需要人工停止。 - 9 -结 论通过这次的课程设计,让我学习到了很多知识以及认识到了很多问题。同时我意识到了一个很重要的问题,那就是课程设计之前的准备工作也是很重要的,包括提前预习设计的题目,上网和去图书馆查阅资料。我清楚的知道了,资料也是那么重要,否则在一个新颖的题目面前,你将无从下手。通过准备

15、工作,这样可以保正在设计的时候,有了充足的准备,使得自己不会在真正要开始课程设计的时候,对着题目发呆,没有什么进展。因此,我觉得这个也是对待学习的一种好的态度,以后在学习中,也要一直以这种好的态度对待。除此之外,让我发现这次的可控流水灯设计,对于我以前的学习如 led 灯等的知识,不仅是一次很好的运用,而且让我再次花心思去复习了以前学习的知识点,运用之初相互结合知识点,使得知识点可以联系起来,对我的学习有了很大的好处。在程序设计的过程中,也遇到了好多的问题,刚开始在代码调试的时候,一直会存在错误,也有过很失望的时候,在通过同学的帮助后,经过很多次的修改以后,终于把程序代码改好。在大家的帮助下,

16、才得以完成了可控流水灯基本功能。总的来说,这次设计获益胜多。因为本次课程设计是一个团队的合作,所以,不仅使得我们团结合作,学习到了知识,还让我们更加的学会沟通。不仅培养了实践能力,还培养了设计思维,同时也锻炼了动手实际操作能力,在摸索该如何设计电路使之实现所需功能的过程中,锻炼了运用所学知识的灵活性,加深了对知识的理解及提高了解决问题的能力。在体会到设计电路的艰辛的同时,更能体会到成功喜悦和快乐。在这次的设计中,我学习了很多,也享受到了其中的乐趣。从这次课程设计中我了解到流水灯的设计还是很好玩的,以前在路上夜景中的流水灯看上去很复杂,现在自己编程以后,知道了原理,相信在器件的允许下,我们也是可

17、以完成那种效果的。- 10 -致 谢对于这次的课程设计,首先最要感谢就是我们的机电学院了,正是他提供了这次实践的机会,让我们都有了锻炼的机会,有了进一步学习和巩固所学过的知识点,我觉得这是一次难得的机会,我相信其他学校或者是其他专业的同学都不一定能有这个机会的。当然还要感谢的就是担任我们单片机课程设计的老师徐宇宝老师,指导我们设计,对于我们在课程设计中遇到的问题,他总是会很认真的帮助我们解答疑难,老师会在我不懂的时候放弃自己手头上的工作,在旁边指导提醒,一遍又一遍,直到我弄懂为止,真的十分感谢!而且更加令我感动的是,在编写程序的时候会碰到很多问题,大家都细心帮我们解答纠正。我们在通过大家的帮助

18、后,经过很多次的修改以后,终于把程序代码改好。但是在代码烧入芯片中, ,我们还是花费了好多时间,但是还是没有头绪。最终还是在大家的帮助下,以及帮我们把代码进行了修改,才得以完成了可控流水灯基本功能。我觉得我们真的应该要好好的感谢老师,他们为了我们,付出了很多的时间和精力,而且他都是比较耐心的指导,从来没有见他不耐烦过,真的对于他们的行动很感动。当然,我不会忘记我的那些同学,在我遇到疑难的时候,他们也总是会很乐意的帮助我,为我解答难题,而且还会主动地借资料给我,我很庆幸有这些好的同学,也在此要好好感谢他们。还有就是我要感谢那些我们所在实践的地点的工作人员,是他们为我们提供了那么好的环境,在这么舒

19、服的环境之中做程序就是一种享受。最后必须感谢的就是给我提供过帮助的参考文献的作者了,他们所编的书籍让我受益匪浅。真的很感谢他们所有人的帮助。- 11 -参 考 文 献1 康华光.电子技术基础数字部分(第五版).高等教育出版社,20062 严天峰.单片机应用系统设计与仿真调试.北京:北京航空航天大学出版社,2005 3 李广弟,朱秀月,冷祖祁.单片机基础(第三版).北京:北京航空航天大学出版社,2007 4 胡汉才.单片机原理及系统设计. 北京:清华大学出版社,2002 5 南建辉,熊鸣,王军茹.MCS-51 单片机原理及应用实例. 北京:清华大学出版社,2004 - 12 -附录#includ

20、e /#include #define uchar unsigned char #define uint unsigned int sbit led1=P20; /定义各个端口sbit led2=P21;sbit led3=P22;sbit led4=P23;sbit led5=P24;sbit led6=P25;sbit led7=P26;sbit led8=P27;sbit led9=P30;sbit led0=P31;delay(uint z) /延时 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void main() int i; for(i=

21、1;i20;i+) /第一种情况,全部亮 P2=0XFF;P3=0XFF;delay(100);P2=0X00;P3=0X00;delay(100); delay(1000); for(i=1;i20;i+) /第二种情况,奇数亮 P2=0Xaa;P3=0Xaa;delay(100);P2=0X00;- 13 -P3=0X00;delay(100); delay(1000); for(i=1;i10;i+) /第三种情况,顺序亮 led1=0 x01; delay(50); led1=0 x00; delay(50); led2=0 x01; delay(50); led2=0 x00; de

22、lay(50); led3=0 x01; delay(50); led3=0 x00; delay(50); led4=0 x01; delay(50); led4=0 x00; delay(50); led5=0 x01; delay(50); led5=0 x00; delay(50); led6=0 x01; delay(50); led6=0 x00; delay(50); led7=0 x01; delay(50); led7=0 x00; delay(50); led8=0 x01; delay(50); led8=0 x00; delay(50);- 14 - led9=0 x0

23、1; delay(50); led9=0 x00; delay(50); led0=0 x01; delay(50); led0=0 x00; delay(50); delay(1000); for(i=1;i20;i+) /第四种情况,两个一组顺序亮 P2=0X03; delay(100); P2=0X00; delay(100); P2=0X0c; delay(100); P2=0X00; delay(100); P2=0X30; delay(100); P2=0X00; delay(100); P2=0Xc0; delay(100); P2=0X00; delay(100); P3=0X03; delay(100); P3=0X00; delay(100); delay(100) ; 指导教师评语指导教师评语

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1