#include "rgb.h"
#include "stdlib.h"
#include "motor.h"
#include <intrins.h>
#include <string.h>
RGB lampshow;
uint8_t lamp[LEDNUM][3]={0};//lamp[灯数量][灯颜色]
uint16_t ledcot=0;
uint16_t tcount=0;
xdata uint8_t clor=7;
xdata uint8_t ja;
xdata uint8_t bt=1;
const uint8_t tf[12]={1,2,3,6,7,8,12,13,14,17,18,19};
//发送数据0
void write_l( void)
{
LED=1;
_nop_();
_nop_();
_nop_();
LED=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
//发送数据1
void write_h(void )
{
LED=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
LED=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
//发送复位码
static void write_res(void )
{
LED=0;
Delay_ms(1);
}
//发送单个字节
void write_one_bate( uint8_t da)
{
uint8_t i;
for( i=0;i<8;i++)
{
//先发高位
if(da&0x80)
{
write_h();
}
else{
write_l();
}
da<<=1;
}
}
//发送RGB三原色
void write_grb(uint8_t gda,uint8_t rda,uint8_t bda)
{
write_one_bate( gda);
write_one_bate( rda);
write_one_bate( bda);
// write_res( );
}
//写入所有灯光
void write_all_lamp(void)
{
uint8_t i,j;
for(i=0;i<LEDNUM;i++)
{
for(j=0;j<3;j++)//发送1次8个位 需要24位
{
write_one_bate(lamp[i][j]);
}
}
write_res( );//结束发送复位码
}
void grb_pin_init(void)
{
P0CR |=(1<<2);
P0ODR &=(~(1<<2));
LED=0;
memset(&lampshow,0,sizeof(RGB));
srand(1);
lampshow.num=21;
}
void work_lamp(uint8_t level)
{
uint8_t led;
if(lampshow.level>=80){
lampshow.level-=5;
}
else if(lampshow.level>=40){
lampshow.level-=4;
}
else if(lampshow.level>=20){
lampshow.level-=2;
}
else{
lampshow.level-=1;
}
for(led=0;led<LEDNUM;led++){
if(level==1){
lamp[led][0]=0;
lamp[led][1]=0;
lamp[led][2]=lampshow.level;//蓝
}
else if(level==2){
lamp[led][0]=0;
lamp[led][1]=lampshow.level;
lamp[led][2]=lampshow.level;
}
else if(level==3){
lamp[led][0]=0;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(level==4){
lamp[led][0]=lampshow.level/6;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(level==5){
lamp[led][0]=lampshow.level/2;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(level==6){
lamp[led][0]=lampshow.level;
lamp[led][1]=0;
lamp[led][2]=0;
}
else if(level==7){
lamp[led][0]=lampshow.level;
lamp[led][1]=0;
lamp[led][2]=lampshow.level;
}
}
write_all_lamp();
if(lampshow.level<=0){
lampshow.direction=0;
lampshow.circle++;
}
}
//呼吸灯
void Breath_lamp(uint8_t hk)
{
uint8_t led;
if(lampshow.direction==0){
for(led=0;led<LEDNUM;led++){
if(hk==1){
lamp[led][0]=0;
lamp[led][1]=0;
lamp[led][2]=lampshow.level;//蓝
}
else if(hk==2){
lamp[led][0]=0;
lamp[led][1]=lampshow.level;
lamp[led][2]=lampshow.level;
}
else if(hk==3){
lamp[led][0]=0;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(hk==4){
lamp[led][0]=lampshow.level/6;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(hk==5){
lamp[led][0]=lampshow.level/2;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(hk==6){
lamp[led][0]=lampshow.level;
lamp[led][1]=0;
lamp[led][2]=0;
}
else if(hk==7){
lamp[led][0]=lampshow.level;
lamp[led][1]=0;
lamp[led][2]=lampshow.level;
}
}
write_all_lamp();
if(lampshow.level>=80)
{
lampshow.level+=5;
}
else if(lampshow.level>=40)
{
lampshow.level+=4;
}
else if(lampshow.level>=20)
{
lampshow.level+=2;
}
else
{
lampshow.level+=1;
}
if(lampshow.level>=100){
lampshow.direction=1;
}
}
else{
if(lampshow.level>=80){
lampshow.level-=5;
}
else if(lampshow.level>=40){
lampshow.level-=4;
}
else if(lampshow.level>=20){
lampshow.level-=2;
}
else{
lampshow.level-=1;
}
for(led=0;led<LEDNUM;led++){
if(hk==1){
lamp[led][0]=0;
lamp[led][1]=0;
lamp[led][2]=lampshow.level;//蓝
}
else if(hk==2){
lamp[led][0]=0;
lamp[led][1]=lampshow.level;
lamp[led][2]=lampshow.level;
}
else if(hk==3){
lamp[led][0]=0;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(hk==4){
lamp[led][0]=lampshow.level/6;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(hk==5){
lamp[led][0]=lampshow.level/2;
lamp[led][1]=lampshow.level;
lamp[led][2]=0;
}
else if(hk==6){
lamp[led][0]=lampshow.level;
lamp[led][1]=0;
lamp[led][2]=0;
}
else if(hk==7){
lamp[led][0]=lampshow.level;
lamp[led][1]=0;
lamp[led][2]=lampshow.level;
}
}
write_all_lamp();
if(lampshow.level<=0){
lampshow.direction=0;
lampshow.circle++;
// clor++;
}
}
}
void trot_horse_lamp(uint8_t level)
{
memset(lamp,0,sizeof(lamp));
if(level==1){
lamp[lampshow.num][0]=0;
lamp[lampshow.num][1]=0;
lamp[lampshow.num][2]=170;//蓝
}
else if(level==2){
lamp[lampshow.num][0]=0;
lamp[lampshow.num][1]=170;
lamp[lampshow.num][2]=170;//紫
}
else if(level==3){
lamp[lampshow.num][0]=0x00;
lamp[lampshow.num][1]=170;
lamp[lampshow.num][2]=0;//红
}
else if(level==4){
lamp[lampshow.num][0]=20;
lamp[lampshow.num][1]=120;
lamp[lampshow.num][2]=0;//橙色
}
else if(level==5){
lamp[lampshow.num][0]=57;
lamp[lampshow.num][1]=132;
lamp[lampshow.num][2]=0;//黄
}
else if(level==6){
lamp[lampshow.num][0]=170;
lamp[lampshow.num][1]=0;
lamp[lampshow.num][2]=0;//绿
}
else if(level==7){
lamp[lampshow.num][0]=170;
lamp[lampshow.num][1]=0;
lamp[lampshow.num][2]=170;//青
}
write_all_lamp();
lampshow.num++;
if(lampshow.num>=LEDNUM){
lampshow.num=0;
}
else if(lampshow.num==21){
memset(lamp,0,sizeof(lamp));
write_all_lamp();
lampshow.circle++;
}
}
void clor_boot(uint8_t level)
{
lampshow.level++;
if(lampshow.level==3){
memset(lamp,0,sizeof(lamp));
if(level==1){
lamp[0][0]=0;
lamp[0][1]=0;
lamp[0][2]=170;//蓝
}
else if(level==2){
lamp[0][0]=0;
lamp[0][1]=170;
lamp[0][2]=170;//紫
}
else if(level==3){
lamp[0][0]=0x00;
lamp[0][1]=170;
lamp[0][2]=0;//红
}
else if(level==4){
lamp[0][0]=20;
lamp[0][1]=120;
lamp[0][2]=0;//橙色
}
else if(level==5){
lamp[0][0]=57;
lamp[0][1]=132;
lamp[0][2]=0;//黄
}
else if(level==6){
lamp[0][0]=170;
lamp[0][1]=0;
lamp[0][2]=0;//绿
}
else if(level==7){
lamp[0][0]=170;
lamp[0][1]=0;
lamp[0][2]=170;//青
}
write_all_lamp();
}
else if(lampshow.level==4){
memset(lamp,0,sizeof(lamp));
if(level==1){
lamp[20][0]=0;
lamp[20][1]=0;
lamp[20][2]=170;//蓝
}
else if(level==2){
lamp[20][0]=0;
lamp[20][1]=170;
lamp[20][2]=170;//紫
}
else if(level==3){
lamp[20][0]=0x00;
lamp[20][1]=170;
lamp[20][2]=0;//红
}
else if(level==4){
lamp[20][0]=20;
lamp[20][1]=120;
lamp[20][2]
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
stm32的DS18B20例程 (102个子文件)
timer0.__i 158B
motor.__i 154B
iap.__i 146B
rgb.__i 146B
key.__i 146B
STARTUP.A51 6KB
ATM8F8040K DEMO.uvgui.admin 178KB
ATM8F8040K DEMO.uvgui.Administrator 176KB
ATM8F8040K DEMO.uvgui.aiit 177KB
ATM8F8040K DEMO 80KB
rgb.c 50KB
key.c 10KB
adc.c 6KB
pwm.c 5KB
ds18b20z.c 4KB
uart0.c 3KB
motor.c 3KB
wakeup.c 3KB
uart1.c 2KB
iap.c 2KB
eint.c 1KB
lpc.c 1KB
cpl.c 1KB
timer0.c 1KB
main.c 923B
sys.c 770B
crc.c 603B
timer2.c 512B
buz.c 260B
rgb.c~ 47KB
ATM8F8040K.h 5KB
main.h 3KB
buz.h 1KB
timer0.h 1KB
rgb.h 1KB
pwm.h 1KB
timer2.h 792B
adc.h 780B
motor.h 588B
api_ext.h 508B
ds18b20z.h 431B
key.h 328B
lpc.h 244B
wakeup.h 232B
uart0.h 220B
uart1.h 211B
iap.h 160B
crc.h 148B
cpl.h 95B
ATM8F8040K DEMO.hex 4KB
ATM8F8040K DEMO.build_log.htm 1KB
ExtDll.iex 19B
ATM8F8040K DEMO.lnp 262B
rgb.lst 127KB
key.lst 37KB
STARTUP.lst 14KB
adc.lst 12KB
motor.lst 11KB
pwm.lst 10KB
ds18b20z.lst 8KB
uart0.lst 8KB
wakeup.lst 6KB
uart1.lst 5KB
iap.lst 4KB
eint.lst 4KB
lpc.lst 4KB
timer0.lst 3KB
main.lst 3KB
io.lst 3KB
cpl.lst 3KB
sys.lst 2KB
crc.lst 2KB
timer2.lst 2KB
buz.lst 2KB
ATM8F8040K DEMO.map 101KB
rgb.obj 131KB
key.obj 31KB
motor.obj 19KB
ds18b20z.obj 18KB
pwm.obj 17KB
adc.obj 17KB
main.obj 15KB
uart0.obj 13KB
timer0.obj 13KB
uart1.obj 13KB
eint.obj 13KB
cpl.obj 12KB
wakeup.obj 12KB
crc.obj 12KB
iap.obj 12KB
io.obj 12KB
buz.obj 12KB
timer2.obj 12KB
lpc.obj 12KB
sys.obj 11KB
STARTUP.obj 819B
f43e17bd64cada55778dd7ddc0689b7.png 19KB
ATM8F8040K DEMO.SBR 49KB
DS18B20-Sheet1.SchDoc 60KB
ATM8F8040K DEMO.uvopt 13KB
共 102 条
- 1
- 2
资源评论
gsshq
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功