项目名称:数码管实验报告
姓名:陈姣
班级:11电气(2)
学号:4
指导老师:赵
1,实验目的:
1,巩固Keil软件的使用方法
2,学习端口输入输出的高级应用
3,掌握7段数码管的连接方式和动态显示法
4,掌握查表程序和延时等子程序的设计
5,学习关于数码管的知识,了解关于数码管的代码,更好的学习单片机。
2,实验流程:
项目1,《用数码管显示1~8》程序:include
voiddelay(void)
{unsignedchari;
for(i=0;i<2000;i++);}/时间延长,voidmain(void)
P0=0_ff;
P2=0_ff;
while(1)
P2=0_fe;
P0=0_f9;delay();
P2=0_fd;
P0=0_a4;delay();
P2=0_fb;
P0=0_b0;delay();
P2=0_f7;
P0=0_99;delay();
P2=0_ef;
P0=0_92;delay();
P2=0_df;
P0=0_82;delay();
P2=0_bf;
P0=0_f8;delay();
P2=0_7f;
P0=0_80;delay();
P2=0_ff;
项目2,《00~99计数》程序:
include
include
defineucharunsignedchar
defineuintunsignedint
ucharcodetableP0[]={0_c0,0_f9,0_a4,0_b0,0_99,0_92,0_82,0_f8,0_80,0_90};/表示0~9
voiddelayms(uintm)/延时
ucharj;
while(m--)
{for(j=0;j<120;j++)
voidmain()
uchari,j;
P2=0_FF;
P0=0_FF;
while(1)
{for(i=0;i<100;i++)/延时,先显示个位
{for(j=0;j<100;j++)/在显示十位
{P0=tablep0[i%10];/个位
P2=0_7f;
delayms(1);P0=tablep0[i/10];/十位
P2=0_bf;
delayms(1);}}}}
项目3,《用按钮来累计计数》程序:
include
unsignedcodetab[]={0_c0,0_f9,0_a4,0_b0,0_99,0_92,0_82,0_f8,0_80,0_90};
sbitk5=P1^4;
voiddelay(void)
{unsignedintn;
for(n=0;n<20000;n++);}
voidmain(void){unsignedchari;i=0;
while(1)
if(k5==0)
delay();
if(k5==0)
i++;
if(i==10)
i=1;
while(!k5);P2=0_7F;P0=tab[i];}}
单片机最小系统:图片
实验感悟与收获:
通过这次试验,我们深刻的了解到单片机的重要性,和学习单片机的乐趣。但是,同时也会遇到一些困难……
问题一:在进行程序编写时,经常编译不通过,存在语法问题。在c语言的学习上,无法活学活用。对待for语句,while语句,不熟练,不懂如何运用!导致程序混乱,编译不通过……
解决方法:
经过老师帮助和查找图书,经过反复调试,得出结果。
问题二:运行电路时,发现发光二极管只有7个亮。而且复位电路没有用。
解决的方法:检查电路,因为复位电路没用,所以我检查复位电路中的问题,最后发现在单片机最小系统中,没有将单片机的9脚接上,然后将9脚接上调换,重新运行。单片机正常运行。
问题三:重新运行后,经过大约1天时间,单片机最小系统又不亮了。
解决的方法:检查电路,发现是从排阻上引出的电源线,断路,后来又重新焊上。因为每次都要用电池,感觉不方便。又找了一个USB接口,引出来两根线接在板子上,插在电脑上,终于符合要求。总结:
通过本次的实验,在前两个实验的基础上让我复习了知识点,也让我在次掌握了新的知识。在完成这次实验后,让我想到可以用多个按键控制多个数码管实现加减和暂停和开始。我觉得这次的课程实验让我知道,一次次的失败,并不会让我放弃去追求,相反它会引领着我去发现问题,从而解决问题,完成更深入的探索。每个人都想一次成功,殊不知一次成功会少了许多在问题中寻找解决方法,获得成功的喜悦!从这次失败失败成功中,也让我明白理论知识的重要性,并且与实际相结合,多动手,在实践中成长。所以我会很重视每一次的实验。我坚信:每次实验都会给我自身很大帮助。慢慢的积累点滴的知识,到最后就会多的。虽然,现在我还是对这个代码的编写不是很熟悉,但是经过一个学期的努力,我相信我会学的更好!