单片机程序-利用C52库函数实现左右流水灯

发布者:SparklingStar22最新更新时间:2015-04-30 来源: 51hei关键字:单片机程  C52  库函数  流水灯 手机看文章 扫描二维码
随时随地手机看文章
本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c52;找到流水灯部分的原理图即可.这是一整个单片机开发板的电路图其他的忽略

下面是程序源代码:
/***********左右流水灯**************/
/**
*功能:利用C52库函数实现左右流水灯
*    方法一:goto 语句实现之
*    方法二: 顺序实现之
*    方法三: 顺序和goto语句实现之
*日期:2013-06-16-09:00-09:40
*备注:程序已通过调试
**/
/*********AT89C52-RC MCU*************/
/***********HL-1 开发板***********/
#include
#include
typedef unsigned int uint;
typedef unsigned char uchar;
void delay(uint xms)
{
 uint x, y;
 for(x = xms; x > 0; x--)
   for(y = 110; y > 0; y--);
}
/**********方法1************/
/*
void main(void)
{
 
 uchar temp, temp1, i;
 /******流水灯向左流动********/
 /*
loop1: while(1)
  {
   P1 = 0xfe;
   for(i = 0; i < 7; i++)
   {
    temp = P1;
    temp = _crol_(temp, 1);
    P1 = temp;
    delay(200);
   }
   goto loop;
  }
   /******流水灯向右流动********/
   /*
loop: while(1)
  {
   P1 = 0x7f;
   for(i = 0; i < 7; i++)
   {
    temp1 = P1;
    temp1 = cror_(temp1, 1);
    P1 = temp1;
    delay(200);
   }
   goto loop1; 
  }
}
 */
/**********方法2************/
/*
void main(void)
{
 uchar temp, i;
 P1 = 0xfe;
 while(1)
 {
  P1 = 0xfe;
  temp = P1;
 /******流水灯向左流动********/
 /*
  for(i = 0; i < 7; i++)
  {
   temp = _crol_(temp, 1);
   P1 = temp;
   delay(200);
  }
 /******流水灯向右流动********/
  /*
  P1 = 0x7f;
  temp = P1;
  for(i = 0; i < 7; i++)
  {
   temp = _cror_(temp, 1);
   P1 = temp;
   delay(200);
  }
 }
}
*/
/**********方法3***********/
void main(void)
{
 uchar temp, i;
 while(1)
 {
  P1 = 0xfe;
  temp = P1;
 /******流水灯向左流动********/
  for(i = 0; i < 7; i++)
  {
   temp = _crol_(temp, 1);
   P1 = temp;
   delay(200);
   if(i >= 7)
   goto loop;
  }
 /******流水灯向右流动********/
loop: P1 = 0x7f;
  temp = P1;
  for(i = 0; i < 7; i++)
  {
   temp = _cror_(temp, 1);
   P1 = temp;
   delay(200);
  }
 }
}
关键字:单片机程  C52  库函数  流水灯 引用地址:单片机程序-利用C52库函数实现左右流水灯

上一篇:单片机控制点阵LED一秒刷新显示I心形U
下一篇:单片机数码管显示数字为流水灯亮的个数

推荐阅读最新更新时间:2024-03-16 14:00

Cepark 51基于RTX-51 tiny的花样流水灯
/* ** RTX-51的移植 ** 此程序是循环花样显示LED灯 ** 有三个显示样式,分别对应下面的三个进程 ** 下面的算法中用到了 时间到空间 的转换,使得算法简化不少 ** 此程序我已在Cepark 51开发板上试验通过。 ** P0口接8个LED灯,低电平点亮! */ #include reg51.h #include rtx51tny.h const unsigned char table ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 ,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x00}; /*时间到空间的转换,如果table是: co
[单片机]
武林教你学PIC32(三)教你用库函数写中断按键
我接触的32位单片机:STM32,LM3S都有库函数,利用库函数能够加快项目进度,不需要去底层查看寄存器等等。PIC32的库函数位置在: D:\Program Files\Microchip\MPLAB C32\pic32-libs\peripheral 如果你安装在C盘,改下路径就可以了,我们可以到了各个外设都封装好了。网络上有个库函数说明书,我网络不好下载不了,就把地址发出来吧: http://hades.mech.northwestern.edu/images/5/5e/32-bit-Peripheral-Library-Guide.pdf 下面就教大家使用库函数做中断按键触发LED亮灭 从按键的连接看
[单片机]
武林教你学PIC32(三)教你用<font color='red'>库函数</font>写中断按键
STM32串口库函数版例程
定义: TXD1----- PA9-US1-TX RXD1----- PA10-US1-RX 速率:115200,n,8,1 /* Includes ------------------------------------------------------------------*/ #include stm32f10x.h #include platform_config.h #include stm32f10x_usart.h #include misc.h #include stdarg.h /* Private variables ---------------------------------------
[单片机]
嵌入式stm32学习之路——第一弹(led流水灯工程)
之前没接触过单片机,初次学习感到很迷茫,从初识stm'32到建工程模板再到第一个(流水灯实验),用了两天半的时间。因为C语言基础不是很好,有很多语句都看不懂,费了很大的劲才把led灯点亮。因为模电和数电都还没学,电路图也很难弄懂。 下面是原理图: 点亮led的方法 知道了原理之后,根据方法分析,可制定相应的开发步骤如下: 1)为控制LED灯,知道要使用 GPIO 外设。 2)了解GPIO外设有什么功能,要如何使用。 3)获知GPIO的地址映射,知道它所挂载的总线APB2。 4)了解ST官方库对寄存器的封装。 5)了解时钟树,查看 GPIOx(x= A…F)的时钟来源,即PCLK2。 6)在stm32f10x
[单片机]
嵌入式stm32学习之路——第一弹(led<font color='red'>流水灯</font>工程)
单片机STM32在开发中常用库函数详解
  1.GPIO初始化函数   用法:   voidGPIO_Configuration(void)   {   GPIO_InitTypeDefGPIO_InitStructure;//GPIO状态恢复默认参数   GPIO_InitStructure.GPIO_Pin=GPIO_Pin_标号|GPIO_Pin_标号;   //管脚位置定义,标号可以是NONE、ALL、0至15。   GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//最高输出速度为50MHz   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出   G
[单片机]
STM32库函数的使用过程中晶振参数与实际不符的问题
这段时间自己开了一块STM32F4的板子,调试过程中发现,外部电路焊接的晶振为8MHz,但在调试过程中检测得的时钟确是25MHz,令人恼火。 本着遇到问题解决问题的思路,开始思考问题出在哪里。 首先,将单片机的系统时钟配置为内部的16MHz晶振,单片机工作正常,说明电路板是没问题的。 之后,将单片机的系统时钟配置成外部8MHz晶振,发现通过RCC_GetClocksFreq函数获取的时钟值确是25MHz,由此观之问题可能出在两个方面: 1:晶振本身有问题; 2:RCC_GetClocksFreq函数获取时钟值问题。 通过用调换三个晶振,结果一样,初步判定晶振是没有问题的。那么问题就是出在RCC_GetClocksFreq函数上了,
[单片机]
stm32专题十一:USART(三)初始化结构体和标准库函数分析
在之前的博客中分析了stm32串口的结构,和详细的发送、接受过程。现在来分析固件库中对于USART的标准函数 typedef struct { uint32_t USART_BaudRate; // 波特率 uint16_t USART_WordLength; // 帧数据长度(8位还是9位) uint16_t USART_StopBits; // 停止位 uint16_t USART_Parity; // 校验 uint16_t USART_Mode; // 模式:单收、单发或收发 uint16_t USART_HardwareFlowCo
[单片机]
C51单片机C52单片机内部的资源区别
C52单片机可以理解为是C51单片机的增强版 • 两个方面有差异,存储空间和定时器计数器方面有区别 ○ C52单片机的内部ROM为8KB;C51单片机的内部ROM为4KB ○ C52单片机的内部RAM为256B;C51单片机的内部ROM为128B • C52单片机相比C51单片机多了一个定时计数器T2
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved