单片机课程设计—8个按键控制8个LED自动设定控制流水灯.docx
-
资源ID:96668969
资源大小:1.10MB
全文页数:19页
- 资源格式: DOCX
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
单片机课程设计—8个按键控制8个LED自动设定控制流水灯.docx
西南石油年夜学之迟辟智美创作实习总结陈述实习类型生产实习实习单元西南石油年夜学实习基地实习起止时间 2023 年 7 月 7 日至 2023 年 7 月指导教师刘东明、孙鉴所在院系 电子科学学院班 级电子科学与技术 15-2 学生姓名学 号 15090124022023 年 7 月 16 日16 日目 录第 1 章 按键掌握流水灯设计 116.1 实习目的错误!未定义书签。16.2 实习要求错误!未定义书签。第 2 章 电路工作原理 22.5 本章小结 6第 3 章 C 法式设计 73.1 法式设计流程图 73.3 本章小结 9总结及体会 10参考文献 11附录 12第1章 按键掌握流水灯设计1.1 实习目的本次实习以STC89C52 单片机为掌握核心.通过它实现对八盏LED 灯的亮灭进展设定,并在设定完成之后能够依照之前的设定实现流水灯效果.外部电路为按键掌握流水灯.P0 口掌握八盏灯,P1 口掌握矩阵键盘,P2 口掌握自力按键,法式利用单片机内部计时器中断实现流水效果.要求流水灯能够自行设定、暂停、复位, 工作稳定,牢靠性高.生产实习的主要目的是培育理论联系实际的力量,提高实际入手把持力量.本专业的生产实习旨在广泛了解实际单片机电子产物工作的全过程,生疏电子产物的主要技术治理模式,并在实习的把持过程中学习把握电子产物的焊接装置调试的实际把持技能.稳固和加深理解所学的理论,开阔眼界,提高潜力,为培育高素养年夜学本科人才打下需要的根底.透过学习,是理论与实际相结合,能够使学生加深对所学学问的理解,并为后续专业课的学习带给需要的感性学问,同时直接了解本业的生产过程和生产资料,为将来走上工作岗位带给需要的实际生产学问.1.2 实习要求1. 深入学习单片机开发软件Keil 的使用,生疏单片机电路设计,依据实际应用电路对法式进展调试.2. 生疏单片机硬件开发平台的应用,把握单片机编程器、仿真器的使用,能检查和分析软硬件故障.3. 体会单片机内部资源的功能使用,以单片机开发板现有资源进展应用性设计.把握单片机常常使用外围器件的使用.4. 对去年生产实习焊接的 51 开发板的法式有更深入的了解.第2章 电路工作原理2.1 STC89C52 单片机工作原理单片机Microcontrollers是一种集成电路芯片,是承受超年夜规模集成电路技术把具有数据处置力量的中心处置器CPU、随机存储器RAM、只读存储器ROM、多种 I/O 口和中断系统、按时器/计数器等功能可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路集成到一块硅片上构成的一个小而完善的微型计算机系统.例如STC89C52 单片机是通过 32 个输入输出口的凹凸电平变动来实现对外部电路的掌握,痛过相应的法式实现对 32 个输入输出口的掌握,这就是单片机工作的最基来源根基理.如图 2-1 所示为 STC89C52 单片机工作的最小系统电路图.图 2-1 STC89C52 最小工作系统整个电路使用 5V 直流电源供电,其中复位电路能够使单片机复位;晶振电路相当于单片机的心脏,为单片机供给 12MHz 的高频脉冲使单片机正常工作; MAX232 是将单片机输出的TTL 电平转换成PC 机能接收的 232 电平或将PC 机输出的 232 电平转换成单片机能接收的 TTL 电平,实现单片机与 PC 机之间的通信, 以便于下载法式.2.2 LED 工作原理LEDlight-emitting diode,即发光二极管,俗称 LED 小灯,51 开发板使用的是一般贴片发光二极管.这种二极管通常的正向导通电压是 1.82.2V 之间,工作电流一般在 120mA 之间.其中当电流在 15mA 之间变动时,随着通过 LED 的电流越来越年夜,肉眼会感觉到这个灯越来越亮,而当电流从 520mA 变动时,看到的发光二极管的亮度变动不明显了.当电流超越 20mA 时,LED 就有烧坏的危急. 所以在 51 开发板的使用中需要依据相应的电流参数设计一个与 LED 串连的限流电阻.如图 2-2 所示为单片机 I/O 口掌握 LED 的电路原理图.图 2-2 单片机掌握 LED 电路图图中 PR2 为排阻,在电路中起到限流作用,防止 LED 被烧毁.由于单片机是可以编程掌握的,即P00P07 的凹凸电平也是能够掌握的,所以对应的8 个 LED 的亮灭状态也是能够掌握的,这就到达了单片机掌握 LED 的目的.2.3 按键工作原理2.3.1 自力按键工作原理自力式按键比力简洁,它们各自与自力的输入线相连接,如图 2-3 所示.图 2-3 自力式按键原理图4 条输人线接到单片机的 I/O 口上,当按健 K1 按下时,+5V 通过电阻然后再通过按键 K1 最终进人 GND 形成一条通路,这条线路的全部电压都加到这个电阻上,P20 这个引脚就是个低电平.当松开按健后,线路断开,就不会有电值通过, P20 和+5V 就应当是等电位,是个高电平.我们就可以通过 P20 这个 10 口的凹凸电平来推断是否有按键按下.2.3.2 矩阵按键工作原理在某一个系统设计中,假设需要使用很多按键时,做成自力按键会占用年夜量 I/O 口,因此引用了矩阵键盘的设计.如图 2-4 所示为 51 开发板上的矩阵按键电路原理图,使用 8 个 I/O 口来实现 16 个按键.图 2-4 矩阵按键原理图在法式设计中分别用四个 I/O 口扫描 4 行,另外 4 个扫描 4 列,确定了按键在哪行哪列也就确定了按键的具体位置.2.4 整体电路图如图 2-5 所示为键盘掌握 LED 流水灯整体电路图.图 2-5 总电路原理图2.5 本章小结本章主要介绍了单片机最小系统、LED 工作原理、按键工作原理.并从硬件电路的设计动身,简洁分析单片机掌握 LED 的工作过程.理论分析根本完成,接下来就是具体的法式设计与调试,通过具体的法式来实现相应的功能,这也是单片机开发中最具技术含量的环节之一.第3章 C 法式设计3.1 法式设计流程图如图 3-1 所示为主法式流程图.开头开计时器中断K1 是否按下否是扫描矩阵键盘选择需要点亮的 LED是K3 是否按下K2 是否按下否否是计时器中断法式选择保管选择的数据数据实现 LED 流水灯图 3-1 法式设计框图主法式由 3 个自力按键掌握,K1,K2 和 K3.开头从主函数执行法式语句,不竭循环扫描按键,当K1 按下时,进入选择状态,法式会不竭地扫描矩阵键盘,通过矩阵键盘选择需要点亮的 LED;选择完毕后按下 K2,法式会将选定后的数据送入中断法式,中断法式依据接收的数据选泽对应的 LED 实现流水灯效果;当按下K3 后法式又会进入矩阵键盘扫描重选择 LED.3.2 试验结果如图 3-2 所示,当按下 K1 后进入选择定状态.图 3-2 选择 LED如图 3-2,掌握矩阵键盘分别选择了第 1,6,8 盏灯.再按下 K2 键,让选择的第 1,6,8 盏灯实现流水灯效果.如图 3-3 所示.图 3-3 流水灯如图 3-3,按下K2 之后,LED 由之前第 1,6,8 盏灯亮酿成第 1,2,7 盏灯亮,实现了流水灯右移的效果.当按下 K3 键,试验结果如图 3-4 所示.图 3-4 回到初始状态由图 3-4 可知,当按下 K3 键之后,法式又回到了设定 LED 的状态.3.3 本章小结由试验结果可以看出,本次单片机课程设计已到达预期要求,电路工作稳定, 满足设计要求.在整个设计过程中,法式设计与调试最为简单,呈现过按键灯不亮, 没有呈现滚动流水等现象等一系列法式问题.但最终在不竭地检查、调试之后,问题也渐渐获得解决.最终实现按键掌握流水灯的效果.总结及体会本次设计通过对单片机进展编程掌握,进而掌握外部电路,成功地设计了八个按键掌握八盏灯亮灭实现流水灯的效果 .深入了解到单片机开发软件 Keil 的使用,生疏单片机电路设计,依据实际应用电路对法式进展调试.生疏单片机硬件开发平台的应用,把握了单片机编程器、仿真器的使用,能检查和分析软硬件故障. 体会到单片机内部资源的功能使用,以单片机开发板现有资源进展应用性设计.通过这次实习使我进一步弄懂所学到的课本学问,稳固和深化对单片机的构造、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、按时/掌握、法式设计、应用开发、等根本理论学问的理解,提高单片机应用于技术的实践把持技能,把握单片机应用系统设计、研制的方法,培育利用单片机进展科技革、开发和立异的基天性力,为结业后从事与单片机相关的工作打下肯定的根底.参考文献1 童诗白,华成英.模拟电子技术根底(第四版)M.北京:高等教育出书社,2023.2 阎石.数字电子技术根底(第五版)M.北京:高等教育出书社,2023.3 韩建,全星慧,四周.电子技术课程设计指导M.哈尔滨:哈尔滨工程年夜学出书社,2023.4 黎小桃.数字电子电路分析与应用M.北京: 北京理工年夜学出书社,2023.5 高吉利. 电子技术根底试验与课程设计M.北京:电子工业出书社,2023.6 陈明义.电子技术课程设计有用教程(第 3 版) M. 长沙:中南年夜学出书社,2023.7 程春雨. 模拟电子技术试验与课程设计M.北京:电子工业出书社,2023.8 宋雪松,李东明,崔长胜. 手把手教你学 51 单片机C 语言版M. 北京: 清华年夜学出书社,2023.附录:#include <reg52.h> #include <intrins.h> #define KEY P1 sbit k1=P20;sbit k2=P21; sbit k3=P22; sbit k4=P23;unsigned char LED=0x00,LED1=0x00; unsigned char x=0;unsigned char KeyValue; unsignedA1=0x00,A2=0x00,A3=0x00,A4=0x00,A5=0x00,A6=0x00,A7=0x00,A8=0x00;void Delay10ms(unsigned int c);charvoid KeyDown; void kongzhil;/矩阵键盘检测void kongzhi2; void main(void) TMOD=0x01; /按时器工作状态为 1TH0=(65536-50000)/256; TL0=(65536-50000)%6;EA=1;/开总中断ET0=1; /开按时器中断TR0=1; /开启按时器while(1)int n=0; if(k1=0)Delay10ms(1); if(k1=0)n=1;if(k3=0)Delay10ms(1); if(k3=0)n=3;if(k4=0)Delay10ms(1); if(k4=0)n=4;switch(n)case 1:KeyDown;break; case 3:kongzhil;break; case 4:kongzhi2;break; default:break;void KeyDown(void) int k=1;while(k)char a=0;KEY=0x0f;if(KEY!=0x0f)Delay10ms(1);/延时消抖if(KEY!=0x0f)KEY=0X0F;switch(KEY)/扫描行case(0X07): KeyValue=0;break; case(0X0b): KeyValue=4;break; case(0X0d): KeyValue=8;break; case(0X0e): KeyValue=12;break;KEY=0XF0;switch(KEY)/扫描列case(0X70): KeyValue=KeyValue+3;break; case(0Xb0): KeyValue=KeyValue+2;break; case(0Xd0): KeyValue=KeyValue+1;break; case(0Xe0): KeyValue=KeyValue;break;while(a<50) && (KEY!=0xf0)/松手检测Delay10ms(1); a+;switch(KeyValue)/选择需要亮的灯case(0):A1=A1;break; case(1):A2=A2;break; case(2):A3=A3;break; case(3):A4=A4;break; case(4):A5=A5;break; case(5):A6=A6;break; case(6):A7=A7;break; case(7):A8=A8;break; default:break;if (A1=0xff)/保管数据(LED1=LED1|0x80);else if(A1=0x00) (LED1=LED1&0x7f);if (A2=0xff)(LED1=LED1|0x40);else if(A2=0x00)(LED1=LED1&0xbf);if (A3=0xff)(LED1=LED1|0x20);else if(A3=0x00)(LED1=LED1&0xdf);if (A4=0xff)(LED1=LED1|0x10);else if(A4=0x00)(LED1=LED1&0xef);if (A5=0xff)(LED1=LED1|0x08);else if(A5=0x00)(LED1=LED1&0xf7);if (A6=0xff)(LED1=LED1|0x04);else if(A6=0x00)(LED1=LED1&0xfb);if (A7=0xff)(LED1=LED1|0x02);else if(A7=0x00)(LED1=LED1&0xfd);if (A8=0xff) (LED1=LED1|0x01);else if(A8=0x00)(LED1=LED1&0xfe); LED=LED1;if(k2=0)Delay10ms(1); if(k2=0)k=0;LED=LED1;if(k4=0)Delay10ms(1); if(k4=0)k=0;kongzhi2;void kongzhil(void)int m=1;LED1=LED,LED=0x00;while(m)if(k3=0)Delay10ms(1); if(k3=0) m=0,LED=LED1;void kongzhi2(void)LED1=0x00;LED=0x00;A1=0;A2=0;A3=0;A4=0;A5=0;A6=0;A7=0;A8=0;void timer0 interrupt 1TH0=(65536-50000)/256; TL0=(65536-50000)%6; x+;if(x=6)/6*50MS=300MS x=0;P0=LED;LED = _crol_(LED,1);/if(+i=8)i=0;void Delay10ms(unsigned int c)unsigned char a, b; for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-);指导教师评语及成果评定:成果:指导教师签字:年月日