- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6位数码管显示电路设计与调试实验报告
6位数码管显示电路设计与调试实验报告
一、实验目的:
1.能够熟练使用Proteus软件完成电路设计;
2.能够熟练使用Keil c51软件完成程序设计与调试;
3.掌握Proteus与Keil c51软件联合调试的方法。
二、实验要求:
设计一个6位数码管显示电路,首先它在1,3,5数码管上顺序显示区号0792,然后再2,4,6数码管上顺序显示学院办公点电话8253139。接着所有数码管同时显示8闪烁3次,全灭。(所有延时都是500ms)
三、实验步骤:
1、电路设计与电气规则检查(包括电路图)
2、程序设计及流程(包括完成程序)、编译
#include reg51.h
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0x3f,0x07,0x6f,0x5b,0x7f,0x5b,0x6d,0x4f,0x06,0x4f,0x6f};
void Delay(uint x)
{
uint i,j;
for(j=x;j0;j--)
for(i=110;i0;i--);
}
void main()
{
uint i,j;
P2=0x2a;
for(i=0;i4;i++)
{
P1=DSY_CODE[i];
Delay(500);
}
P1=0x00;
Delay(500);
P2=0x15;
for(i=4;i11;i++)
{
P1=DSY_CODE[i];
Delay(500);
}
P2=0x00;
for(j=0;j3;j++)
{
P1=0x7f;
Delay(500);
P1=0x00;
Delay(500);
}
P1=0x00;
while(1);
}
3、 Proteus与Keil c51 联合调试
四、实验结果:结果分析(出现的问题及其原因)
这次实验电路图基本和以前的一样,单片机AT89C51加时钟中断电路,只不过要加一大的六个数码管,在P1、P2端口结总线。运用Proteus软件把电路画好之后,再进行电气检测。之后,再用Keil软件写程序,首先在Keil软件里面新建一个文件夹新建一个项目,然后再新建一个文档,另存文档加后缀.c。再进行程序的编写,首先头文件,宏定义都要有,给P1端口的数码建一个数组,为了能够奇数数码管显示数字要确定P2的值,接着再在P1端口建一个循环显示所需数字,再接着确定P2的值让所有数码管显示8,3次,也用循环,最后用无限循环while(1);让所有数码管灭。然后进行文件的关联。我第一次编写程序在最后显示8的时候忘记加P1=0X00,所以关联时8只闪了一次,后来加了在生成hex文件之后再编译,最后打开Proteus软件双击单片机进行调试,数码管便能够1,3,5数码管上顺序显示0792,然后再2,4,6数码管上顺序显示8253139,接着所有数码管同时显示8闪烁3次,全灭。达到了实验要求。
五、实验总结:
通过之前的那些实验课,我们可以很熟练的画出大致的电路,根据要求灵活的运用Keil软件编写程序,程序的大致框架也记住了,比如头文件,宏定义,还有延时程序,这些都是经常用的,有时也会要用到for循环。所以虽然编写的时候会出现很多的问题错误,有时会因为花扩号和分号那些小问题出现错误,有时也会因为大小写出现一些编译错误。刚刚开始做实验的时候我记得那次居然不知道怎么关联文件,连hex文件的生成也不会,一节课只够编写程序,现在明显速度加快,Proteus、Keil软件的应用也能够掌握的更熟练。
最后,我总结出不管我们要编写的程序有多复杂,只要我们认真思考,仔细揣摩,多次编写,调试,最后终究会编写出老师要求的程序的。只要态度认真,不厌其烦的思考编写程序,我们编写程序的水平肯定会大大提高的!我们对软件的掌握程度也会大大的提高!
文档评论(0)