百度知道 - 信息提示

日期:2025-01-12 18:53:39 人气:1

百度知道 - 信息提示

    A+
热门评论

求单片机C语言程序,8个发光管来回流动,第1个管亮100ms

走马灯的程序到处是吧。给你贴一个杜洋的流水灯,自己参考着改。 /********************************************************************************************* 程序名:    8路流水灯 编写人:    杜洋  编写时间:  2009年5月13日 硬件支持:  STC12C2052 内部RC或外部12MHZ晶振 接口说明:  8个LED彩灯接P1口 修改日志:     NO.1-2009年5月14日 在程序前面加入参数定义项  /********************************************************************************************* 说明: 根据参数设置产生流水LED效果。 /*********************************************************************************************/ #include //51头文件 /*********************************************************************************************/ #define DY_PORT P1 //设置LED连接的I/O组 #define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535) /********************************************************************************************* bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED #define [代替名] [原名] //用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1 sbit [自定义名] = [系统位名] ; //自定义系统位名。例:sbit Add_Key = P3 ^ 1; unsigned char [自定义名] ; //定义一个0~255的整数变量.例:unsigned char a; unsigned int [自定义名] ; //定义一个0~65535的整数变量 /*********************************************************************************************/ void delay (unsigned int a){ // 1ms延时程序 unsigned int i; while( --a != 0){ for(i = 0; i < 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600 } //AT89C51单片机在外部晶振为12MHz时i值上限为125 } /*********************************************************************************************/ void main(void){ unsigned int i; unsigned int temp; while(1){ temp=0x01; for(i=0;i<8;i++){ //8个流水灯逐个闪动 DY_PORT=~temp; delay(DY_SPEED); //调用延时函数 temp<<=1; } temp=0x80; for(i=0;i<8;i++){ //8个流水灯反向逐个闪动 DY_PORT=~temp; delay(DY_SPEED); //调用延时函数 temp>>=1; } temp=0xFE; for(i=0;i<8;i++){ //8个流水灯依次全部点亮 DY_PORT=temp; delay(DY_SPEED); //调用延时函数 temp<<=1; } temp=0x7F; for(i=0;i<8;i++){ //8个流水灯依次反向全部点亮 DY_PORT=temp; delay(DY_SPEED); //调用延时函数 temp>>=1; } } } /*********************************************************************************************/

阅读全文