出高低电平,从而来控制相应LED灯的亮灭。本次实验我们采用的是查表法和循环移位法,这两个方法要比位控法要复杂些,但是程序要简略的多
三硬件设计
1单片机时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在MCS51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。时钟电路如下图:
f2复位电路电阻的作用是用于上电复位的,VCC以上电,由于电容两端电压不能突变,所以RST上为高电平,然后电容放电,RST就为低电平了,还可以用手动复位,此电路应用自动复位。
f3工作电路工作电路就是根据总的电路的指令,来反应工作情况。本电路的流水灯电路具体的如下:
根据各个模块的功能及他们的信号传输,连接电路如下:
f四软件设计
汇编语言和C语言的特点及选择本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。在本设计中采用C语言编写软件程序。C语言程序设计特殊功能寄存器P0一共八位,因此P0寄存器可一次存放一字节数据,寄存器的每位的输出对应P00P07引脚,其中P00为P0的低位引脚,P07为高位引脚。P0引脚输出高低电平与寄存器P0存放数据一致,如程序中,P00x01时,则只有P00输出高电平,其它引脚输出低电平。为了实现流水灯效果,程序设计让P0的八个引脚依次输出高电平即可。如先让P00x01,LED1点亮,然后让P00x02,LED2点亮,依次往下操作,P00x80时,LED8被点亮。每次点亮一只LED后,通过延时函数调整下一个LED被点亮的时间间隔。程序清单如下i
cludereg51h
f延时函数voiddelayu
sig
edi
txwhilex主函数voidmai
voidP00x01delay30000P00x02delay30000P00x04delay30000P00x08delay30000P00x10delay30000P00x20delay30000P00x40delay30000P00x80delay30000通过电路仿真,LED可以实现从右到左的一次点亮,但此程序看起r