久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機紅外遙控12864顯示源程序分享
[打印本頁]
作者:
liqingb
時間:
2018-1-24 08:24
標題:
51單片機紅外遙控12864顯示源程序分享
51單片機紅外遙控12864顯示
單片機源程序如下:
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^5; //命令/數據選擇
sbit RW=P3^6; //讀寫口
sbit E=P3^4; //鎖存控制
sbit PSB=P3^1; //串并選擇
sbit IR=P3^2; //紅外接口標志
bit irpro_ok,irok;
uchar code st0[]={"****遙控車***"};
uchar code st1[]={"暫停"};
uchar code st2[]={"床前明月光李疑是地上霜白舉頭望明月唐低頭思故鄉"};
uchar code st3[]={"去年今日此門中,人面桃花相映紅,人面不知何處去,桃花依舊笑春風。"};
uchar irtime; //紅外用全局變量
uchar IRcord[4];
uchar irdata[33];
uchar x;
void Ir_work(void);
void Ircordpro(void);
void delay(uint t)
{
uchar j;
for(;t>0;t--)
for(j=120;j>0;j--);
}
/*******************************************************12864**************************************/
void write_com(uchar cmdcode)
{
RS=0; //命令/數據選擇,為0時選擇命令
RW=0; //讀/寫選擇,為0時選擇寫
E=1; //使能
P0=cmdcode; //送入命令
delay(50); //等待寫入
E=0; //關閉讀寫
delay(40);
}
void write_date(uchar date)
{
RS=1; //命令/數據選擇,為1時選擇數據
RW=0; //讀/寫選擇,為0時選擇寫
E=1; //使能
P0=date; //送入數據
delay(10); //等待寫入
E=0; //關閉讀寫
}
void init() //初始化
{
PSB=1;
delay(5);
write_com(0x30);
delay(10);
write_com(0x0c);
delay(5);
write_com(0x01);
delay(5);
write_com(0x06);
}
/****************************************************顯示****************************************/
void di() // 顯示
{
uchar num,l;
write_date(0x00);
write_com(0x01);
switch(x)
{
case 0x18: num=1;break;
case 0x52: num=2;break;
case 0x08: num=3;break;
case 0x5a: num=0;break;
case 0x1c: num=4;break;
case 0x42: num=5;break;
case 0x4A: num=6;break;
}
if(num==0)
{
write_com(0x8e);
write_date(0x1a);
P1=0XF6;
}
else if(num==1)
{
write_com(0x83);
write_date(0x18);
P1=0XFE;
}
else if(num==2)
{
write_com(0x9b);
write_date(0x19);
P1=0XFD;
}
else if(num==3)
{
write_com(0x89);
write_date(0x1b);
P1=0XFB;
}
else if(num==4)
{
write_com(0x8a);
while(st1[l]!='\0')
{
write_date(st1[l]);
l++;
delay(100);
}
}
}
void tim0_isr (void) interrupt 1 using 1
{
irtime++; //用于計數2個下降沿之間的時間
}
void EX0_ISR (void) interrupt 0 //外部中斷0服務函數
{
static unsigned char i; //接收紅外信號處理
static bit startflag; //是否開始處理標志位
if(startflag)
{
if(irtime<63&&irtime>=33)//引導碼 TC9012的頭碼,9ms+4.5ms
i=0;
irdata[i]=irtime;//存儲每個電平的持續時間,用于以后判斷是0還是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{
irtime=0;
startflag=1;
}
}
void TIM0init(void)//定時器0初始化
{
TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
TH0=0x00; //重載值
TL0=0x00; //初始化值
ET0=1; //開中斷
TR0=1;
}
void EX0init(void)
{
IT0 = 1; //指定外部中斷0下降沿觸發,INT0 (P3.2)
EX0 = 1; //使能外部中斷
EA = 1; //開總中斷
}
void Ir_work(void)//紅外鍵值散轉程序
{
x=IRcord[2];
di();
irpro_ok=0;//處理完成標志
}
void Ircordpro(void)//紅外碼值處理函數
{
unsigned char i, j, k,cord,value;
k=1;
for(i=0;i<4;i++) //處理4個字節
{
for(j=1;j<=8;j++) //處理1個字節8位
{
cord=irdata[k];
if(cord>7)//大于某值為1,這個和晶振有絕對關系,這里使用12M計算,此值可以有一定誤差
value=value|0x80;
if(j<8)
{
value>>=1;
}
k++;
}
IRcord[i]=value;
value=0;
}
irpro_ok=1;//處理完畢標志位置1
}
void main(void)
{
uint z;
init();
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
紅外遙控車.rar
(31.32 KB, 下載次數: 42)
2018-1-24 08:22 上傳
點擊文件名下載附件
51單片機
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成在线人视频免费视频
|
一区二区三区电影在线观看
|
亚洲一级毛片
|
精品在线一区
|
成人精品一区二区
|
国产日韩一区二区三免费高清
|
亚洲精品一区在线
|
99re热这里只有精品视频
|
欧美αv
|
国产精品国产三级国产aⅴ无密码
|
日韩精品一区二区三区在线播放
|
欧美激情五月
|
麻豆av一区二区三区久久
|
日日夜夜草
|
久久久xx
|
国产精品视频久久久久
|
日本中文在线视频
|
日本一区二区三区视频在线
|
91久久国产综合久久
|
欧美一区二区三区国产精品
|
精品九九
|
99精品国产成人一区二区
|
欧洲尺码日本国产精品
|
欧美福利视频
|
日韩电影免费观看中文字幕
|
毛片久久久
|
日本一区二区高清不卡
|
国产97在线看
|
亚洲国产精品久久久久秋霞不卡
|
91精品国产自产精品男人的天堂
|
日韩精品欧美精品
|
午夜影院在线观看
|
亚洲欧美日韩在线
|
91久久精品国产91久久
|
欧美日韩中文国产一区发布
|
国产农村妇女毛片精品久久麻豆
|
91视频一区
|
亚洲在线日韩
|
国产高清精品在线
|
国产一区二区视频在线
|
亚洲成人一二三
|