2013-2013单片机实训报告.docVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013-2013单片机实训报告

单片机应用技术 实训 学院: 机 电 学 院 班级: 机 电 1103 学号: 2011200193 姓名: 文君 设计题目 利用单片机和按键配合实现LED灯场景控制,循环点亮控制及点亮频率变化控制、7段数码管显示控制 设计要求 1、设计一个具有上电复位功能的单片机最小系统。 2、按照设计的单片机最小系统焊接一个实物电路。 3、设计满足程序功能的按键、8个LED灯及7段数码管外围电路。 4、利用单片机进行8个LED灯的循环点亮。 5、通过按键变化8个LED灯循环点亮的频率。 6、通过按键实现不同颜色LED灯的控制。 7、利用单片机和外围数码管电路实现数码显示0到9的数码。 8、给按键赋值,按某个按键显示对应的数码。 硬件设计 硬件电路设计原理图: 数码管显示数码6截图: 数码管显示数码1截图: 不同色彩LED灯的控制截图: 8个LED灯跑马灯截图: At89c51单片机简介: AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 At89c51单片机的主要特点: 1、与MCS-51 兼容 2、4K字节可编程闪烁存储器 3、寿命:1000写/擦循环 4、数据保留时间:10年 5、全静态工作:0Hz-24Hz 6、三级程序存储器锁定 7、128*8位内部RAM 8、32可编程I/O线 9、两个16位定时器/计数器 10、5个中断源 11、可编程串行通道 12、低功耗的闲置和掉电模式 13、片内振荡器和时钟电路 软件设计流程图 LED跑马灯程序流程图: 数码管程序流程图: 五、重点程序解释 unsigned char code dx[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 程序解释:此段代码为共阳极7段数码管0到9十个数码的显示代码 void delay20ms() { TH0=(65535-20000)/256; TL0=(65535-20000)%256; TR0=1; while(!TF0) ; TF0=0; } 程序解释:此段程序代码利用51单片机定时器0的准确定时功能,实现精确的20ms延时。 void delay_50us(uint t) { uchar j; for(;t0;t--) for(j=19;j0;j--) ; } 程序解释:此段程序代码利用for循环语句,配合51单片机的指令周期,实现50us的大概延时。 uchar keyscan() { uchar x=0; P2=0xff; if(P2!=0xff) { delay_50us(200); if(P2!=0xff) { switch(P2) { case 0x7f:x=1;break; case 0xbf:x=2;break; case 0xdf:x=3;break; case 0xef:x=4;break; } } } return x; } 程序解释:此段代码是一个带无符号字符型返回值的子函数,实现的是对按键的判断,把单片机的P2口高四位作为按键数据采集位,当对应按键连接的位为低电平,且延时10ms后(程序消抖),仍然判断为低电平,则确定有键按下,并判断出具体按下的是哪个键,同时利用return语句返回按键值到主程序中进行下一步处理。 for(i=0;i8;i++) { P1=~temp; for(b=0;bn;b++) { delay20ms(); } temp=temp1; } 程序解释:此for循环完成的是8个LED灯的循环点亮,利用变量n值改变跑马灯循环点亮的频率。 void display() { uint t; P1=0x1f;

您可能关注的文档

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档