0220
来源:互联网 发布:小黑裙香水淘宝 编辑:程序博客网 时间:2024/05/13 18:26
遥控器输入,用LCD显示灯的号码
- #include<reg52.h>
- #include"./uart/uart.h"
- #include"./delay/delay.h"
- #include"./lcd/lcd.h"
- sbit IR_IN = P3^2;
- sbit led1 = P1^0;
- sbit led2 = P1^1;
- sbit led3 = P1^2;
- sbit led4 = P1^3;
- sbit led5 = P1^4;
- sbit led6 = P1^5;
- sbit led7 = P1^6;
- sbit led8 = P1^7;
- unsigned int irtime;
- unsigned char temp;
- unsigned char IRcord[4];
- unsigned char putbuf[35];
- bit startflag =0;
- bit irok,irpro_ok;
- void timer0_init()
- {
- EA=1;
- TMOD |= 0X02;
- TH0 = 0;
- ET0 = 1;
- TR0 = 1;
- }
- void timer0_isr() interrupt 1
- {
- irtime++; //0.256ms 引导码 s:53 0:4 1:9
- }
- void int0_init()
- {
- IT0 = 1; //设置外部中断的触发方式
- EA = 1;
- EX0 = 1;
- }
- unsigned char irdata[33];
- unsigned char bitnum = 0;
- void int0_isr() interrupt 0
- {
- if(startflag)
- {
- if((irtime > 40) && (irtime < 60))
- {
- bitnum = 0;
- }
- /*if((irtime > 6) && (irtime < 12))
- {
- temp = 1;
- }
- if((irtime > 0) && (irtime < 6))
- {
- temp = 0;
- }*/
- //irdata[bitnum] = temp;
- irdata[bitnum] = irtime;
- bitnum++;
- irtime = 0;
- if(33 == bitnum)
- {
- bitnum = 0;
- irok = 1;
- startflag = 0;
- }
- }
- else
- {
- irtime = 0;
- startflag = 1;
- }
- }
- void Ircordpro(void)
- {
- unsigned char i, j, k;
- unsigned char cord,value;
- k=1;
- for(i=0;i<4;i++)
- {
- for(j=1;j<=8;j++)
- {
- cord=irdata[k];
- if(cord>6)
- value|=0x80;
- if(j<8)
- {
- value>>=1;
- }
- k++;
- }
- IRcord[i] = value;
- value=0;
- }
- irpro_ok=1;
- }
- void LED()
- {
- switch(IRcord[2])
- {
- case 0x45: led1 = ~led1; break;
- case 0x46: led2 = ~led2; break;
- case 0x47: led3 = ~led3; break;
- case 0x44: led4 = ~led4; break;
- case 0x40: led5 = ~led5; break;
- case 0x43: led6 = ~led6; break;
- case 0x07: led7 = ~led7; break;
- case 0x15: led8 = ~led8; break;
- default: break;
- }
- }
- void LCD()
- {
- switch(IRcord[2])
- {
- case 0x45: LCD_Write_String(5,1,"01"); break;
- case 0x46: LCD_Write_String(5,1,"02"); break;
- case 0x47: LCD_Write_String(5,1,"03"); break;
- case 0x44: LCD_Write_String(5,1,"04"); break;
- case 0x40: LCD_Write_String(5,1,"05"); break;
- case 0x43: LCD_Write_String(5,1,"06"); break;
- case 0x07: LCD_Write_String(5,1,"07"); break;
- case 0x15: LCD_Write_String(5,1,"08"); break;
- case 0x09: LCD_Write_String(5,1,"09"); break;
- case 0x16: LCD_Write_String(5,1,"10"); break;
- case 0x19: LCD_Write_String(5,1,"11"); break;
- case 0x0d: LCD_Write_String(5,1,"12"); break;
- case 0x0c: LCD_Write_String(5,1,"13"); break;
- case 0x18: LCD_Write_String(5,1,"14"); break;
- case 0x5e: LCD_Write_String(5,1,"15"); break;
- case 0x08: LCD_Write_String(5,1,"16"); break;
- case 0x1c: LCD_Write_String(5,1,"17"); break;
- case 0x5a: LCD_Write_String(5,1,"18"); break;
- case 0x42: LCD_Write_String(5,1,"19"); break;
- case 0x52: LCD_Write_String(5,1,"20"); break;
- case 0x4a: LCD_Write_String(5,1,"21"); break;
- default: break;
- }
- }
- void main()
- {
- unsigned char i;
- timer0_init();
- int0_init();
- uart_init();
- LCD_Init();
- LCD_Clear();
- while(1)
- {
- if(irok == 1)
- {
- /* putbuf[0] = irdata[0] / 10+0x30;
- putbuf[1] = irdata[0] % 10+0x30;
- for(i = 0; i<32;i++)
- {
- putbuf[i+2]=irdata[i+1] +0x30;
- }
- putbuf[34] = '\0';
- uart_send_string(putbuf);
- uart_send_string("\n");*/
- Ircordpro();
- irok = 0;
- }
- if(irpro_ok)
- {
- for(i=0;i<4;i++)
- {
- uart_send_byte(IRcord[i]);
- delay_ms(1);
- }
- LED();
- LCD();
- irpro_ok = 0;
- }
- }
- }
0 0
- 0220
- 0220
- 0220HTML学习
- 课程学习归纳总结(0220)
- 【小阅读^大脑袋】0220 NO.323
- 升级日志_工作计划0220-0224
- 2017-0220-leetcode-043 Multiply Strings
- js让头部悬浮
- 内存管理---物理内存、虚拟内存
- JVM-GC算法与种类
- Android应用更新库
- git笔记
- 0220
- Intel系列CPU架构的发展史
- EM 13CR2 相关问题汇总
- 图的基本存储的基本方式三
- Java日期格式化多位数表示规则
- [Cordova/Phonegap] 打包Cordova App时,合并所有插件的js文件并压缩,提升App加载速度
- javascript 继承详解
- Java 向mysql插入中文数据乱码问题
- 由 B-/B+树看 MySQL索引结构