APP下载

基于51 单片机实现流水灯的若干种编程方法

2012-10-25易礼智

铜仁学院学报 2012年6期
关键词:流水单片机

易礼智

( 湖南工程职业技术学院 信息工程系,湖南 长沙 410151 )

1.硬件组成

本流水灯控制系统由电阻、发光二极管、单片机最小系统(proteus 仿真时省略电源、晶振、复位等电路)和必要的软件。其具体硬件组成如图1 所示。

从硬件中可发现,从p1.0 输出低电平时D1 亮,p1.0输出高电平时D1 熄;同理,接在p1.1~p1.7 口的其他7 个LED 的点亮和熄灭的方法同D1。因此,将D1~D8 依次点亮、熄灭,8 个LED 将一亮一熄实现流水灯。

2.软件编程

2.1.直接赋值

该代码包含了main()和msec()两个函数[1],main()为主程序,msec()为1s 延时子程序。feH 根据C51单片机硬件连接进行确定,表示给P1 口的p1.0 赋了一个低电平,其他的为高电平。赋值后调用子程序msec(),调用中将实参1000 传递给被调用函数msec的形参x。

2.2.数据移位

该代码的主函数main()中,for 语句的表达式用来描述循环的次数即小灯的个数。在硬件电路中C51 单片机的引脚输出低电平时,灯亮;反之,灯熄。D1~D8 循环亮的过程通过a=0xfe 和p1=~(a<

2.3.数组

这段代码定义了一个一维数组{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f},数组中的元素根据流水灯的工作过程来确定。语句 p1=a[i]表示将数组中元素的内容依次送给P1 口。

用二维数组描述代码:语句uint a[2][4]={{0xfe,0xfd,0xfb,0xf7},{0xef,0xdf,0xbf,0x7f}}描述数组元素;在循环嵌套中采用语句p1=a[i][s]将数组中元素的内容依次送给P1 口。

2.4.指针

在这个代码中通过指针直接赋值来实现流水灯。在主函数main()中,语句p=&a 表示把a 的地址送给p,经过赋值后指针变量p 就指向了变量a。语句p1=*p 表示把变量a 里面的内容送给p1 口。

用一维数组指针描述代码:用语句 uint a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}描述依次送给P1 口的各个数据,在函数main()中,采用语句uint *p=a 表示指针变量p 指向数组a 的起始地址,语句p1=*(p+i)表示将数组a 中的数据依次送给P1。……

登录APP查看全文

猜你喜欢

流水单片机
傣家跟着流水走
流水
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
流水有心
基于单片机的平衡控制系统设计
前身寄予流水,几世修到莲花?
Microchip推出两个全新PIC单片机系列