单片机原理数码管动态显示试验-单片机原理-试验报告_第1页
单片机原理数码管动态显示试验-单片机原理-试验报告_第2页
单片机原理数码管动态显示试验-单片机原理-试验报告_第3页
单片机原理数码管动态显示试验-单片机原理-试验报告_第4页
单片机原理数码管动态显示试验-单片机原理-试验报告_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、宁德师范学院计算机系实验报告(20142015学年第2学期)课程名称单片机原理实验名称数码管动态显示实验专业计算机科学与技术(非师范)年级2012级学号B2012102147姓名王秋指导教师杨烈君实验日期2015.4.17实验目的:1 .巩固Proteus软件和Keil软件的使用方法2 .学习端口输入输出的高级应用3 .掌握7段数码管的连接方式和动态显示法4 .掌握查表程序和延时等子程序的设计实验要求:1 .在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2 .在电路中增加八位7段数码管(共阳/共阴自选),将P2作数据输出口与7段数码管数据引脚相连,P3引脚输出位选控制

2、信号3 .在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1-84 .实现指定数值的显示(可使用缓存数值)5 .实现类似时钟的效果,如“13-23-25”13时23分25秒6 .实现时钟的自动计时7 .扩展要求:结合LED显示,实现带数码显示的交通灯实验设备(环境):1. .计算机2. ProteusISIS7Professional应用程序3. Keil应用程序实验内容:数码管动态显示技术要求实现:1 .动态显示法,实现数码管分别显示数字1-8;2 .实现指定数值的显示(可使用缓存数值)(33355223);3 .实现类似时钟的效果,如“13-23-25”13时23分25秒;

3、4 .实现时钟的自动计时;扩展要求:结合LED显示,实现带数码显示的交通灯;实验步骤、实验结果及分析:1实验步骤:1、使用ProteusISIS7Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51CAPCAP-ELECCRYSTALRESPACK-83、构建仿真电路:连接图显示1-8显示33355223显示时间13.23.25时钟自动计时连接图红绿灯效果图1红绿灯效果图24、创建一个Keil应用程序:新建一个工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创

4、建的源程序项目文件;把源程序文件添加到项目中。5、把用户程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件一文件路径)2实验程序程序源代码:1.动态显示法,实现数码管分别显示数字1-8;#include#defineucharunsignedchar#defineuintunsignedintucharcodeLedcode=0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/定义一个数组里面放入1-8voiddelay(uintx)while(x-);)voidmain()uchari;while(1)for(i=0;i8;i+)P3=

5、1i;/P3口表示从第一个位开始显示数值P2=Ledcodei;/P2口用来显示所需要显示的数值delay(500);)2 .实现指定数值的显示(可使用缓存数值)(33355223);#includeunsignedcharcodeLedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40);unsignedcharDispBuf8=3,3,3,5,5,2,2,3;/指定要显示的数的位置voiddelay(unsignedintx)while(x-);)voidmain()(unsignedinti;for(i=0;i8;i+)

6、P3=1i;P2=LedCodeDispBufi;/显示指定数的位置delay(500);)3 .实现类似时钟的效果,如“13-23-25”13时23分25秒;#includeunsignedcharcodeLedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsignedcharHour=13,Min=23,Sec=25;unsignedcharDispBuf8;voiddelay(unsignedintx)while(x-);voidPutTime()DispBuf7=Sec%10;/取对应秒数的个位放在最右边显示

7、DispBuf6=Sec/10;/取对应秒数的十位放在右起第二位显示DispBuf5=10;/此处表示秒跟分之间用横杆隔开DispBuf4=Min%10;DispBuf3=Min/10;DispBuf2=10;DispBuf1=Hour%10;DispBuf0=Hour/10;)voidmain()(longn=0;while(1)(unsignedchari;PutTime();for(i=0;i8;i+)(P3=1i;P2=LedCodeDispBufi;delay(500);)4 .实现时钟的自动计时;#includeunsignedcharcodeLedCode口=0x3f,0x06,

8、0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsignedcharHour=13,Min=23,Sec=25;unsignedcharDispBuf8;voiddelay(unsignedintx)while(x-);)voidPutTime()(DispBuf7=Sec%10;DispBuf6=Sec/10;DispBuf5=10;DispBuf4=Min%10;DispBuf3=Min/10;DispBuf2=10;DispBuf1=Hour%10;DispBuf0=Hour/10;)voidmain()(longn=0;while(1)(u

9、nsignedchari,ms;/定义一个ms用于控制秒数加一的延时PutTime();for(i=0;i8;i+)(P3=1=20)(Sec+;ms=0;)if(Sec=60)/表示进位,当秒满六十则向分钟进一,同时秒数清零(Min+;Sec=0;)if(Min=60)(Hour+;Min=0;)if(Hour=24)/当小时数满24小时时,则小时数清零,完成计时(Hour=0;)5 .扩展要求:结合LED显示,实现带数码显示的交通灯;#includereg52.h# defineuintunsignedint# defineucharunsignedchar# defineDisp_Nul

10、l10ucharcodeLedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;ucharDispBuf8;sbitr1=P2A0;sbity1=P2A1;sbitg1=P2A2;sbitr2=P2A3;sbity2=P2A4;sbitg2=P2A5;ucharsec1;sec2;comsec;voiddelay(uintx)(while(x-);)voidPntTime()(DispBuf3=sec2%10;DispBuf2=sec2/10;DispBuf1=sec1%10;DispBuf0=sec1/10;)voiddi

11、splay()(uchari;for(i=0;i8;i+)(P3=0;P1=LedCodeDispBufi;P3=1=60)ms=0;comsec=(comsec+1)%60;/定义一个计数变量,使其一直保持在60内)if(comsec=20&comsec=30&comsec=50)sec1=60-comsec;sec2=60-comsec;r1=0;y1=1;g1=0;r2=1;y2=0;g2=0;)过程总结:本实验是将单片机的P2口做为输出口,将四个数码管的七段引脚分别接到P2.0至P2.7.由于电路中采用共阳极的数码管,所以当P2端口相应的引脚为0时,对应的数码管段点亮。程序中预设了数字

12、0-9的段码。由于是让八个数码管显示不同的数值,所以要用扫描的方式来实现。因此可定义扫描函数,接到单片机的P3口。在实验中,预设的数字段码表存放在数组LedCode中,由于段码表是固定的,因此存储类型可设为code.在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序,生成Hex文件,把Hex文件导到Proteus软件中进行仿真。心得体会:实验数码管显示程序的编程方法1)先准备好要显示的数据,放入相应的显示存储单元中。2)根据要使用的数码管的具体位置来确定扫描初值和扫描方向。3)根据使用数码管的个数来确定扫描的位数。4)查表将要显示的数据转换为能使数码管正确显示相对应的段码。5)分时送段码和位码,数码管开始循环

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论