STC 51单片机58——旋转LED
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相关推荐
- 基于51单片机的旋转LED
大三的期末设计(大三好几个期末设计),当初感觉这个东西挺酷炫的,就去搞了一下,然而未曾料到,大三期末太多设计,同时51单片机的项目以前有做过,就没花很多时间在这个设计上,做了一周多,效果差强人意. 先 ...
- 【转帖】POV LED基于51单片机的旋转LED电子钟
http://hi.baidu.com/52_diy/blog/item/d8310dfac0a97716a8d3114b.html POV即persistancd of vision 利用单片机控制 ...
- 基于51单片机实现旋转LED灯报警(Proteus仿真)
WeChat:[嵌入式工程师成长日记] https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&a ...
- DIY基于51单片机的旋转LED数字电子钟(红外线遥控调时)
在网上看到不少老外做的各种旋转LED显示屏,非常COOL,我也动手用洞洞板试做了一个类似的显示屏,结果感觉还不错.于是再接再励继续努力,将作品进一步改进,完善后制成如今这个样子. 由于刚学51单片机, ...
- 用51单片机中断控制LED灯亮灭
用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...
- 单片机学习笔记————51单片机实现用LED灯和按键来模拟工业自动化设备的运动控制
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 基于89C51/52单片机的旋转LED制作、 程序、及图片取模
这是很久以前学单片机不久挖的坑,硬件做好了,没找到合适的取模软件.最近比较闲,翻出来收尾一下. 先看效果图 汤姆猫 GitHub CSDN 硬件部分 电路图,用共阳极是因为51单片机下拉能力比上拉能力 ...
- 51单片机C语言led流水灯及数码管实现秒表
51单片机C语言练习题 单片机型号 普中科技的 led练习题 led小灯闪烁 #include<reg52.h> sbit LED = P0^0; void main() {unsigne ...
- 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁
点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include "reg52.h" sbit led1= P3^7; void ...
最新文章
- [异常解决] How make ubuntu use Google Search
- 数据备份 另一服务器_狡兔三窟-数据备份
- ThunderSoft Flash to HTML5中文版
- 解决socket粘包的两种low版模式 os.popen()和struct模块
- python怎么安装pyecharts_基于Python安装pyecharts所遇的问题及解决方法
- 【百度地图API1.1】修改文本标注的样式
- 七点建议,帮助你编写出简洁、干练的Java代码
- iw linux交叉编译,iw交叉编译
- 参加第三届信息化创新克拉玛依国际学术论坛
- android tab之间滑动切换界面功能
- CSS如何实现数字分页效果
- CMake test目录和项目同名错误
- CSS 文档架构——便于读取
- 挑战性题目DSCT501:大整数因子分解
- 应用程序无法正常启动0xc0150002 解决方案
- git commit --amend撤销方法
- PHP之Smarty
- 用计算机弹琴图纸,cad制作钢琴平面图的操作流程
- 【汇正财经】电网设备,享受改革的硕果
- Android Activity 设置背景图片
热门文章
- JS数据类型以及存储方式
- IDEA使用Maven常见的问题及快捷键使用
- 对云端软件平台的印象
- OFDM水声通信基础
- Codeforces Round #413 C. Fountains (线段树的创建、查询、更新)
- 2003服务器运行库,微软常用运行库合集包最新版支持XP/2003/7/8/8.1/10(32+64位)
- mysql中sql中统计结果四舍五入保留两位小数
- make_layers 作用
- 通达oa php冲突,通达OA某版本系统存在通用SQL注入(附注射技巧)
- 虚拟光驱软件 daemon tools lite 4.4 下载 2011最新版