单片机课程设计-16个LED灯多样显示控制器.docx

上传人:scccc 文档编号:13930455 上传时间:2022-01-26 格式:DOCX 页数:15 大小:256.76KB
返回 下载 相关 举报
单片机课程设计-16个LED灯多样显示控制器.docx_第1页
第1页 / 共15页
单片机课程设计-16个LED灯多样显示控制器.docx_第2页
第2页 / 共15页
单片机课程设计-16个LED灯多样显示控制器.docx_第3页
第3页 / 共15页
单片机课程设计-16个LED灯多样显示控制器.docx_第4页
第4页 / 共15页
单片机课程设计-16个LED灯多样显示控制器.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《单片机课程设计-16个LED灯多样显示控制器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计-16个LED灯多样显示控制器.docx(15页珍藏版)》请在三一文库上搜索。

1、信息工程学院课程设计报告设计题目:节日彩灯控制器设计名称:电子信息工程专业综合课程设计(1)班级:姓名:学号:设计时间:2016.06.22指导教师:评 语:评阅成绩:评阅教师:目录一、课程设计的性质和目的 1.二、课程设计的要求1.2.1 设计题目1.2.2 设计要求1.三、主要仪器设备及软件 1.四、课题分析及设计 2.4.1 设计任务2.4.2 设计方案2.4.3 系统硬件设计 2.4.3.1 单片机最小系统 34.3.2 控制电路介绍 64.3.3 Proteus电路仿真图 74.4 软件设计8.4.4.1 程序流程图84.4.2 软件程序及分析8五、组装调试125.1硬件12六、总结

2、1.3一、课程设计的性质和目的学习基本理论在实践中综合运用的初步经验, 掌握电路设计的基本方法、设 计步骤,培养综合设计与调试能力;掌握汇编语言程序设计方法;培养实践技能, 提高分析和解决实际问题的能力。二、课程设计的要求2.1 设计题目节日彩灯控制器设计。2.2 设计要求设计一个16个LED丁的多样显示控制器。1 .选择两个I/O端口控制16个LEDK水灯。2 .设置四个按键K1K4,按下K1跑马灯,K2鸳鸯戏水,K3双流水灯,K4M 循环三种控制方式。3 .跑马灯:共16个LEDg次点亮,每隔100m或亮一个LED,点亮100mSt 关闭,然后继续上次操作。4 .鸳鸯戏水灯:第一次单数灯点

3、亮,延时 100m6关闭,然后双数灯点亮, 延时100m6关闭,然后继续上次操作。5 .双流水灯:16个LEDW次向中间点亮,间隔100m6再依次向两边扩散 点亮,间隔100m6然后继续上次操作。三、主要仪器设备及软件计算机、KeilC51软件、Proteus软件、单片机AT89C51 LED灯、电阻、拨 码开关、晶振。四、课题分析及设计4.1 设计任务彩灯用16个发光二极管代替;电路具有控制16个LEW逐个点亮、单数点 亮、双数点亮、扩散点亮等功能(用 4个按键切换LED显示状态);彩灯两灯移 动时间间隔为100ms4.2 设计方案本课题使用AT89C51单片机时无须外扩存储器。因此,本流水

4、灯实际上就是 一个带有16个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、 复位、电源等电路和必要的软件组成的单个单片机。如果要让接在P0.0 口和P2.0 口的16个LED亮起来,那么只要把P0.0 口和 P2.0 口的电平变为低电平就可以了;相反,如果要接在P0.0 的LED熄灭,就要把P0.0 口的电平变为高电平;同理,接在P0.1P0.7 口的其他7个LED的点 亮和熄灭的方法同以上LED因此,要实现流水灯功能,我们只要将发光二极管 LED卜LED16R次点亮、熄灭,16只LED灯便会一亮一暗的做流水灯或跑马灯了。 同样的道理,可以让16个灯上移或下移点亮,全亮、全灭。在此我

5、们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令 的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。4.3 系统硬件设计AT89C5促一种带 4K字节 FLASH#储器(FPEROMFlash Programmable and Erasable Read Only Memory )的低电压、高性能 CMOS 8位微处理器,俗称单 片机。AT89C205促一种带2K字节闪存可编程可擦除只读存储器的单片机。单 片机的可擦除只读存储器可以反复擦除 1000次。该器件采用ATMEL5密度非易.O.1.2.3.45.G:7 1 11 111-11 PPP

6、PPFPFXTAL1XTAJU2RST失存储器制造技术制造,与工业标准的 MCS-51指令集和输出管脚相兼容。由于 将多功能8位CPUffi闪速存储器组合在单个芯片中,ATMEL勺AT89C51是一种高 效微控制器,AT89C205促它的一种精简版本。AT89C51单片机为很多嵌入式控 制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图4.1所示。PO.OZAOO PD.1ZAD1 PQ.2ZAD2 PO.3/AD3 Pa.4ZAJD4 P0.5ZADE P0.6ZAD6 PD.7ZAD7P2.O/A8F2.VA9R2.SZAW P2.3/A1 1 P2.4/yM2 R2.5A13PN.

7、 3g 14F2.7/A1SP3.D/RXD P3.1TXD_ P3.2/IIMTTD PC3.3/1NT1F3.J/T0F3.5/T1P3.6/WR; F3.7J,RD-图4.1 AT89C51单片机芯片引脚4.3.1 单片机最小系统(1) P0 口介绍P0 口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL门电流。当P0 口 的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器, 它可以被定义4为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入 口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻(2) P1 口介绍P1 口是一个内部提供上拉

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

9、地址“ 1”时,它利用内部上拉优势,当对外部 八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASHg程和校验时接收高八位地址信号和控制信号。(4) P3 口介绍P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4个TTL门电 流。当P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入, 由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也 可作为AT89C51的一些特殊功能口。复位系统(5)上电复位电路AT89C51的上电复位电路如图4.2所示,只要在RST复位输入引脚上接一电 容至Vcc端,下接一个电阻到

10、地即可。对于 CMO型单片机,由于在RST端内部 有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1N巳上电复位的工作过程是在加电时,复位电路通过电容加给RS制一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST带的高电平持续时 间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10m6而振荡器的起振时 间取决于振荡频率,如晶振频率为 10MHz起振时间为1mq晶振频率为1MHz 起振时间则为10ms在如图的复位电路中,当 Vcc掉电时,必然会使RST端电 压迅速下降到0V以下,但是,由于内

11、部电路的限制作用,这个负电压将不会对 器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端 口置为全“l”态。如果系统在上电时得不到有效的复位, 则程序计数器PC将得 不到一个合适的初值,因此,CPK能会从一个未被定义的位置开始执行程序图4.2上电复位电路(6)手动复位电路手动按钮复位需要人为在复位输入端 RST上加入高电平。一般采用的办法是在RST和正电源Vcc之间接一个按钮。如图4-3所示,当人为按下按钮时,则Vcc的+5V电平就会直接加到RST。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求八0C3阡3 10uF

12、22010kW图4.3手动复位电路(7)晶振系统晶振是给单片机提供工作信号脉冲的.这个脉冲就是单片机的工作速度.比 如12M晶振.单片机工作速度就是每秒12M.单片机内部也有晶振,接外部晶振可 以或得更稳定的频率。因为晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路 中会产生偕波(也就是不希望存在的其他频率的波),这个波电路的影响不大,但 会降低电路的时钟振荡器的稳定性,如图 4.4所示。80C51型单片机内有一高增益反相放大器,按如图连接可构成自激振荡电 路,振荡频率取决于石英晶体的振荡频率,范围可取1.212MHz C01.C02主要起频率微调和稳定作用,电容值可取 5-30Pfo4

13、.3.2 控制电路介绍(1)按键机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时 间的触点机械抖动,然后其触点才稳定下来。抖动时间的长短与开关的机械特性 有关,一般为5-10 ms,如图4.5所示。K1流水灯 - rATWC51噩11:o of- o o解-=- K4, I 3 1- -图4.5按键控制电路(2) LED电路LED显示器具有功耗低,接口控制方便等优点,能直接与单片机接口,可方便地实现各种不同的操作。16个发光二极管L1-L16分别接在单片机P0.0-P0.7P2.0-P2.7 。输出“ 0”,发光二极管亮4.3.3 Proteus图4.6 LED显示电路电路仿

14、真图图4.7电路原理图4.4软件设计4.4.1 程序流程图循环前面三种向中间亮单、双数灯 亮灯依次向下移动、图4.9主程序流程图在主程序中,应该尽量的使得任务简化,不要让中断服务程序作过多复杂的 任务,而要尽量把这些复杂的任务放到主程序中间去完成。中断流程如图所示。 去抖功能:读入键值,存入地址,然后延迟 10ms后,也就是一个很短的时间之 后,再次读入一个键值,两次键值相比较,如果一样则不是因为外部原因抖动产 生按键,如果不一样则说明是别的原因产生的按键抖动。 这样的一个程序就可以 去除因为抖动产生的错误输入信号。4.4.2 软件程序及分析(1)主要程序分析:定义8051寄存器的头文件定义i

15、ntrins.h 函数定义数学函数#include /#include /#include /#include #define u8 unsigned char #define s8 signed char #define u16 unsigned short #define s16 signed short #define u32 unsigned int #define s32 signed int #define fp32 float #define fp64 double#define INT8U unsigned char #define INT16U unsigned int sb

16、it K1 = P1A0;/按键 1sbit K2 = P1A1;/ 按键 2 sbit K3 = P1A2;/ 按键 3 sbit K4 = P1A3;/ 按键 4 #define KEY_CHK_TIM 10 u8 _g_key_value;跑马灯瓦组:code u16 dispcode16= /定义无符号字符/定义无符号整型/定于无符号整型定义浮点数双倍精度浮点数/按键检测时间获取到按键的值0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff,0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0x

17、ffbf,0xff7f;双流水灯数组:code u16 dispcode116=0xfe7f,0xfc3f,0xf81f,0xf00f,0xe007,0xc003,0x8001,0x0000,0x7ffe,0x3ffc,0x1ff8,0x0ff0,0x07e0,0x03c0,0x0180,0x0000;定时器初始化函数:void time_init(void)TMOD |= 0x01;TH0 = 0xf8;TL0 = 0x2f; /设定定时器初值(65535-63535)大约 60msTR0 = 1;/打开定时器ET0 = 1;/开中断EA = 1;ES = 1;(2)跑马灯运行方式:void

18、 disp0(void) /调用前面的跑马灯数组u8 i; / 定义 ifor(i = 0 ;i8; / P0P2 = dispcodei; delay_ms(100);(3)鸳鸯灯运行方式:void displ(void)delay_ms(100);P0 = 0xaa;P2 = 0xaa; delay_ms(100);P0 = 0x55;P2 = 0x55; delay_ms(100);(4)双流水灯运行方式:void disp2(void)u8 i;for(i = 0 ;i8; /P0P2 = dispcode1i; /P2 delay_ms(100);for(i = 8 ;i8;/P2

19、= dispcode1i;/delay_ms(100);/ (5)按键扫描函数:void key_scan(void)staticu16k1_pre_kep_tim = 0;/k1按键按下保持时间staticu8k1_press_flag = 0;/k1按键按下标志staticu8k1_short_press_flag=0;/k1短接触发标志staticu16k2_pre_kep_tim = 0;/k2按键按下保持时间staticu8k2_press_flag = 0;/k2按键按下标志staticu8k2_pre_ctn_tim=0; /按键连续触发的间隔延时计数staticu16k3_pr

20、e_kep_tim = 0;/k3按键按下保持时间staticu8k3_press_flag = 0;/k3按键按下标志staticu8k3_pre_ctn_tim=0;/k1短接触发标志staticu16k4_pre_kep_tim = 0;/k4按键按下保持时间staticu8k4_press_flag = 0;/k4按键按下标志if (K1 =1)/当按键松开为真k1_pre_kep_tim = 0;/k1按键按下保持时间清零k1_press_flag = 0;if (k1_short_press_flag =1 )/k1/按键按下标志清零短按标志为1短按标志清零触发1号短按键 累加定时

21、中断次数短按标志置1中断计数清零只运行跑马灯只运行鸳鸯灯只运行双流水 k1_short_press_flag = 0;/_g_key_value = 1;/else if (k1_press_flag = 0) k1_pre_kep_tim+;/if (k1_pre_kep_tim KEY_CHK_TIM) k1_short_press_flag = 1;/if (k1_pre_kep_tim 300) k1_pre_kep_tim = 0;/ (6)主程序:if (con_f = 1) disp0();/if (con_f = 2) disp1();/if (con_f = 3) disp2

22、();/if (con_f = 4)/循环以上三种disp0();disp1();disp2();五、组装调试5.1硬件硬件包括MCS-51单片机,LED发光二极管,晶振,电容,开关,电源,电 阻及导线。将所有硬件配齐,按电路原理图组装好电路,在电路板上一一对应, 所有硬件准备就绪后,接通电源,软硬结合。首先用烧录软件给单片机芯片加载 *hex文件,等待加载完毕,运行电路。当按下 K1时,跑马灯开始,16个LED 灯从上到下逐个点亮,第一个灯亮,然后灭,然后每个间隔时间为100ms;当按下K2时,鸳鸯灯开始,16个LED灯先单数亮,然后双数亮,间隔时间也是100ms 当K3按下时,双流水灯开始

23、,16个LED灯依次往中间移动,然后再依次往外移动,亮过的灯不熄灭;当K4按下时,循环以上三种亮灯万式。最终实现功能, 演示如下图5.1所示。图5.1实物演示图六、总结经过一段时间的努力,我们顺利的完成了这次单片机课设。这是一个磨练意 志的过程。从课题的选择开始,计算器的设计、硬件和软件系统的设计、到最后 的Proteus软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程 中我得到了很大的锻炼。一方面通过C51单片机等一些器件的设计让我学习和掌 握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用; 另一方面在用Proteus软件画电路图时,然后再转换成一维的 WOR

24、D进行编辑, 这个过程中让我掌握了计算机辅助的设计技术。 当然,这是一个需要不断的尝试, 不断的校核,不断的修改,最后完成一个合理的设计的过程。 需要的是细心和耐 心。在很大程度上培养了我拼搏的工作精神。 使我受益匪浅,更加明确了自己专 业的方向。了解了在单片机系统中扩展简单I/O接口的方法.外部中断技术的基本使用 方法,掌握了中断处理程序的编程方法,掌握 51系列单片机的基本硬件结构及 工作原理,掌握51系列单片机的C语言及基本程序设计方法;学习并掌握在 PROTEUS仿真环境中进行调试的基本方法。顺利如期的完成本次课程设计给了我很大的信心,让我了解专业知识的同时 也对本专业的发展前景充满信心, 通过对单片机的系统学习。对一些LED的设计 做了一些必要的改进。同时对自己的改进也做了真实的仿真。达到了预期的目的。 但是在改进的过程里也发现了自己的很多的不足。 这会在以后的学习生活里不断 提高,逐步完善自己。

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

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


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