历史上的今天
今天是:2025年02月19日(星期三)
2020年02月19日 | PWM控制亮度的流水灯c51程序
2020-02-19 来源:51hei
#include
//--重定义函数变量--//
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/* 定义常量 */
#define FOSC 12000000L //主时钟
#define T50us (65536-FOSC/12/1000000*50) //12T 模式下,50us 时间的计算方法
#define T10ms (65536-FOSC/12/1000*10) //12T 模式下,10ms 时间的计算方法
//--定义全局变量--//
uchar uTime1 = 0; //脉冲宽度数值
uchar uMove = 0; //移动标志
uchar uCount = 0; //每 10ms 计数值
uchar LightLevel[8] = {64,32,16,8,4,2,1,0};//亮度级别表:PWM的脉冲宽度
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
uchar code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
void TimeConfig();
void main(void)
{
TimeConfig();
while(1)
{
uchar Led = 0x00; //当前点亮的Led的值
uchar i = 0;
if (uCount >= 10)
{
uCount = 0;
uMove++;
}
uTime1 %= 64;
uMove %= 8;
for(i = 0; i < 8; i++)
{
if (uTime1 < LightLevel[(i+uMove)%8])
Led |= 0x01 << i;
else
Led &= ~(0x01 << i);
}
P0 = Led;
}
}
void TimeConfig()
{
TMOD = 0x11; //设置定时计数器0和定时计数器1工作模式1
//--定时器0赋初始值,12MHZ下定时10ms--//
TL0 = T10ms;
TH0 = T10ms >> 8;
//--定时器1赋初始值,12MHZ下定时50us--//
TL1 = T50us;
TH1 = T50us >> 8;
TF0 = 0; //清除TF0标志
ET0 = 1; //开启定时器0中断
TF1 = 0; //清除TF1标志
ET1 = 1; //开启定时器1中断
EA = 1;
TR0 = 1; //开启定时器 0
TR1 = 1; //开启定时器 1
}
void Time0(void) interrupt 1 //0:外部中断1; 1:定时器0中断; 2:外部中断2; 3:定时器1中断; 4:串口中断
{
TL0 = T10ms; //重新赋初值
TH0 = T10ms >> 8;
uCount++;
}
void Time1(void) interrupt 3 //0:外部中断1; 1:定时器0中断; 2:外部中断2; 3:定时器1中断; 4:串口中断
{
TL1 = T50us; //重新赋初值
TH1 = T50us >> 8;
uTime1++;
}
上一篇:详解51单片机控制步进电机
史海拾趣
|
作者 kinneng 拆一个国产造工精巧的插座。 雪白的外观,用料不错。 完美的结构,符合标准。 像纸一样的厚度体现塑料模具工艺的精巧。 仿古的焊接工艺,令人赞叹。 未去水边,可见注塑压力的强大。 一拆就脱焊散架,节省拆解的 ...… 查看全部问答> |
|
Xilinx的ChipScope工具就相当于Altera的SignalTap II,能够捕捉FPGA内部的信号,方便了调试过程。下面就以一个简单的实例描述一下使用ChipScope的过程 Step1:打开一个以后的ISE工程,进行管脚约束,并进行综合。 Step2:添加ChipScope Definitio ...… 查看全部问答> |
|
我想实现单片机LED动态显示,有六个数码管,能够任意实现我要显示的数, 如12\\1.234\\65.87\\897.435等等.不知道程序该如何去写,请高手指教.… 查看全部问答> |
|
买了一个rfid读写模块,通过rs232串口线接到开发板上,开发板上跑的是linux,读写模块提供的源码是51的,以前没做过51,在linux下面读写/dev/ttyS1来访问rfid读写模块,写能够写入,读总是读不出来。请问那位高手能帮忙解决,提点建议,谢谢。 或 ...… 查看全部问答> |
|
哪位高手用TI的8962移植UCOS 2.52成功的,共享下,学习学习 哪位高手用TI的8962移植UCOS 2.52成功的,共享下,学习学习 我用周立功的怎么下载都不成功,来时提示 Load \"E:\\\\LM3S_uCOS2_Keil_V1.1d\\\\Object\\\\LM3S_uCOS2.AXF\" No Algorithm found for: 00000000H - 00000F87H Erase skipped!… 查看全部问答> |
|
这几天跟着视频一起看MSP430 LaunchPad ,MSP430 LaunchPad 的开发可以选用IAR或者CCS。 关于IAR,网上相关介绍很多了。 CCS网上的下载链接很少,无奈,只好到TI官网去下载,但是下载的时候,却要先申请,申请通过后才能下载。 于是只好老老实实 ...… 查看全部问答> |




