单片机AT89c51——流水灯设计
2012-05-09 17:05
701 查看
单片机AT89c51——流水灯设计
本人新手,现在刚开始学习单片机,学的是AT89C51,第一次写博客,路过的轻喷。
现在,开始设计一个流水灯程序,该程序需要实现,流水灯的正向行走和逆向行走。
1、先用proteus画出电路图。
2、在keil里面写下代码,编译好,来控制P0口。
程序实现了流水灯的正逆走向,但是感觉这段程序可读性太差。
2、重新写了一段,加了两个for循环。
本人新手,现在刚开始学习单片机,学的是AT89C51,第一次写博客,路过的轻喷。
现在,开始设计一个流水灯程序,该程序需要实现,流水灯的正向行走和逆向行走。
1、先用proteus画出电路图。
2、在keil里面写下代码,编译好,来控制P0口。
#include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar code display[9]={0xfe,0xfd,0xfb, 0xf7,0xef,0xdf, 0xbf,0x7f,0xff}; //设置P0口的代码 delay(uint k){ //延时 uint i,j; for(i=0;i<k;i++) for(j=0;j<2000;j++); } void main(){ uchar i =0; uchar olm = 0; //标志变量,标志流水灯的走向 P0 = 0xFF; while(1){ if(display[i]!=0xff&&olm==0){ //判断8盏灯没有亮完,而且判断是否流水灯是正向走动 P0 = display[i]; i++; delay(100); } else { //判断8盏灯已经亮完 olm = 1; i--; P0 = display[i]; delay(100); if(i==0){ //逆走向是否亮了第一盏灯 olm = 0; //告诉程序灯应该正走向 } } } }
程序实现了流水灯的正逆走向,但是感觉这段程序可读性太差。
2、重新写了一段,加了两个for循环。
#include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar code display[9]={0xfe,0xfd,0xfb, 0xf7,0xef,0xdf, 0xbf,0x7f,0xff}; //设置P0口的代码 delay(uint k){ //延时 uint i,j; for(i=0;i<k;i++) for(j=0;j<2000;j++); } void main(){ uchar i =0; P0 = 0xFF; while(1){ for(i=0;i<7;i++){ //正向循环 P0 = display[i]; delay(100); } for(i=8;i>0;i--){ //逆向循环 P0 = display[i]; delay(100); } } }感觉这段代码可读性好了一点,但是效率嘛。。。。
相关文章推荐
- 【转】基于AT89C51单片机设计的简易智能机器人
- 单片机基础强化第一课 简单设计一个LED流水灯
- 单片机设计流水灯和实现LED的闪烁
- 基于AT89C51单片机的红外遥控器解码器的设计(图文)
- 单片机——流水灯程序的设计
- 用AT89C51单片机设计一个秒表:00.0~99.9
- 利用8031单片机,设计跑马灯和流水灯
- AT89C51单片机高速串行输出口设计
- 基于VB的单片机温度数据采集与传输系统设计
- 基于单片机的数控直流稳压电源的设计与实现
- 电子电路设计之工控设备抗干扰总结(单片机电路及PCB设计注意)
- 单片机系统键盘的设计小结
- 单片机控制的双路有源滤波器设计
- 单片机 keil流水灯实验
- 物联网系统设计——与单片机通讯
- 简单的单片机流水灯小程序
- 单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》
- 单片机低功耗设计杂谈
- 基于单片机设计的俄罗斯方块----第一篇(总体规划)
- 基于STC单片机的两轮平衡车设计