#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar count;
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
sbit s4=P1^3;
sbit s5=P1^4;
sbit s6=P1^5;
uchar DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar Digits_of_8DSY[]={0,0,55,0,0,55,0,0} ;
void delay(uint m)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<110;j++);
}
void key()
{
if(P1!=0xff)
{
IE=0;
TR0=0;
if(s1==0)
{
delay(300);
Digits_of_8DSY[0]++;
if(Digits_of_8DSY[0]==10)
Digits_of_8DSY[0]=0;
}
if(s2==0)
{
delay(300);
Digits_of_8DSY[1]++;
if(Digits_of_8DSY[1]==6)
Digits_of_8DSY[1]=0;
}
if(s3==0)
{
delay(300);
Digits_of_8DSY[3]++;
if(Digits_of_8DSY[3]==10)
Digits_of_8DSY[3]=0;
}
if(s4==0)
{
delay(300);
Digits_of_8DSY[4]++;
if(Digits_of_8DSY[4]==6)
Digits_of_8DSY[4]=0;
}
if(s5==0)
{
delay(300);
Digits_of_8DSY[6]++;
if(Digits_of_8DSY[7]!=2)
{
if(Digits_of_8DSY[6]==10)
Digits_of_8DSY[6]=0;
}
else
if(Digits_of_8DSY[6]==4)
Digits_of_8DSY[6]=0;
}
if(s6==0)
{
delay(300);
Digits_of_8DSY[7]++;
if(Digits_of_8DSY[6]==0||Digits_of_8DSY[6]==1||Digits_of_8DSY[6]==2||Digits_of_8DSY[6]==3)
{
if(Digits_of_8DSY[7]==3)
Digits_of_8DSY[7]=0;
}
else
{
if(Digits_of_8DSY[7]==2)
Digits_of_8DSY[7]=0;
}
}
}
if(P1==0xff)
{
IE=0x82;
TR0=1;
}
}
void main()
{
uchar i,j;
P0=0x00;
P2=0xff;
count=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IE=0x82;
TR0=1;
while(1)
{
key();
j=0x7f;
for(i=7;i!=-1;i--)
{
j=_crol_(j,1);
P2=j;
P0=DSY_CODE[Digits_of_8DSY[i]];
delay(2);
}
}
}
void time0() interrupt 1
{
uchar i;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++count!=20) return;
count=0;
Digits_of_8DSY[0]++ ;
for(i=0;i<=7;i++)
{
if(Digits_of_8DSY[0]==10)
{
Digits_of_8DSY[0]=0;
Digits_of_8DSY[1]++;
if(Digits_of_8DSY[1]==6)
{
Digits_of_8DSY[1]=0;
Digits_of_8DSY[3]++;
if(Digits_of_8DSY[3]==10)
{
Digits_of_8DSY[3]=0;
Digits_of_8DSY[4]++;
if(Digits_of_8DSY[4]==6)
{
Digits_of_8DSY[4]=0;
Digits_of_8DSY[6]++;
if(Digits_of_8DSY[6]==10)
{
Digits_of_8DSY[6]=0;
Digits_of_8DSY[7]++;
}
if(Digits_of_8DSY[7]==2&&Digits_of_8DSY[6]==4)
{
Digits_of_8DSY[6]=0;
Digits_of_8DSY[7]=0;
}
P0=DSY_CODE[Digits_of_8DSY[i]];
}
}
}
}
else break;
}
}
51单片机数码管显示时钟(C语言)_电子/电路_工程科技_专业资料。//以下程序都是在 VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是 STC89C52RC...
单片机按键扫描数码管显示C语言程序_工学_高等教育_教育专区。电子科学与技术...闪烁时灭时间 1s //闪烁时亮时间 1s //小数点的段数 #define #define #...
51单片机C语言程序数码管显示实验指导书_信息与通信_工程科技_专业资料。本实验指导书与北方蓝芯科技开发有限公司的NBC-51配套,全部用C语言编写,程序和注释清楚...
AVR单片机 mega16 C语言 数码管程序_专业资料。AVR单片机 mega16 C语言 数码...C 环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10 硬件:ATMEGA16芯片 日期...
24 小时,数码管分别实现 23 小时 59 秒 59 分的显示,为简单的电子时钟设计...程序代码如下: ORG 0000H LJMP START ORG 0030H START: MOV SP,#5FH MOV ...
单片机按键扫描数码管显... 14页 2下载券 单片机数码管可调时间c语... 33...()interrupt 3 //定时器 t1 服务子程序 { num++; if(num==4000) { TR...
单片机数码管可调时间c语言程序 文档_信息与通信_工程科技_专业资料 暂无评价0人阅读0次下载举报文档 单片机数码管可调时间c语言程序 文档_信息与通信_工程科技...
单片机C语言之两位数码管动态显示_电子/电路_工程科技_专业资料。单片机C语言之... 单片机c语言版数码管动态... 5页 1下载券 单片机C语言程序(数码管... ...
单片机C语言模块化编程之数码管显示实时温度篇_信息与通信_工程科技_专业资料。...(50000); //读取温度有一段时间,先让他等待一段时间否则下一刻显 示的将会...
单片机 led 显示程序 C 语言的悬赏分:20
热门文档