历史上的今天
今天是:2025年03月08日(星期六)
2018年03月08日 | 用51单片机的呼吸灯程序
2018-03-08 来源:eefocus
//晶振11.0592
//灯光在单片机控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸
//本例在51hei-5型开发板上实现了一个数码管和一个LED灯一起实现呼吸效果
//文件下载:http://www.51hei.com/f/fxd.rar
#include
#define uint unsigned int
#define uchar unsigned char
sbit D1=P0^7;
uchar sr;
uchar jf;
uchar code table[]={
0,1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,
28,29,30,31,32,33,34,35,36,
37,38,39,40,41,42,43,44,45,
46,47,48,49};
void light(uchar num);
void delay(uint z);
void main()
{
//设置计数器
//选取计数方式1
TMOD = 0x11;
//给计数器写初值
TH0 = 0;
TL0 = 0;
////////////////////
//操作单片机
//开启CPU中断
EA = 1;
///////////////////
//开启定时器T0位中断
ET0 = 1;
//开启计数器
TR0 = 1;
//操作二极管
P1=0;
while(1)
{
if(sr<50)
light(sr);
else sr=0;
}
}
//子函数
void light(uchar num)
{
uchar tme;
D1 = 0;
tme = table[num];
delay(tme);
D1 = 1;
delay(49-tme);
}
//中断函数
void time () interrupt 1
{
//自变量自加
if (jf<2)
{
jf++;
TH0 =0;
TL0 = 0;
}
if (jf==2)
{
//写初值
jf=0;
TH0 = 254;
TL0 = 254;
sr++;
}
}
void delay(uint z)
{
uint x,y;
for(x=10;x>0;x--)
for(y=z;y>0;y--);
}
史海拾趣
|
通过上一篇的实验,相信大家都掌握了显示字符的基本用法。 下面我们来看一下12864液晶更高级的用法。 首先是它的绘图功能 。 让我们先来显示一整副的图片吧,也就是128x64大小。 在使用绘图功能时,先要打开扩充指令集,然后再打开绘图功能。 ...… 查看全部问答> |
|
assertion failed! afxcmn2.inl 110行 在winXP下 VC写的SOCKET通信的程序可以正常运行,但是在EVC写进行改写,Wince上运行出现了assertion failed! afxcmn2.inl 110行 请教一下,这是什么错误?… 查看全部问答> |
|
1.激励的设置 相应于被测试模块的输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理。 方法1:为双向端口设置中间变量inout_reg作为该inout的输出寄存,inout口在testbench中要定义为wire型变量,然后用输出 ...… 查看全部问答> |
|
现在坛子里相信有很多人拥有C2000 LaunchPad,给学习C2000带来了方便。如果能组织一下编写它的学习及应用方面的文章,将会给广大网友、特别是以后入门C2000的人带来福音。 我建议: 1、写学习经验。 组织有使用经验的人,写出系 ...… 查看全部问答> |




