好文档 - 专业文书写作范文服务资料分享网站

51单片机输入数字并数码管倒计时典型C语言代码

天下 分享 时间: 加入收藏 我要投稿 点赞

51单片机输入数字并数码管倒计时典型C语言代码

使用STC89C52RC单片机,外接数码管、蜂鸣器。改代码非常适合初学者学习借鉴。

#include

#define uchar unsigned char #define uint unsigned int sbit dula=P0^0; sbit wela=P0^1; sbit p17=P0^3; sbit p02=P0^2; sbit p32=P3^2; sbit p04=P0^4; uchar count; uint Sumnum; uint circle,circle1; uint time;

float top;//定义top为浮点型变量 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar temp,count;

uint bian,num,e,d,c,b,a; void delay(uchar x) { uchar a1,b1; for(a1=x;a1>0;a1--) for(b1=200;b1>0;b1--); }

void chaishu(uint sum1) { uint e1,b1,c1,d1; e=sum1/10000;////e=6* e1=sum1000;///e1=5535 d=e1/1000;///////d=5* d1=e100;//////d1=535 c=d1/100;////////c=5* c1=d10;///////c1=35 b=c1/10;/////////b=3* b1=c1;////////b1=5 a=b1;////////////a=5* }

void display(uint wan,uint qian,uint bai,uint shi,uint ge) { wela=1; P2=0xfe; wela=0; P2=0xff; dula=1; P2=table[wan]; dula=0; delay(3); P2=0xff; wela=1; P2=0xfd; wela=0; P2=0xff; dula=1; P2=table[qian]; dula=0; delay(3); P2=0xff; wela=1; P2=0xfb; wela=0; P2=0xff; dula=1; P2=table[bai]; dula=0; delay(3); P2=0xff; wela=1; P2=0xf7; wela=0; P2=0xff; dula=1; P2=table[shi]; dula=0; delay(3); P2=0xff; wela=1; P2=0xef; wela=0; P2=0xff; dula=1; P2=table[ge];

dula=0; delay(3); P2=0xff; }

///////////////////////////////////////switch void suanbian(uchar cont) {

switch (cont)//松开按键后对bian进行赋值 { case 1: { bian=num;

break;//跳出switch

}

case 2: { bian=(bian*10)+num; break;//跳出switch }

case 3: { bian=(bian*10)+num;

break;//跳出switch

} case 4: { bian=(bian*10)+num; break;//跳出switch } case 5: { bian=(bian*10)+num; break;//跳出switch } }//switch结束 }

///////////////////////////////////switch void keyscan() {

////////////////////////////////////////////////////////////////////////////////////////////////////以下测456 P1=0xfd;// P1口等于11111101 temp=P1;// temp等于P1口的值 if(P1!=0xfd)// 如果P1口不等于11111101 { delay(100);//延时100毫秒 if(P1!=0xfd)//再测一下如果P1口是否等于11111101 { 选择。

switch(temp)//如果不等于,那么检测temp取到的P1口的值并进入{

case 0xed: { num=4; count=count+1;

}//如果=0xed那么num设定为4 break;//跳出switch case 0xdd: { num=5; count=count+1;

}//如果=0xed那么num设定为5

break;//跳出switch case 0xbd: { num=6; count=count+1; }//如果=0xed那么num设定为6 break;//跳出switch }//switch结束

while(P1!=0xfd);//此处为一个等待按键松开的while语句:没松开就一直停在while中 suanbian(count); //chaishu(bian); }//第二个if结束 }//第一个if结束

///////////////////////////////////////////////////////////////////////////////////////////////////////////////以下测123 P1=0xfe;// P1口等于11111101 temp=P1;// temp等于P1口的值

if(P1!=0xfe)// 如果P1口不等于11111101 { delay(100);//延时100毫秒 if(P1!=0xfe)//再测一下如果P1口是否等于11111101 {

switch(temp)//如果不等于,那么检测temp取到的P1口的值并进入{

选择。

case 0xee: { num=1; count=count+1;

}//如果=0xed那么num设定为4 break;//跳出switch case 0xde: { num=2; count=count+1;

}//如果=0xed那么num设定为5 break;//跳出switch case 0xbe: { num=3; count=count+1;

}//如果=0xed那么num设定为6

break;//跳出switch }//switch结束 while(P1!=0xfe);//此处为一个等待按键松开的while语句:没松开就一直停在while中 suanbian(count); //chaishu(bian); }//第二个if结束 }//第一个if结束

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////以下测789 P1=0xfb;// P1口等于11111101 temp=P1;// temp等于P1口的值 if(P1!=0xfb)// 如果P1口不等于11111101 { delay(100);//延时100毫秒 if(P1!=0xfb)//再测一下如果P1口是否等于11111101 {

51单片机输入数字并数码管倒计时典型C语言代码

51单片机输入数字并数码管倒计时典型C语言代码使用STC89C52RC单片机,外接数码管、蜂鸣器。改代码非常适合初学者学习借鉴。#include#defineucharunsignedchar#defineuintunsignedintsbitdula=P0^0;sbitwela=P0
推荐度:
点击下载文档文档为doc格式
2np6x4ka3o7zlrl1bkfq6d7jn4l91z0136i
领取福利

微信扫码领取福利

微信扫码分享