标题:
单片机信号灯课程设计,含源码,原理图
[打印本页]
作者:
doudoul
时间:
2018-5-18 21:48
标题:
单片机信号灯课程设计,含源码,原理图
原理图.png
(125.82 KB, 下载次数: 24)
下载附件
原理图
2018-5-18 21:47 上传
#include "SST89x5x4.h"
#include "Absacc.h"
#define C8255_A XBYTE[0xFF7C] //8255
#define C8255_B XBYTE[0xFF7D]
#define C8255_C XBYTE[0xFF7E]
#define C8255_CON XBYTE[0xFF7F]
sbit P22=P2^2;
sbit P20=P2^0;
sbit P17=P1^7;
unsigned char a[] = {0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
unsigned char key_down;
void int0_isr() interrupt 0 //ía2¿ÖD¶ÏINT0
{
while(P22==0);
{
P17=0;
P1=0;
C8255_B = 0x00;
}
}
void delay(unsigned int time ) //Ñóê±oˉêy
{
unsigned int i;
for(i=0;i<time;i++);
}
void int_timer0() interrupt 1 //¶¨ê±Æ÷0ÖD¶Ï
{
P1=P1^0x33;
TH0=0x88;
TL0=0x00;
}
void keyscan() //é¨ÃèêÇ·ñóD°′¼ü
{
unsigned char cc;
C8255_A = 0x00;
cc = C8255_C;
key_down = (~cc) & 0x0f;
}
void xinhao_1() //×ó×a
{
while(key_down==0)
{
P1=0x80;
delay(20000);
P1=0x87;
delay(20000);
keyscan();
}
}
void xinhao_2() //óò×a
{
while(key_down==0)
{ P1=0x80;
delay(20000);
P1=0xB8;
delay(20000);
keyscan();
}
}
void xinhao_3() //½ô¼±
{
while(key_down==0)
{
P1=0x80;
delay(20000);
P1=0xBF;
delay(20000);
keyscan();
}
}
void xinhao_4() //é23μ
{
while(key_down==0)
{
P1=0x80;
delay(20000);
P1=0xA1;
delay(20000);
keyscan();
}
}
void xinhao_5() //×ó×aé23μ
{
while(key_down==0)
{
P1=0xA0;
delay(20000);
P1=0xA7;
delay(20000);
keyscan();
}
}
void xinhao_6() //óò×aé23μ
{
while(key_down==0)
{
P1=0x81;
delay(20000);
P1=0xB9;
delay(20000);
keyscan();
}
}
void xinhao_7() //é23μ½ô¼±
{
while(key_down==0)
{
P1=0xA1;
delay(20000);
P1=0xBF;
delay(20000);
keyscan();
}
}
void xinhao_8() //×ó×aé23μ½ô¼±
{
while(key_down==0)
{
P1=0xA0;
delay(20000);
P1=0xBF;
delay(20000);
keyscan();
}
}
void xinhao_9() //óò×aé23μ½ô¼±
{
while(key_down==0)
{
P1=0x81;
delay(20000);
P1=0xBF;
delay(20000);
keyscan();
}
}
void xinhao_10() //í£¿¿
{
while(key_down==0)
{
keyscan();
}
ET0=0;
}
void clear() //êyÂë1üÇåáã
{
C8255_B = 0x00;
}
void getkey() //2éÑˉ¼üÅìËù°′ÏÂμÄλÖÃ
{
unsigned char value;
unsigned int i;
C8255_A = 0x0e ; //μúò»áD
value = C8255_C;
switch(value)
{
case (0x0e):
{
C8255_B=a[0]; //DÅoÅ1-×ó×a
xinhao_1();
break;
}
case(0x0d):
{
C8255_B=a[4]; //DÅoÅ5-×ó×aé23μ
xinhao_5();
break;
}
case(0x0b): //DÅoÅ9-óò×aé23μ½ô¼±
{
C8255_B=a[8];
xinhao_9();
break;
}
case(0x0f): //μúò»áDÎT°′¼ü°′ÏÂ
{
break;}
default:
{ P1=0; //μúò»áD±¨¾ˉDÅoÅ
for(i=0;i<10;i++)
{
P20=1;
delay(10);
P20=~P20;
delay(10);
}
}
}
C8255_A = 0x0d ; //μú¶táD
value = C8255_C;
switch(value)
{
case (0x0e): //DÅoÅ2-óò×a
{
C8255_B=a[1];
xinhao_2();
break;
}
case(0x0d): //DÅoÅ6-óò×aé23μ
{
C8255_B=a[5];
xinhao_6();
break;
}
case(0x0b): //DÅoÅ10-í£¿¿
{
C8255_B=a[9];
P1=0x80;
TH0=0x88;
TL0=0x00;
ET0=1;
TR0=1;
delay(30000);
xinhao_10();
break;
}
case(0x0f): //μú¶táDÎT°′¼ü°′ÏÂ
{
break;}
default:
{ clear(); //μú¶táD±¨¾ˉDÅoÅ
P1=0;
for(i=0;i<10;i++)
{
P20=1;
delay(10);
P20=~P20;
delay(10);
}
}
}
C8255_A = 0x0b ; //μúèyáD
value = C8255_C;
switch(value)
{
case (0x0e): //DÅoÅ3-½ô¼±
{
C8255_B=a[2];
xinhao_3();
break;
}
case(0x0d): //DÅoÅ7-é23μ½ô¼±
{
C8255_B=a[6];
xinhao_7();
break;
}
case(0x0b): //DÅoÅμÆ»ØÕy
{C8255_B=a[10];
P1=0;
break;}
case(0x0f): //μúèyáDÎT°′¼ü°′ÏÂ
{
break;}
default:
{ clear(); //μúèyáD±¨¾ˉDÅoÅ
P1=0;
for(i=0;i<10;i++)
{
P20=1;
delay(10);
P20=~P20;
delay(10);
}
}
}
C8255_A = 0x07 ; //μúËÄáD
value = C8255_C;
switch(value)
{
case (0x0e): //DÅoÅ4-é23μ
{
C8255_B=a[3];
xinhao_4();
break;
}
case(0x0d): //DÅoÅ8-×ó×aé23μ½ô¼±
{
C8255_B=a[7];
xinhao_8();
break;
}
case(0x0f): //μúËÄáDÎT°′¼ü°′ÏÂ
{
break;}
default:
{ clear(); //μúËÄáD±¨¾ˉDÅoÅ
P1=0;
for(i=0;i<10;i++)
{
P20=1;
delay(10);
P20=~P20;
delay(10);
}
}
}
}
void main()
{
P1=0x00;
clear();
EX0=1;
IT0=0;
EA=1;
TMOD=0x11;
C8255_CON = 0x81; //82553õê¼»ˉ
while(P22==1)
{
P17=P22;
clear();
keyscan();
if(key_down) //·à¶¶¶ˉ
{
delay(300);
clear();
keyscan();
if(key_down)
{
key_down=0;
getkey();
}
}
}
}
复制代码
作者:
gtljh
时间:
2018-7-3 09:02
8255下面那个4行4列的那个东西怎么跳出来,是什么东西???谢谢!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1