久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
51單片機(jī)定時器輸出三路PWM,實(shí)現(xiàn)三基色合成演示裝置的源碼
[打印本頁]
作者:
1715110401
時間:
2017-11-15 19:00
標(biāo)題:
51單片機(jī)定時器輸出三路PWM,實(shí)現(xiàn)三基色合成演示裝置的源碼
51單片機(jī)用自帶定時器輸出三路PWM的資料分享,很實(shí)用的資料,用來實(shí)現(xiàn)三基色合成演示裝置
下面是單片機(jī)源程序:
/**************************************************************
**********************三基色合成演示裝置***********************
*************************淮陰師范學(xué)院**************************
功能說明:通過按鍵調(diào)節(jié)三個燈的亮度,并在串口屏上面精確的調(diào)節(jié)亮度
并把當(dāng)前的亮度反饋在串口屏上面顯示
***************************************************************
**************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit PWMred = P1^5;
sbit PWMblu = P1^6;
sbit PWMgre = P1^7;
sbit KeyRup = P2^2;
sbit KeyRdown = P2^1;
sbit KeyBup = P2^5;
sbit KeyBdown = P2^7;
sbit KeyGup = P2^3;
sbit KeyGdown = P2^6;
sbit KeyAll = P2^0;
sbit KeyNull = P2^4;
sbit LED1 = P0^0;//
sbit LED2 = P0^1;//
sbit LED3 = P0^7;
sbit LED4 = P0^5;
sbit LED5 = P0^3;
sbit LED6 = P0^4;
sbit LED7 = P0^6;
sbit LED8 = P0^2;
sbit LED9 = P1^0;
unsigned char timerR=0, timerG=0, timerB=0;
unsigned char timerNumG=0,timerNumB=0,timerNumR=0,timerNumA=0,timerNumN=0;
uchar rec_data[5];
uchar rec_num=0;
uchar recdata,j=0;
uchar dat[13]={' ',' ','.','v','a','l','=',' ',' ',' ',0XFF,0XFF,0XFF};
void system_Ini()
{
IP=0x10;
TMOD|= 0x01;
TH0 = 0xFF; //11.0592
TL0 = 0xCE;
TR0 = 1;
ET0=1;
//IE =0x8A;
}
void delay(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void senddata(uchar dat)
{
ES = 0; //允許串口中斷
SBUF =dat;
while(!TI);
TI = 0;
ES = 1; //允許串口中斷
}
main()
{
system_Ini();
//串口初始化
SCON=0x50; //設(shè)定串口工作方式
PCON=0x00; //波特率不倍增
TMOD=0x21; //定時器1工作于8位自動重載模式, 用于產(chǎn)生波特率
EA=1;
ES = 1; //允許串口中斷
TL1=0xfd;
TH1=0xfd; //波特率9600
TR1=1;
while(1)
{
//*******************紅燈變亮*******************
if(KeyRup==0)
{
delay(8);
if(KeyRup==0)
{
while(!KeyRup==1)
{
timerNumR++;
dat[0]='h';
dat[1]=48;
dat[7]=timerNumR/100+48;
dat[8]=timerNumR%100/10+48;
dat[9]=timerNumR%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=(timerNumR*100/255)/100+48;
dat[8]=(timerNumR*100/255)%100/10+48;
dat[9]=(timerNumR*100/255)%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
if(timerNumR>=255)
{
timerNumR=254;
}
delay(5);
}
}
}
//*******************紅燈變暗*******************
if(KeyRdown==0)
{
delay(8);
if(KeyRdown==0)
{
while(!KeyRdown==1)
{
timerNumR--;
dat[0]='h';
dat[1]=48;
dat[7]=timerNumR/100+48;
dat[8]=timerNumR%100/10+48;
dat[9]=timerNumR%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=(timerNumR*100/255)/100+48;
dat[8]=(timerNumR*100/255)%100/10+48;
dat[9]=(timerNumR*100/255)%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
if(timerNumR<=0)
{
timerNumR=1;
}
delay(5);
}
}
}
//*******************綠燈變亮*******************
if(KeyGup==0)
{
delay(8);
if(KeyGup==0)
{
while(!KeyGup==1)
{
timerNumG++;
dat[0]='h';
dat[1]=49;
dat[7]=timerNumG/100+48;
dat[8]=timerNumG%100/10+48;
dat[9]=timerNumG%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=(timerNumG*100/255)/100+48;
dat[8]=(timerNumG*100/255)%100/10+48;
dat[9]=(timerNumG*100/255)%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
if(timerNumG>=255)
{
timerNumG=254;
}
delay(5);
}
}
}
//*******************綠燈變暗********************
if(KeyGdown==0)
{
delay(8);
if(KeyGdown==0)
{
while(!KeyGdown==1)
{
timerNumG--;
dat[0]='h';
dat[1]=49;
dat[7]=timerNumG/100+48;
dat[8]=timerNumG%100/10+48;
dat[9]=timerNumG%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=(timerNumG*100/255)/100+48;
dat[8]=(timerNumG*100/255)%100/10+48;
dat[9]=(timerNumG*100/255)%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
if(timerNumG<=0)
{
timerNumG=1;
}
delay(5);
}
}
}
//*******************藍(lán)燈變亮*******************
if(KeyBup==0)
{
delay(8);
if(KeyBup==0)
{
while(!KeyBup==1)
{
timerNumB++;
dat[0]='h';
dat[1]=50;
dat[7]=timerNumB/100+48;
dat[8]=timerNumB%100/10+48;
dat[9]=timerNumB%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=(timerNumB*100/255)/100+48;
dat[8]=(timerNumB*100/255)%100/10+48;
dat[9]=(timerNumB*100/255)%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
if(timerNumB>=255)
{
timerNumB=254;
}
delay(5);
}
}
}
//*******************藍(lán)燈變暗*******************
if(KeyBdown==0)
{
delay(8);
if(KeyBdown==0)
{
while(!KeyBdown==1)
{
timerNumB--;
dat[0]='h';
dat[1]=50;
dat[7]=timerNumB/100+48;
dat[8]=timerNumB%100/10+48;
dat[9]=timerNumB%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=(timerNumB*100/255)/100+48;
dat[8]=(timerNumB*100/255)%100/10+48;
dat[9]=(timerNumB*100/255)%100%10+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
if(timerNumB<=0)
{
timerNumB=1;
}
delay(5);
}
}
}
//***********************全亮*********************
if(KeyAll==0)
{
delay(8);
if(KeyAll==0)
{
timerNumR=timerNumB=timerNumG=255;
dat[0]='h';
dat[1]=48;
dat[7]=2+48;
dat[8]=5+48;
dat[9]=5+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=1+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='h';
dat[1]=49;
dat[7]=2+48;
dat[8]=5+48;
dat[9]=5+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=1+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='h';
dat[1]=50;
dat[7]=2+48;
dat[8]=5+48;
dat[9]=5+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=1+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
}
}
//***********************不亮********************
if(KeyNull==0)
{
delay(8);
if(KeyNull==0)
{
timerNumR=timerNumG=timerNumB=0;
dat[0]='h';
dat[1]=48;
dat[7]=0+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=0+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='h';
dat[1]=49;
dat[7]=0+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=0+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='h';
dat[1]=50;
dat[7]=0+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
dat[0]='n';
dat[7]=0+48;
dat[8]=0+48;
dat[9]=0+48;
for(j=0;j<13;j++)
{
senddata(dat[j]);
}
}
}
}
}
//定時器0中斷處理函數(shù),用于產(chǎn)生PWM
void T1zd(void) interrupt 1 //using 1
{
TH0 = 0xFF;
TL0 = 0xCE;
timerR++;
timerG++;
timerB++;
if(timerR>=255) timerR=0;
if(timerR<timerNumR) PWMred=1;
else PWMred=0;
if(timerG>=255) timerG=0;
if(timerG<timerNumG) PWMgre=1;
else PWMgre=0;
if(timerB>=255) timerB=0;
if(timerB<timerNumB) PWMblu=1;
else PWMblu=0;
}
//串口接收數(shù)據(jù)處理
void deal()
{
rec_num=0;
if(rec_data[4]==0x01)
{
timerNumR=rec_data[0];
LED9=0;
delay(5);
}
if(rec_data[4]==0x02)
{
timerNumG=rec_data[0];
}
if(rec_data[4]==0x03)
{
timerNumB=rec_data[0];
}
}
//串口接收中斷,數(shù)據(jù)包頭為0x10,第二個字節(jié)為有用的數(shù)值,第六個字節(jié)為數(shù)據(jù)標(biāo)志,最后兩個字節(jié)為數(shù)據(jù)結(jié)束校驗(yàn)
void serial() interrupt 4 //using 3
{
ES = 0;
if(RI==1)
{
RI=0;
recdata=SBUF;
if(rec_num==0)
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
三基色合成演示裝置程序.zip
(45.88 KB, 下載次數(shù): 22)
2017-11-15 18:59 上傳
點(diǎn)擊文件名下載附件
51用定時器輸出三路PWM,實(shí)現(xiàn)三基色合成演示裝置
下載積分: 黑幣 -5
作者:
lxa0
時間:
2017-11-15 22:05
這個還不錯~~~~~~~~~~~
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
毛色毛片免费看
|
欧美日韩中文国产一区发布
|
久久亚洲春色中文字幕久久久
|
欧美极品在线播放
|
91激情电影
|
久久精品亚洲精品国产欧美
|
国产98在线 | 免费,
|
免费激情网站
|
欧洲精品码一区二区三区免费看
|
日韩二三区
|
欧美精品欧美精品系列
|
亚洲视频在线观看免费
|
国产精品国产馆在线真实露脸
|
aaaa日韩
|
国产成人精品久久二区二区
|
久久一区精品
|
99这里只有精品视频
|
欧美综合一区二区三区
|
免费一区二区三区
|
国产精品一区二区免费
|
久国久产久精永久网页
|
亚洲精品国产第一综合99久久
|
中文字幕一区二区三区四区不卡
|
亚洲一区二区三区在线视频
|
精品一区二区久久久久久久网站
|
亚洲欧美日韩国产综合
|
美女视频黄色片
|
免费观看av
|
成人影视网
|
91免费视频观看
|
国产999精品久久久久久
|
国产免费视频
|
一区亚洲
|
欧美日本一区二区
|
国产免费又黄又爽又刺激蜜月al
|
欧美性生活网
|
91精品国产91久久久久游泳池
|
精品国产欧美在线
|
国产一区二区不卡
|
久久久国产一区
|
久久一区二区av
|