|
单片机课设方案,供大家学习
程序如下:
#include<AT89X51.H>
#define uchar unsigned char
uchar xdata *ad_adr;
uchar n=0;
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
sbit led7=P2^6;
sbit led8=P2^7;
bit bk=1;
unsigned char LED1,LED2,LED3,LED4,LED5;
unsigned char idata led_data[3];
uchar
code
led_segment[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x0,0x0};
uchar
code
led_segment2[12]={0xBF,0x86,0xDB,0xcF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x0,0x80};
void delay2ms();
unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned char timecount;
bit flag;
unsigned long x,y;
float z;
void delay(unsigned int i)
{
while(i)i--;
}
void display(void)
{
if((x>0)&(x<1000))
{
y=x;
LED1=y%10;
LED2=(y/10)%10;
LED3=(y/100)%10;
LED4=y/1000;
P2 = 0xff;
delay(2);
led7=0;
P1=led_segment[LED1];
led1=0;
delay(100);
led1=1;
P1=led_segment[LED2];
led2=0;
delay(100);
led2=1;
P1=led_segment[LED3];
led3=0;
delay(100);
led3=1;
P1=led_segment[LED4];
led4=0;
delay(100);
led4=1;
bk=!bk;
}
if((x>=1000)&(x<10000))
{
z=x/10.0;
y=z;
LED1=y%10;
LED2=(y/10)%10;
LED3=(y/100)%10;
LED4=(y/1000)%10;
LED5=y/10000;
P2 = 0xff;
delay(2);
led8=0;
P1=led_segment[LED1];
led1=0;
delay(100);
led1=1;
P1=led_segment[LED2];
led2=0;
delay(100);
led2=1;
P1=led_segment2[LED3];
led3=0;
delay(100);
led3=1;
P1=led_segment[LED4];
led4=0;
delay(100);
led4=1;
P1=led_segment[LED5];
led5=0;
delay(100);
led5=1;
bk=!bk;
}
}
void main(void)
{
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while(1)
{
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0+1;
while(1)
{
if(bk)*ad_adr=0;
display();
}
dispcount=0;
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
TR1=1;
}
}
}
void t0(void) interrupt 1 using 0
{
T0count++;
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
timecount++;
if(timecount==249)
{
TR0=0;
TR1=0;
timecount=0;
flag=1;
}
}
void delay2ms(void)
{
uchar a,b;
for(a=5;a>0;a--)
for(b=248;b>0;b--);
}
|
-
1.png
(20.68 KB, 下载次数: 22)
原理图
|