基于51单片机闹钟设计2Word文件下载.docx

上传人:b****2 文档编号:14232116 上传时间:2022-10-20 格式:DOCX 页数:41 大小:270.03KB
下载 相关 举报
基于51单片机闹钟设计2Word文件下载.docx_第1页
第1页 / 共41页
基于51单片机闹钟设计2Word文件下载.docx_第2页
第2页 / 共41页
基于51单片机闹钟设计2Word文件下载.docx_第3页
第3页 / 共41页
基于51单片机闹钟设计2Word文件下载.docx_第4页
第4页 / 共41页
基于51单片机闹钟设计2Word文件下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

基于51单片机闹钟设计2Word文件下载.docx

《基于51单片机闹钟设计2Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机闹钟设计2Word文件下载.docx(41页珍藏版)》请在冰豆网上搜索。

基于51单片机闹钟设计2Word文件下载.docx

原清单:

(部分元件由于分批购买或者网上购买,未能列入清单)

焊接心得:

焊接时间:

2011年4月9日(星期六上午)

信息楼405

焊接元件电路图:

过程及心得:

有了大二焊接收音机的一些焊接功底后,对于焊接还是有些经验的,先将小的元件焊接好,比如说电容电感,避免大的高的元件焊好后留下的可操作空间太少,给小的元件焊接带来不便。

而不耐高温的元件,如三极管等,可以留在最后焊接,以免引脚触到烙铁损坏元件。

当然有些元件的引脚虽然是对称分布,但是是是有区别的,如电解电容,二极管,三极管等。

特别应该注意的是排阻,普通电阻部没有负极,但是排阻比较特别,两端是不同的。

由于排阻焊反了,导致与P0口相连的矩阵键盘无论如何都没法正常使用,后来发现后,拔了好久才拔下来,手还在此过程中,还跟烙铁来了个亲密接触,手指被烫的留下了一道白印记。

拔下来时候,板子已经伤痕累累了,幸好买了新的排阻焊上去之后,键盘能够正常工作了,真可谓教训沉痛。

焊接过程中,由于烙铁使用的还是比较少,开始时手拿着总觉得很别扭,点锡丝的时候甚至有点抖,不过焊完一两个元件后就适应了很多,后来越来越上手,速度也快了很多。

我们特地几个人约好一起焊接,并对比,有疑问先讨论,再动手焊接。

但是还是有些问题没得到解决,由于没接触过1602,对于排针和排插的位置还是焊反了,但是问题不大,后来的实习过程中证明液晶一直工作正常,不过以后还是得按常规出牌,以免遇到大麻烦。

其间也遇到了复位开关的摆放问题,我一直觉得是只要能插进去就正确的,但有人觉得有正反问题,后来证明我的想法是正确。

焊完后,分模块对整个硬件电路进行调试检测,看有没有漏焊,虚焊的地方。

之后,插上芯片试电,一切正常后,用安装好的编译和STC串口下载软件给单片机下载程序,红色的二极管一闪一闪的,等二极管不闪后,第一个数码管被点亮了,当时很兴奋。

至此焊接告一段落。

在此过程中,我总结出

1、焊接前需熟悉电路,了解各元件,因为真正的焊接过程实际上是很短的,而准备工作没做好,只会给后面的焊接带来意想不到的麻烦,甚至导致板子被毁。

2、焊接过程中,要注意力集中,逐渐积累经验,怎样操作适应,怎样避免虚焊和短路,以提高效率。

总的来说是一个熟练掌握焊枪和熟悉锡丝特性的过程。

3、焊接后先不要急于上电,也不要想板子一定焊好了,或者不正常之后惶恐是不是焊废了。

毕竟这也是一个小的系统,我们第一次接触,第一次上电就能一切运行成功不现实,出现情况不要急,可能只是一些小问题,如没插上芯片或跳线帽之类的。

4、总之作为学电子电气的,我们毕竟还会接触硬件的焊接和调试,这只是一个开端,相信有了这次的经验后,以后的会对这一过程了解的更深入。

 

基于数码管及矩阵键盘实现的移位等若干功能

一、材料及硬件分析

数码管的接法:

由于数码管的借口很多,如果一个个接在单片机IO口上,将会很占用硬件资源,同时编程时候要兼顾段选和位选,会给编程带来很大不便。

使用74LS138和CD4511译码器后,两个问题迎刃而解,如下为数码管的接法原理图:

由图可知,138控制位选占用3个IO口,CD4511控制段选占用4个IO口,加上控制小数点的引脚总共占用8个IO口。

给P1口赋值的时候,高3位控制的是位选,即第几个数码管亮,低4位控制的为段选,直接显示0-9,无需代码。

而第4位则控制的是小数点的亮暗。

动态显示的时候,只需要在某一位IO口后面的小数点点亮即可。

矩阵键盘线反法:

矩阵键盘内部是4x4的8根线组成的16键的键盘,每个限于线交叉点,表示为一个键。

总共需要8个IO口,当两个线没有交叉的时候,接通的两条线都变味低电平。

首先可将高八位置为高电平第八位置为低电平,记下变为低电平的一条线路。

然后将高低电平交换,再记下一条线路,即可确定按下的键的位置。

具体程序如下:

voidpress()

{

unsignedcharkeybuf1,keybuf2;

P0=0xf0;

keybuf1=P0;

if(P0!

=0xf0)

{

=0xf0)//按键

{P0=0x0f;

keybuf2=P0;

KeyV=keybuf1+keybuf2;

}

经过多次试验后得出的各键的代码为:

0xee0xde0xbe0x7e

0xed0xdd0xbd0x7d

0xeb0xdb0xbb0x7b

0xe70xd70xb70x77,当然将键盘反接之后键就值完全变了。

软件消抖:

当有键按下的时候,瞬间单片机的电平会不稳定,即出现电平抖动,为了消除抖动,可采用软件法:

unsignedcharup()

unsignedcharP0Buf;

//松键

P0Buf=P0;

return(P0Buf-0xf0);

在有键按下之后执行while(up());

即停在该处,只给Keyv赋值一次。

二、程序功能

1、密码锁:

其他所有功能都在此程序运行成功的基础才能执行。

上电之后,输入密码,并按c键验证正确之后会显示全8,否则显示全0。

验证成功后按下A可以自行下面程序

2、自动拉幕式移屏:

1键左移,2键右移,其他键停止,全屏显示为12345678。

3、定时器时钟:

BCD分别可调时分秒,A键实现下一功能

4、秒表:

1、2、3分别可以实现暂停,继续,清零功能,可精确到百分之一秒

5、手动式移位并删除:

输入数字的将第一个数字删除,并将所有数字前移一位。

C键可实现删除,将最后一位数字删除,并在第一位补零。

6、加法器:

输入两个数字可实现相加,并可清屏和连加,但不能实现小数相加。

二、源程序

#include"

reg52.h"

unsignedcharPin[8]={8,5,8,5,8,5,8,5};

unsignedcharLock[8]={11,11,11,11,11,11,11,11};

unsignedcharL1[8]={0,0,0,0,0,0,0,0};

unsignedcharL[8]={0,0,0,0,0,0,0,0};

unsignedcharLed1[8]={0,0,0,0,0,0,0,0};

unsignedcharLed[16]={11,11,11,11,11,11,11,11,0,1,2,3,4,5,6,7};

unsignedcharKeyV=0;

unsignedcharTotal=0;

unsignedchardisp[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};

unsignedcharsecond1=0;

unsignedcharsecond2=0;

unsignedcharminute1=0;

unsignedcharminute2=0;

unsignedcharhour1=0;

unsignedcharday=0;

unsignedcharmonth=0;

unsignedcharCon=60;

unsignedcharcodeKey[]={0xd7,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0x7e};

unsignedcharT=0;

unsignedcharV=0;

voiddelay(intn)

while(n--);

voiddly()

unsignedintq;

q=2000;

while(q--);

/*change()

if(Con==60)Con=1;

if(Con==1)Con=60;

}*/

while(up());

}

display()

unsignedchari,P1Buf;

for(i=0;

i<

=7;

i++)

P1Buf=i*2;

P1Buf=P1Buf<

<

4;

P1Buf=P1Buf+Led[i];

//显示

P1=P1Buf;

//delay();

voidlscan()

unsignedchari;

=10;

if(KeyV==Key[i])

KeyV=i;

//换数值

break;

for(i=7;

i>

0;

i--)

Lock[i]=Lock[i-1];

Lock[0]=KeyV;

ldisplay()

P1Buf=P1Buf+Lock[i];

display1()

P1Buf=P1Buf+L[i];

voidscan1()

P0=0x0f;

keybuf2=P0;

KeyV=keybuf1+keybuf2;

if(KeyV==0xee){minute1++;

if(minute1==10)minute1=0;

}//调时间

if(KeyV==0xde){minute2++;

if(minute2==6)minute2=0;

if(KeyV==0xbe){hour1++;

if(hour1==13)hour1=1;

delay(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

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

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