资源简介
LED PWM控制调光程序 c51
代码片段和文件信息
#include
static char pwmdirpwmdirold;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
//sbit P0_4=P0^4;
//sbit P0_6=P0^6;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
static unsigned char pwm_f;
static unsigned char H_MAX;
static unsigned char keyvalkeyoldpwm_pulse;
void Delay(unsigned char ms);
unsigned char GetKey();
void LedShow(unsigned char value);
void Timer0_init();
void main()
{
keyval=keyold=0;
pwmdir=pwmdirold=2;
H_MAX=150;
pwm_pulse=0;
pwm_f=0;
P1=0x80;
Timer0_init();
while(1)
{
keyval=GetKey();
LedShow(keyval);
if(0==keyval)
{
continue;
}
else
{
if(5==keyval)
{
pwmdir=pwmdirold=2;
P1=0x80;
break;
}
else if(1==keyval)
{
pwmdir=1;
}
else if(2==keyval)
{
pwmdir=0;
}
else if(3==keyval)
{
H_MAX=150;
}
else if(4==keyval)
{
H_MAX=80;
}
}
}
}
void Timer0_init()
{
TMOD=0x02;
TH0=0x48;
TL0=TH0;
ET0=1;
TR0=1;
EA=1;
}
void Timer0_inter() interrupt 1
{
pwm_f++;
pwm_f%=200;
if(2!=pwmdir)
{
if(pwmdirold!=pwmdir)
{
pwmdirold=pwmdir;
P1_2=0;
P1_3=0;
Delay(100);//
if(1==pwmdir)
{
P1_2=0;
if(0==pwm_f)
{
P1_3=1;
}
else if(H_MAX==pwm_f)
{
P1_3=0;
}
}
else
{
P1_3=0;
if(0==pwm_f)
{
P1_2=1;
}
else if(H_MAX==pwm_f)
{
P1_2=0;
}
}
}
else
{
if(1==pwmdir)
{
P1_2=0;
if(0==pwm_f)
{
P1_3=1;
}
else if(H_MAX==pwm_f)
{
P1_3=0;
}
}
else
{
P1_3=0;
if(0==pwm_f)
{
P1_2=1;
}
else if(H_MAX==pwm_f)
{
P1_2=0;
}
}
}
}
}
unsigned char GetKey()
{
P2_0=0;
if(0==P2_4)
{
P2_0=1;
return 7;
}
else if(0==P2_5)
{
P2_0=1;
return 8;
}
P2_0=1;
P2_1=0;
if(0==P2_4)
{
P2_1=1;
return 5;
}
else if(0==P2_5)
{
P2_1=1;
return 6;
}
P2_1=1;
P2_2=0;
if(0==P2_4)
{
P2_2=1;
return 3;
}
else if(0==P2_5)
{
P2_2=1;
return 4;
}
P2_2=1;
P2_3=0;
if(0==P2_4)
{
P2_3=1;
return 1;
}
else if(0==P2_5)
{
P2_3=1;
return 2;
}
else
{
P2_3=1;
return 0;
}
}
void LedShow(unsigned char value)
{
switch(value)
{
case 1:
P0=0xF9;
P1_0=0;
break;
case 2:
P0=0xA4;
P1_0=0;
break;
case 3:
P0=0xB0;
P1_0=0;
break;
case 4:
P0=0x99;
P1_0=0;
break;
case 5:
P0=0x92;
P1_0=0;
break;
case 6:
P0=0x82;
P1_0=0;
break;
case 7:
P0=0xF8;
P1_0=0;
break;
case 8:
P0=0x80;
P1=0xFE;
break;
default:
break;
}
}
void Delay(unsigned char ms)
{
un
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7279 2009-06-26 19:22 PWM\pwm
文件 3038 2009-06-26 19:22 PWM\pwm.c
文件 1490 2009-06-26 19:22 PWM\pwm.hex
文件 39 2009-06-26 19:22 PWM\pwm.lnp
文件 11568 2009-06-26 19:22 PWM\pwm.LST
文件 13948 2009-06-26 19:22 PWM\pwm.M51
文件 7698 2009-06-26 19:22 PWM\pwm.OBJ
文件 1204 2009-06-26 20:57 PWM\pwm.Opt
文件 214 2009-06-28 10:26 PWM\pwm.plg
文件 2152 2009-06-26 12:45 PWM\pwm.Uv2
文件 1204 2009-06-26 18:32 PWM\pwm_Opt.Bak
文件 2148 2009-06-26 12:01 PWM\pwm_Uv2.Bak
文件 6376 2009-06-26 19:22 PWM\STARTUP.A51
文件 10762 2009-06-26 19:22 PWM\STARTUP.LST
文件 750 2009-06-26 19:22 PWM\STARTUP.OBJ
目录 0 2009-07-29 14:25 PWM
----------- --------- ---------- ----- ----
69870 16
相关资源
- 基于单片机的水塔水位控制器设计与
- 基于80C51的RS485双机通信程序_01
- 基于stc89c52rc单片机的红外遥控小车,
- STM32掌机驱动OLED屏幕
- 0.96OLED,z-stack驱动
- 16*64led点阵显示屏
- 电流模式的PWM控制器
- 太阳能LED路灯控制器设计
- 基于FPGA的直流电机PWM控制器设计
- tiny4412上实现QT控制LED
- 单片机驱动16*16点阵LED汉字显示c51程序
- 使用stm32控制彩色级联led WS2818B源程序
- Nordic51822 被连接时打开广播
- 强大的SPWM正弦表生成工具
- LED数码管数据生成
- 学习Hyperledger Fabric 实战联盟链 地址
- 旋转LED模拟时钟程序源程序
- C51单片机抢答器程序
- C51与ADXL345通信外加上位机显示程序
- MBI5030 Application Note
- 基于52单片机LED点阵显示电子钟的设计
- SPWM+一阶积分滤波 multisim文件
- stm32 高级定时器1的互补输出死区设置
- SD1329驱动OLED芯片手册.pdf
- rc-g6 显示屏软件
- stm32编写的25lc512驱动文件
- SVPWM.zip
- LED 字体 unity可用
- VHDL描述4*4标准矩阵键盘扫描读取并点
- PCF8583中文资料详解及c51程序
评论
共有 条评论