基于51单片机的SC2622的315M遥控器设计的原理图如下:
单片机程序源码:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit dula=P3^7;//定义段选引脚
- sbit wela=P3^6;//定义位选引脚
- sbit P30=P3^0;//定义百位控制引脚
- sbit P31=P3^1;//定义十位控制引脚
- sbit P32=P3^2;//定义个位控制引脚
- sbit VCC=P3^3;//定义控制加电信号输出引脚
- sbit UP=P3^4;//定义上升信号输出引脚
- sbit DOWN=P3^5;//定义下降信号输出引脚
- uchar code table[]=
- {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//八段共阳数码管数组
- //uchar code table0[]=
- //{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- //uchar code table1[]=
- //{0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
- void init();//声明初始化程序
- void delayms(uint);//声明延时程序
- void display(uchar,uchar,uchar);//声明数码管显示程序
- void address();//声明地址运算程序
- uint bai,shi,ge,num,k,add,add1,flag,ok,right;
- uchar keyscan(void);//
- /********************初始化程序*************************/
- void init()
- {
- // TMOD=0x11;
- // TH0=(65536-45872)/256;
- // TL0=(65536-45872)%256;
- // TH1=(65536-45872)/256;
- // TL1=(65536-45872)%256;
- // EA=1;
- // TR1=1;
- // ET0=1;
- // ET1=1;
- // TR0=1;
- // P2=0x00;
- // P1=0x00;
- // P3=0;
- k=0;
- bai=0;
- shi=0;
- ge=0;
- ok=0;
- }
- /********************数码管显示程序*************************/
- void display(uchar bai,uchar shi,uchar ge)
- {
- dula=1;
- P2=table[bai];
- dula=0;
- P2=0x00;
- wela=1;
- P30=1;P31=0;P32=0;
- wela=0;
- delayms(2);
- dula=1;
- P2=table[shi];
- dula=0;
- P2=0x00;
- wela=1;
- P30=0;P31=1;P32=0;
- wela=0;
- delayms(2);
- dula=1;
- P2=table[ge];
- dula=0;
- P2=0x00;
- wela=1;
- P30=0;P31=0;P32=1;
- wela=0;
- delayms(2);
- }
- /*******************延时程序*************************/
- void delayms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- /********************键盘扫描程序*************************/
- uchar keyscan(void)
- {
- uchar cord_h,cord_l;
- P0=0x0f;
- cord_h=P0&0x0f;
- if(cord_h!=0x0f)
- {
- delayms(10);
- if(cord_h!=0x0f)
- {
- cord_h=P0&0x0f;
- P0=cord_h|0xf0;
- cord_l=P0&0xf0;
- return(cord_h+cord_l);
- }
- }
- while(cord_h!=0x0f);
- flag=1;
- return(0xff);
- }
- /********************主程序*************************/
- void main()
- {
- uchar key;
- init();
- while(1)
- {
- key=keyscan();
- switch(key)
- {
- case 0x7e: //1
- //ok=0;
- flag=0;
- k=0;
- // address();
- if(ok==1&&right==1)
- {
- //right=0;
- UP=1;
- DOWN=0;
- P1=add;
- VCC=1;
- delayms(1000);
- P1=add1;//display(bai,shi,ge);
- delayms(1000);
- VCC=0;
- UP=0;
- add=0;
- P1=0;
- }
- break;//上升
-
- case 0x7d: //2
- //ok=0;
- flag=0;
- k=0;
- //address();
- if(ok==1&&right==1)
- {
- // right=0;
- DOWN=1;
- UP=0;
- P1=add;
- VCC=1;
- delayms(1000);
- P1=add1;// display(bai,shi,ge);
- delayms(1000);
- VCC=0;
- DOWN=0;
- add=0;
- P1=0;
- }
- break;//下降
-
- // case 0x7b: //3
-
-
- case 0x77: //a
- ok=0;flag=0;right=0;
- break;//取消ok
-
- case 0xbe: //4
- if(flag==1)
- {
- num=3; k=k+1; flag=0;ok=0;right=0;
- }
- break;//3
-
- …………余下代码请下载附件…………
复制代码
下载:
遥控器0328.rar
(1.6 KB, 下载次数: 25)
|