单片机专业课程设计-16个LED灯的多样显示控制器.doc
《单片机专业课程设计-16个LED灯的多样显示控制器.doc》由会员分享,可在线阅读,更多相关《单片机专业课程设计-16个LED灯的多样显示控制器.doc(18页珍藏版)》请在咨信网上搜索。
信 息 工 程 学 院 课 程 设 计 报 告 设计题目: 节日彩灯控制器设计 名 称: 电子信息工程专业综合课程设计(1) 班 级: 姓 名: 学 号: 设计时间: .06.22 指导老师: 评 语: 评阅成绩: 评阅老师: 目录 一、课程设计性质和目标 1 二、课程设计要求 1 2.1 设计题目 1 2.2 设计要求 1 三、关键仪器设备及软件 1 四、课题分析及设计 2 4.1 设计任务 2 4.2 设计方案 2 4.3 系统硬件设计 2 4.3.1 单片机最小系统 3 4.3.2 控制电路介绍 6 4.3.3 Proteus电路仿真图 7 4.4 软件设计 7 4.4.1 程序步骤图 7 4.4.2 软件程序及分析 8 五、组装调试 12 5.1 硬件 12 六、总结 13 一、课程设计性质和目标 学习基础理论在实践中综合利用初步经验,掌握电路设计基础方法、设计步骤,培养综合设计和调试能力;掌握汇编语言程序设计方法;培养实践技能,提升分析和处理实际问题能力。 二、课程设计要求 2.1 设计题目 节日彩灯控制器设计。 2.2 设计要求 设计一个16个LED灯多样显示控制器。 1.选择两个I/O端口控制16个LED流水灯。 2.设置四个按键K1~K4,按下K1跑马灯,K2鸳鸯戏水,K3双流水灯,K4则循环三种控制方法。 3.跑马灯:共16个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后关闭,然后继续上次操作。 4.鸳鸯戏水灯:第一次单数灯点亮,延时100ms,关闭,然后双数灯点亮,延时100ms,关闭,然后继续上次操作。 5.双流水灯:16个LED依次向中间点亮,间隔100ms,再依次向两边扩散点亮,间隔100ms,然后继续上次操作。 三、关键仪器设备及软件 计算机、KeilC51软件、Proteus软件、单片机AT89C51、LED灯、电阻、拨码开关、晶振。 四、课题分析及设计 4.1 设计任务 彩灯用16个发光二极管替换;电路含有控制16个LED灯逐一点亮、单数点亮、双数点亮、扩散点亮等功效(用4个按键切换LED显示状态);彩灯两灯移动时间间隔为100ms。 4.2 设计方案 本课题使用AT89C51单片机时无须外扩存放器。所以,本流水灯实际上就是一个带有16个发光二极管单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必需软件组成单个单片机。 假如要让接在P0.0口和P2.0口16个LED亮起来,那么只要把P0.0口和P2.0口电平变为低电平就能够了;相反,假如要接在P0.0口LED熄灭,就要把P0.0口电平变为高电平;同理,接在P0.1~P0.7口其它7个LED点亮和熄灭方法同以上LED。所以,要实现流水灯功效,我们只要将发光二极管LED1~LED16依次点亮、熄灭,16只LED灯便会一亮一暗做流水灯或跑马灯了。一样道理,能够让16个灯上移或下移点亮,全亮、全灭。 在此我们还应注意一点,因为人眼视觉暂留效应和单片机实施每条指令时间很短,我们在控制二极管亮灭时候应该延时一段时间,不然我们就看不到“流水”效果了。 4.3 系统硬件设计 AT89C51是一个带4K字节FLASH存放器(FPEROM—Flash Programmable and Erasable Read Only Memory)低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一个带2K字节闪存可编程可擦除只读存放器单片机。单片机可擦除只读存放器能够反复擦除1000次。该器件采取ATMEL高密度非易失存放器制造技术制造,和工业标准MCS-51指令集和输出管脚相兼容。因为将多功效8位CPU和闪速存放器组合在单个芯片中,ATMELAT89C51是一个高效微控制器,AT89C2051是它一个精简版本。AT89C51单片机为很多嵌入式控制系统提供了一个灵活性高且价廉方案。外形及引脚排列图4.1所表示。 图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位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是因为内部上拉缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 (3)P2口介绍 P2口为一个内部上拉电阻8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并所以作为输入时,P2口管脚被外部拉低,将输出电流。这是因为内部上拉缘故。P2口当用于外部程序存放器或16位地址外部数据存放器进行存取时,P2口输出地址高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存放器进行读写时,P2口输出其特殊功效寄存器内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 (4)P3口介绍 P3口管脚是8个带内部上拉电阻双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,因为外部下拉为低电平,P3口将输出电流(ILL)这是因为上拉缘故。P3口也可作为AT89C51部分特殊功效口。 复位系统 (5)上电复位电路 AT89C51上电复位电路图4.2所表示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。对于CMOS型单片机,因为在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1µF。上电复位工作过程是在加电时,复位电路经过电 容加给RST端一个短暂高电平信号,此高电平信号伴随Vcc对电容充电过程而逐步回落,即RST端高电平连续时间取决于电容充电时间。为了确保系统能够可靠地复位,RST端高电平信号必需维持足够长时间。上电时,Vcc上升时间约为10ms,而振荡器起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图复位电路中,当Vcc掉电时,肯定会使RST端电压快速下降到0V以下,不过,因为内部电路限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。假如系统在上电时得不到有效复位,则程序计数器PC将得不到一个适宜初值,所以,CPU可能会从一个未被定义位置开始实施程序。 图4.2 上电复位电路 (6)手动复位电路 手动按钮复位需要人为在复位输入端RST上加入高电平。通常采取措施是在RST端和正电源Vcc之间接一个按钮。图4-3所表示,当人为按下按钮时,则Vcc+5V电平就会直接加到RST端。手动按钮复位电路如所表示。因为人动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位时间要求。 图4.3 手动复位电路 (7)晶振系统 晶振是给单片机提供工作信号脉冲.这个脉冲就是单片机工作速度.比如12M晶振.单片机工作速度就是每秒12M.单片机内部也有晶振,接外部晶振能够或得更稳定频率。因为晶振和单片机脚XTAL0和脚XTAL1组成振荡电路中会产生偕波(也就是不期望存在其它频率波),这个波电路影响不大,但会降低电路时钟振荡器稳定性,图4.4所表示。 80C51型单片机内有一高增益反相放大器,按图连接可组成自激振荡电路,振荡频率取决于石英晶体振荡频率,范围可取1.2—12MHz,C01.C02关键起频率微调和稳定作用,电容值可取5—30Pf。 图4.4 晶振电路 4.3.2 控制电路介绍 (1)按键 机械式按键再按下或释放时,因为机械弹性作用影响,通常伴随有一定时间触点机械抖动,然后其触点才稳定下来。抖动时间长短和开关机械特征相关,通常为5~10 ms,图4.5所表示。 图4.5 按键控制电路 (2)LED电路 LED 显示器含有功耗低,接口控制方便等优点,能直接和单片机接口,可方便地实现多种不一样操作。16个发光二极管L1-L16分别接在单片机P0.0-P0.7,P2.0-P2.7。输出“0”,发光二极管亮。 图4.6 LED显示电路 4.3.3 Proteus电路仿真图 图4.7 电路原理图 4.4 软件设计 4.4.1 程序步骤图 开始 读入四个开关状态 判定开关状态 灯依次向下移动、 单、双数灯亮 向中间亮 循环前面三种 无输入 图4.9 主程序步骤图 在主程序中,应该尽可能使得任务简化,不要让中止服务程序作过多复杂任务,而要尽可能把这些复杂任务放到主程序中间去完成。中止步骤图所表示。去抖功效:读入键值,存入地址,然后延迟10ms后,也就是一个很短时间以后,再次读入一个键值,两次键值相比较,假如一样则不是因为外部原因抖动产生按键,假如不一样则说明是别原因产生按键抖动。这么一个程序就能够去除因为抖动产生错误输入信号。 4.4.2 软件程序及分析 (1)关键程序分析: #include <reg51.h> //定义8051寄存器头文件 #include <intrins.h> //定义intrins.h函数 #include <math.h> //定义数学函数 #include <stdio.h> #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 sbit K1 = P1^0;//按键1 sbit K2 = P1^1;//按键2 sbit K3 = P1^2;//按键3 sbit K4 = P1^3;//按键4 #define KEY_CHK_TIM 10 //按键检测时间 u8 __g_key_value; //获取到按键值 跑马灯数组: code u16 dispcode[16]= { 0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff, 0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f }; 双流水灯数组: code u16 dispcode1[16]= { 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)大约60ms TR0 = 1; //打开定时器 ET0 = 1; //开中止 EA = 1; ES = 1; } (2)跑马灯运行方法: void disp0(void) //调用前面跑马灯数组 { u8 i; //定义i for(i = 0 ;i<16;i++) { P0 = dispcode[i]>>8; // P0口运行第二行数组 P2 = dispcode[i]; //P1口运行第一行数组 delay_ms(100); //延时100ms } } (3)鸳鸯灯运行方法: void disp1(void) { delay_ms(100); //延时100ms P0 = 0xaa; //P0口8个LED单数亮 P2 = 0xaa; //P0口8个LED灯亮 delay_ms(100); P0 = 0x55; //双数灯亮 P2 = 0x55; //双数灯亮 delay_ms(100); //延时100ms } (4)双流水灯运行方法: void disp2(void) { u8 i; for(i = 0 ;i<8;i++) { P0 = dispcode1[i]>>8; //P0口运行第二行数组,逐一点亮,向中间 P2 = dispcode1[i]; //P2口运行第一行数组,逐一点亮,向中间 delay_ms(100); } for(i = 8 ;i<16;i++) { P0 = dispcode1[i]>>8; //向两边亮 P2 = dispcode1[i]; //向两边亮 delay_ms(100); //延时100ms } } (5)按键扫描函数: void key_scan(void) { static u16 k1_pre_kep_tim = 0; //k1按键按下保持时间 static u8 k1_press_flag = 0; //k1按键按下标志 static u8 k1_short_press_flag=0; //k1短按触发标志 static u16 k2_pre_kep_tim = 0; //k2按键按下保持时间 static u8 k2_press_flag = 0; //k2按键按下标志 static u8 k2_pre_ctn_tim=0; //按键连续触发间隔延时计数 static u16 k3_pre_kep_tim = 0; //k3按键按下保持时间 static u8 k3_press_flag = 0; //k3按键按下标志 static u8 k3_pre_ctn_tim=0; //k1短按触发标志 static u16 k4_pre_kep_tim = 0; //k4按键按下保持时间 static u8 k4_press_flag = 0; //k4按键按下标志 if (K1 == 1) //当按键松开为真 { k1_pre_kep_tim = 0; //k1按键按下保持时间清零 k1_press_flag = 0; //k1按键按下标志清零 if (k1_short_press_flag ==1 ) //短按标志为1 { k1_short_press_flag = 0; //短按标志清零 __g_key_value = 1; //触发1号短按键 } } else if (k1_press_flag == 0) { k1_pre_kep_tim++; //累加定时中止次数 if (k1_pre_kep_tim > KEY_CHK_TIM) { k1_short_press_flag = 1; //短按标志置1 } if (k1_pre_kep_tim > 300) { k1_pre_kep_tim = 0; //中止计数清零 k1_short_press_flag = 0;//清除按键短按有效标志 k1_press_flag = 1;//自锁按键置位,避免一直触发 __g_key_value = 11;//触发长按 } (6)主程序: if (con_f == 1) { disp0(); //只运行跑马灯 } if (con_f == 2) { disp1(); //只运行鸳鸯灯 } if (con_f == 3) { disp2(); //只运行双流水 } if (con_f == 4) { disp0(); //循环以上三种 disp1(); disp2(); } } } 五、组装调试 5.1 硬件 硬件包含MCS-51单片机,LED发光二极管,晶振,电容,开关,电源,电阻及导线。将全部硬件配齐,按电路原理图组装好电路,在电路板上一一对应,全部硬件准备就绪后,接通电源,软硬结合。首先用烧录软件给单片机芯片加载*.hex文件,等候加载完成,运行电路。当按下K1时,跑马灯开始,16个LED灯从上到下逐一点亮,第一个灯亮,然后灭,然后每个间隔时间为100ms;当按下K2时,鸳鸯灯开始,16个LED灯先单数亮,然后双数亮,间隔时间也是100ms;当K3按下时 ,双流水灯开始,16个LED灯依次往中间移动,然后再依次往外移动,亮过灯不熄灭;当K4按下时,循环以上三种亮灯方法。最终实现功效,演示以下图5.1所表示。 图5.1 实物演示图 六、总结 经过一段时间努力,我们顺利完成了这次单片机课设。这是一个磨练意志过程。从课题选择开始,计算器设计、硬件和软件系统设计、到最终Proteus软件仿真完成,这其中经历了很多困难,不过更关键是在这个过程中我得到了很大锻炼。首先经过C51单片机等部分器件设计让我学习和掌握了单片机技术基础知识和技术关键点,也使以前学很多知识全部得到了利用;其次在用Proteus软件画电路图时,然后再转换成一维WORD中进行编辑,这个过程中让我掌握了计算机辅助设计技术。当然,这是一个需要不停尝试,不停校核,不停修改,最终完成一个合理设计过程。需要是细心和耐心。在很大程度上培养了我拼搏工作精神。使我受益匪浅,愈加明确了自己专业方向。 了解了在单片机系统中扩展简单I/O接口方法. 外部中止技术基础使用方法,掌握了中止处理程序编程方法,掌握51系列单片机基础硬件结构及工作原理,掌握51系列单片机C语言及基础程序设计方法;学习并掌握在PROTEUS仿真环境中进行调试基础方法。 顺利准期完成此次课程设计给了我很大信心,让我了解专业知识同时也对本专业发展前景充满信心,经过对单片机系统学习。对部分LED设计做了部分必需改善。同时对自己改善也做了真实仿真。达成了预期目标。不过在改善过程里也发觉了自己很多不足。这会在以后学习生活里不停提升,逐步完善自己。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 专业课程 设计 16 LED 多样 显示 控制器
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文