来源: 作者:元增民
一、电路图 按照下图购买元器件及面包板,在面包实验板上参考右图搭成电路。将已经固化好最简程序的AT89C2051单片机芯片插到实验板中缝左右。 LC3911BH型LED数码管高约13mm,宽10mm,引线排列在两侧,正好能骑插在面包实验板中缝左右。然后用细硬线按照图2将数码管与单片机Pl口连接好,并接入电阻、电容、晶振、按钮开关等。 下图中LED数码管公共阳极接了1只限流电阻。 显示0—9共10个阿拉伯数字,显示1时段数最少为2个。设每段电流最大为5mA,则2段总电流I=2×5mA =10 mA,公共限流电阻R=(UCC-ULED)/I=(5V-2V)/10 mA =300Ω
显示8时段数最多为7个,每段电流最小为10/7=1.43mA,显得较暗。
由于LED电流大时正向压降亦大些,故显示数字在0~9之间变化时,亮度变化不是预期那样厉害。因此,下图电路数码管每段电流在1.5~5mA之间。公共限流电阻方案适合于业余制作。 下图中AT89C2051晶振频率为6MHz。没有两个33p电容,由于面包板的分布电容,单片机仍然能起振并工作。0.1μ电容功能是防高频干扰。1μ电容、10k电阻与lk电阻组成最常用的复位电路。 AT89系列51单片机要求直流电源电压3—6V。目前有下列电源可供选用: ●手机锂电池3.6-4.1V ●万能手机充电器4.3-5V ●新稳压电源
二、固定字符显示的程序编制 普通数字电子电路都有特定功能,如与、或、非逻辑功能。计算机包括单片机本身没有特定功能,只有执行特定指令的能力,指令让它干什么,它就干什么;没有指令组成的程序,它什么也不能干。没有配备任何程序的计算机叫做“裸机”。“裸机什么事情也不能做。 普通数字电子电路功能单一,计算机用执行程序模式所能完成的任务却是无限的。关键是选指令编制程序。计算机能执行的所有特定指令就叫做指令系统。 计算机芯片设计时已经配备了指令系统,包括数据传送、算术运算、逻辑运算、指令转移等应有尽有。 编程并不复杂。选指令就像儿童选积木,编程就像儿童搭积木。编程前只要简单地熟悉所用计算机的指令系统就可以,编程时再根据自己的任务去琢磨如何选合适的指令。一个计算机编程老手,也很难说指令系统中的所有指令都用过了,新手更是要慢慢来。 计算机的优点是快,其实很多人也被计算机的“快”搞晕了。但是编程或分析程序时,完全可以认为计算机执行一条条指令时,就像我们人走步一样有条不紊。实际上AT89C2051单片机确实可以慢慢地运行,1秒钟甚至更长时间才执行l条指令,就像影视节目中的慢镜头一样。“慢到”如此慢,每个人都有足够时间来分析计算机一步步究竟在于什么,硬件电路有什么反应。 还有,分析指令执行过程时,只需要关心其已知条件和执行结果。把计算机复位即自动进行的硬件初始化后的状态作为第一条指令的已知条件,把第一条指令的执行结果作为第二条指令的已知条件……把第n条指令的执行结果作为第n+l条指令的已知条件。就这样用熟悉的已知、求、解、答的模式,就能知道程序功能。 上图所示属于单片机最小系统。其任务是显示某固定字符,如显示“2”,只要把“2”的字模二进制数“10100100B”送到P1口,然后停止机器即可。用助记符“MOV P1,#10100100B”表示。汇编程序把MOV P1,#10100100B的助记符汇编成机器码,以写进程序存储器中让计算机执行。这种助记符编写的程序也称为汇编语言程序,简称为汇编语言。 二进制数“10100100B”送到P1口之后,需要使机器停止。但2051单片机没有专用的停止指令。
全部程序如下: MOV P1.#10100100B HERE: SJMP HERE 该最简程序已经写在图2中的单片机符号中。像右图这样既有完整的硬件又有完整的软件,就是一个典型的单片机最小系统。 用C语言编制该程序如下: include
main0 {P1=0xa4; while(1);} 改变P1赋值,观察显示状态有什么变化,把程序编译后固化到2051中,图3中间黑色长条就是AT89C2051单片机,单片机右边发白的小长条是晶振,单片机下方是复位电容及按钮,面包板右侧红色长方块是一块手机锂电池,用两根两端接有带塑皮套的夹子线,通称双夹线,可以很方便地给单片机系统加上电源。该系统工作情况见下图(略)。
整个电路搭好后,上电即能显示“2”。按压复位键,显示全部熄灭,可以验证复位后单片机口线均为高电平,本设计属于低电平驱动,所以复位期间显示全部熄灭。手压复位键时间不限,可以充分观察复位期间口线输出的高电平。 电路保持不变,修改控制程序,就能用本电路制成一块一位LED秒表。LED秒表参考汇编语言程序如下:
字库(读者可改为16进制字库做试验) 本制作的目的仅仅是演示单片机工作原理,因此采用了方便插拔的面包实验板。
|