STC11F  LED部分:

#include "STC11.h"

#define u8 unsigned char
#define u16 unsigned int

//全亮
//u8 code Picture1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;
//u8 code Picture2[8]={0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7};
//u8 code Picture3[8]={0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00};

//半亮
u8 code Picture1[8]={0x7e,0xbd,0xdb,0xe7,0xff,0xff,0xff,0xff} ;
u8 code Picture2[8]={0xe7,0xdb,0xbd,0x7e,0xff,0xff,0xff,0xff};
u8 code Picture3[8]={0x00,0x7e,0x7e,0x7e,0xff,0xff,0xff,0xff};

u8 code Picture4[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe} ;

void delay(unsigned char k)
 {
   unsigned char i;
   for(;k>0;k--)
    for(i=0;i<10;i++)
       ;
 }

void show(u8 pic[8],u8 short_n,u16 long_n)
{
  for(;long_n>0;long_n--)
  {
    P3M1=0x7f;
    P3M0=0x80;//P37为推免输出  
    P37=0;    
    P1=pic[0];  
    delay(short_n);
    P37=1;    
    P1=pic[4];  
    delay(short_n);

P3M1=0xbf;
    P3M0=0x40;//P36为推免输出  
    P36=0;
    P1=pic[1];      
    delay(short_n);
    P36=1;
    P1=pic[5];      
    delay(short_n);

P3M1=0xdf;
    P3M0=0x20;//P35为推免输出  
    P35=0;
    P1=pic[2];      
    delay(short_n);
    P35=1;
    P1=pic[6];      
    delay(short_n);

P3M1=0xef;
    P3M0=0x10;//P34为推免输出  
    P34=0;
    P1=pic[3];      
    delay(short_n);
    P34=1;
    P1=pic[7];      
    delay(short_n);
  }
}

void show_single(u8 pic[8],u8 short_n,u16 long_n)
{
  unsigned char k;
    P3M1=0x7f;
    P3M0=0x80;//P37为推免输出  
    P37=0;
  for(;long_n>0;long_n--)    
    for(k=0;k<8;k++)
    {
      P1=pic[k];  
      delay(short_n);
    }
}

void main()
 {
 P3M1=0xff;
 P3M0=0x00;//P3口为高阻
 P1=0;
 delay(10);
 while(1)
 {
  show(Picture1,20,3000);
  show(Picture2,20,3000);
  show(Picture3,20,3000);

show_single(Picture4,200,800);
  }
 }

STC11F  调速部分:

#include "reg51.h"

//在测试的时候,一定要去掉飞轮!!!!!!!!!

sbit Light=P1^0;
sbit Pwm=P1^1;
sbit Accelerate=P1^2;            //该引脚接地,加大油门控制
sbit Stop=P1^3;            //该引脚接地,停止

unsigned int k=0;                       
unsigned char a=0;            
                  
void Control()
{
  if(Accelerate==0&&k<1100)           //检测是否加油门
    k++;
  if(Stop==0)
    k=0;
}

//void delay(unsigned char j)
//{
//  unsigned char i;
//  for(;j>0;j--)
//    for(i=0;i<255;i++)
//      ;
//}
/**************************************************************
函数功能:主函数
**************************************************************/
void main(void)
{
    EA=1;                  //开总中断
    ET1=1;                 //定时器T1中断允许         
    TMOD=0x10;             //TMOD=0001 000B,使用定时器T1的模式1,16位
    TH1=0xfc-k/256;   //定时器T1的高8位赋初值    
    TL1=0xd3-k%256;  //定时器T1的高8位赋初值
    TR1=1;                 //启动定时器T1
    Light=0;
    while(1)//无限循环等待中断
    {
      while(TF1==0) ;
      TF1=0;
      Control();
      //delay(5);
    }   
 }
/**************************************************************
函数功能:定时器T1的中断服务程序
在此函数中严重禁止使用如下格式赋值!!!!!!!!!!!!!!!
  TH1=(65536-k)/256;        //定时器T1的高8位赋初值
  TL1=(65536-(125-k))%256;  //定时器T1的高8位赋初值
不然输出来的计时长度就会变长!!!!!!!!!!!!!!!!!!
**************************************************************/
void Time1(void) interrupt 3 using 0 //“interrupt”声明函数为中断服务函数
 {
   unsigned char kh,kl;
   kh=k>>8;
   kl=k;
   TR1=0;                 //关闭定时器T1
   if(a==0)
   {
     a=1;
     Pwm=1;                        //高电平
     TH1=0xfc-kh;   //定时器T1的高8位赋初值
     TL1=0xff-kl;  //定时器T1的低8位赋初值, 不能用小于0xff的数-kl,不然就会借位溢出!
   }
   else
   {
     a=0;
     Pwm=0;                           //低电平
     TH1=0xab+kh;   //定时器T1的高8位赋初值    
     TL1=0x00+kl;  //定时器T1的低8位赋初值 ,不能用大于0x00的数+kl,不然就会溢出!
   }
   TR1=1;                 //启动定时器T1
 }

完整资料打包:

https://download.csdn.net/download/fengyuzhe13/87362474

STC 51单片机58——旋转LED相关推荐

  1. 基于51单片机的旋转LED

    大三的期末设计(大三好几个期末设计),当初感觉这个东西挺酷炫的,就去搞了一下,然而未曾料到,大三期末太多设计,同时51单片机的项目以前有做过,就没花很多时间在这个设计上,做了一周多,效果差强人意. 先 ...

  2. 【转帖】POV LED基于51单片机的旋转LED电子钟

    http://hi.baidu.com/52_diy/blog/item/d8310dfac0a97716a8d3114b.html POV即persistancd of vision 利用单片机控制 ...

  3. 基于51单片机实现旋转LED灯报警(Proteus仿真)

    WeChat:[嵌入式工程师成长日记] https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&a ...

  4. DIY基于51单片机的旋转LED数字电子钟(红外线遥控调时)

    在网上看到不少老外做的各种旋转LED显示屏,非常COOL,我也动手用洞洞板试做了一个类似的显示屏,结果感觉还不错.于是再接再励继续努力,将作品进一步改进,完善后制成如今这个样子. 由于刚学51单片机, ...

  5. 用51单片机中断控制LED灯亮灭

    用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...

  6. 单片机学习笔记————51单片机实现用LED灯和按键来模拟工业自动化设备的运动控制

    一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...

  7. 基于89C51/52单片机的旋转LED制作、 程序、及图片取模

    这是很久以前学单片机不久挖的坑,硬件做好了,没找到合适的取模软件.最近比较闲,翻出来收尾一下. 先看效果图 汤姆猫 GitHub CSDN 硬件部分 电路图,用共阳极是因为51单片机下拉能力比上拉能力 ...

  8. 51单片机C语言led流水灯及数码管实现秒表

    51单片机C语言练习题 单片机型号 普中科技的 led练习题 led小灯闪烁 #include<reg52.h> sbit LED = P0^0; void main() {unsigne ...

  9. 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include "reg52.h" sbit led1= P3^7; void ...

最新文章

  1. [异常解决] How make ubuntu use Google Search
  2. 数据备份 另一服务器_狡兔三窟-数据备份
  3. ThunderSoft Flash to HTML5中文版
  4. 解决socket粘包的两种low版模式 os.popen()和struct模块
  5. python怎么安装pyecharts_基于Python安装pyecharts所遇的问题及解决方法
  6. 【百度地图API1.1】修改文本标注的样式
  7. 七点建议,帮助你编写出简洁、干练的Java代码
  8. iw linux交叉编译,iw交叉编译
  9. 参加第三届信息化创新克拉玛依国际学术论坛
  10. android tab之间滑动切换界面功能
  11. CSS如何实现数字分页效果
  12. CMake test目录和项目同名错误
  13. CSS 文档架构——便于读取
  14. 挑战性题目DSCT501:大整数因子分解
  15. 应用程序无法正常启动0xc0150002 解决方案
  16. git commit --amend撤销方法
  17. PHP之Smarty
  18. 用计算机弹琴图纸,cad制作钢琴平面图的操作流程
  19. 【汇正财经】电网设备,享受改革的硕果
  20. Android Activity 设置背景图片

热门文章

  1. JS数据类型以及存储方式
  2. IDEA使用Maven常见的问题及快捷键使用
  3. 对云端软件平台的印象
  4. OFDM水声通信基础
  5. Codeforces Round #413 C. Fountains (线段树的创建、查询、更新)
  6. 2003服务器运行库,微软常用运行库合集包最新版支持XP/2003/7/8/8.1/10(32+64位)
  7. mysql中sql中统计结果四舍五入保留两位小数
  8. make_layers 作用
  9. 通达oa php冲突,通达OA某版本系统存在通用SQL注入(附注射技巧)
  10. 虚拟光驱软件 daemon tools lite 4.4 下载 2011最新版