ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:185.22KB ,
资源ID:8729129      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8729129.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理数码管动态显示实验单片机原理实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机原理数码管动态显示实验单片机原理实验报告.docx

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

2、(共阳/共阴自选),将P2口作数据输出口与7段数码管数据引脚相连 ,P3引脚输出位选控制信号3. 在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1-84. 实现指定数值的显示 (可使用 缓存数值)5. 实现类似时钟的效果,如“ 13-23-25” 13时23分25秒6. 实现时钟的自动计时7. 扩展要求: 结合LED显示,实现带数码显示的交通灯实验设备(环境):1计算机2Proteus ISIS 7 Professional应用程序3Keil应用程序实验内容: 数码管动态显示技术 要求实现:1动态显示法,实现数码管分别显示数字1-8;2实现指定数值的显示 (可使用 缓存数值)

3、 (33355223);3实现类似时钟的效果,如“ 13-23-25” 13时23分25秒;4实现时钟的自动计时;扩展要求: 结合LED显示,实现带数码显示的交通灯;实验步骤、实验结果及分析:1 实验步骤:1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。3、构建仿真电路:连接图 显示1-8显示33355223显示时间13.23.25时钟自动计时连接图红绿灯效果图1红绿灯效果图24、创建一个Keil应用程

4、序:新建一个工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。5、把用户程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件文件路径)2 实验程序 程序源代码:1动态显示法,实现数码管分别显示数字1-8;#include#define uchar unsigned char#define uint unsigned intuchar code Ledcode=0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /定义一个数组里面放入1-8void

5、delay(uint x) while(x-);void main() uchar i; while(1) for(i=0;i8;i+) P3=1i; /P3口表示从第一个位开始显示数值 P2=Ledcodei; /P2口用来显示所需要显示的数值 delay(500); 2. 实现指定数值的显示 (可使用 缓存数值) (33355223);#includeunsigned char code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsigned char DispBuf8=3,3,3,5,5,2,2,3;

6、 /指定要显示的数的位置void delay(unsigned int x) while(x-);void main() unsigned int i; for(i=0;i8;i+) P3=1i; P2=LedCodeDispBufi; /显示指定数的位置 delay(500); 3. 实现类似时钟的效果,如“ 13-23-25” 13时23分25秒;#includeunsigned char code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsigned char Hour=13,Min=23,Sec=

7、25;unsigned char DispBuf8;void delay(unsigned int x) while(x-);void PutTime() DispBuf7=Sec%10; /取对应秒数的个位放在最右边显示 DispBuf6=Sec/10; /取对应秒数的十位放在右起第二位显示 DispBuf5=10; /此处表示秒跟分之间用横杆隔开 DispBuf4=Min%10; DispBuf3=Min/10; DispBuf2=10; DispBuf1=Hour%10; DispBuf0=Hour/10;void main() long n=0; while(1) unsigned c

8、har i; PutTime(); for(i=0;i8;i+) P3=1i; P2=LedCodeDispBufi; delay(500); 4. 实现时钟的自动计时;#includeunsigned char code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsigned char Hour=13,Min=23,Sec=25;unsigned char DispBuf8;void delay(unsigned int x) while(x-);void PutTime() DispBuf7=Sec%1

9、0; DispBuf6=Sec/10; DispBuf5=10; DispBuf4=Min%10; DispBuf3=Min/10; DispBuf2=10; DispBuf1=Hour%10; DispBuf0=Hour/10;void main() long n=0; while(1) unsigned char i,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=

10、0; if(Hour=24) /当小时数满24小时时,则小时数清零,完成计时 Hour=0; 5. 扩展要求: 结合LED显示,实现带数码显示的交通灯;#include reg52.h#define uint unsigned int#define uchar unsigned char#define Disp_Null 10uchar code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;uchar DispBuf8;sbit r1=P20;sbit y1=P21;sbit g1=P22;sbit r2=P23

11、;sbit y2=P24;sbit g2=P25;uchar sec1;sec2;comsec;void delay(uint x) while(x-);void PntTime( ) DispBuf3=sec2 % 10; DispBuf2=sec2 / 10; DispBuf1=sec1 % 10; DispBuf0=sec1 / 10;void display() uchar i; for (i = 0;i 8;i +) P3=0; P1=LedCode DispBufi ; P3=1=60) ms=0; comsec=(comsec+1) % 60; /定义一个计数变量,使其一直保持在

12、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时,对应的数码管段点亮。程序中预设了数字0-9的段码。由于是让八个数码管显示不同的数值,所以要用扫描的方式来实现。因此可定义扫描函数,接到单片机的P3口。在实验中,预设的数字段码表存放在数组LedCode中,由于段码表是固定的,

13、因此存储类型可设为code.在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序,生成Hex文件,把Hex文件导到Proteus软件中进行仿真。心得体会:实验数码管显示程序的编程方法1)先准备好要显示的数据,放入相应的显示存储单元中。2)根据要使用的数码管的具体位置来确定扫描初值和扫描方向。3)根据使用数码管的个数来确定扫描的位数。4)查表将要显示的数据转换为能使数码管正确显示相对应的段码。5)分时送段码和位码,数码管开始循环显示。指导教师评语:1、完成所有规定的实验内容,实验步骤正确,结果正确;2、完成绝大部分规定的实验内容,实验步骤正确,结果正确;3、完成大部分规定的实验内容,实验步骤正确,结果正确; 评定等级:A(优秀) B(良好) C(中等) D(及格) E(不及格)成绩评定 教师签字 年 月 日备注:注:1、报告内的项目或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日内

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1