zl程序教程

您现在的位置是:首页 >  其它

当前栏目

8路抢答器(带倒计时)

倒计时
2023-09-14 08:56:48 时间
#include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#define uchar unsigned char

#define uint unsigned int

sbit SPK=P1^2; 

unsigned char code seg[]={0,1,2,3,4,5,6,7}; 

unsigned char code dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

 0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F

uchar keyscan(); //键盘扫描

void play();

/******************************************************************/

/* 延时函数 */

/******************************************************************/

void delay(unsigned int cnt)

 while(--cnt);

void delay1()

 int i,j;

 for(i=200;i i--)

 for(j=1000;j j--);

/******************************************************************/

/* 主函数 */

/******************************************************************/

void main()

 uint gewei,shiwei,i,j,k,flag=1; 

 uchar key; 

 uint time=11;

 while(time--) //十秒倒计时

 if(time==0)

 break; 

 shiwei=dofly[time/10];

 gewei=dofly[time%10];

 for(j=0;j j++) //数码管动态扫描,只显示前两位 

 delay(300); 

 P0=gewei; //段选

 P2=1; //位选

 delay(300); 

 P0=shiwei;

 P2=0; 

 for(k=5;k k--) //无源蜂鸣器响5声

 for(i=0;i i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短

 delay(80); //参数决定发声的频率,估算值,可以自行更改参数并

 SPK=!SPK;

 SPK=1; //喇叭停止工作,间歇的时间,可更改

 delay(80); 

 while(1) //8路抢答器抢答

 key=keyscan(); //调用键盘扫描,

 if(key==0x7e) { P0=dofly[1],P1=0x00;play();}

 if(key==0xbe) { P0=dofly[2],P1=0x00;play();}

 if(key==0xde) { P0=dofly[3],P1=0x00;play();}

 if(key==0xee) { P0=dofly[4],P1=0x00;play();}

 if(key==0x7d) { P0=dofly[5],P1=0x00;play();}

 if(key==0xbd) { P0=dofly[6],P1=0x00;play();}

 if(key==0xdd) { P0=dofly[7],P1=0x00;play();}

 if(key==0xed) { P0=dofly[8],P1=0x00;play();} 

/*------------------------------------------------

 键盘扫描程序

------------------------------------------------ */

uchar keyscan() //键盘扫描函数,使用行列反转扫描法

 uchar cord_h,cord_l;//行列值中间变量

 P3=0xf0; //行线输出全为0

 P1=0xff; 

 cord_h=P3 0xf0; //读入列线值

 if(cord_h!=0x0f) //先检测有无按键按下

 delay(100); //去抖

 if(cord_h!=0x0f)

 cord_h=P3 0xf0; //读入列线值

 P3=cord_h|0x0f; //输出当前列线值

 cord_l=P3 0x0f; //读入行线值

 return(cord_h+cord_l);//键盘最后组合码值

 // return(0x00); //返回该值


800行代码实现春节倒计时与烟花祝福 春节就快要到了,在这里先祝愿大家,2022年,如虎添翼万事圆!吉祥如意平安年,开心快乐幸福年,喜气冲天幸运年,财源滚滚发财年,万事大吉顺心年,美满团圆喜庆年,愿君新年事事顺利,岁岁平安,年年如意!
智慧阿里云,点亮新里程 阿里云可以让使用者更方便,更直接的了解当今社会,让开发者在一些技术上需要解决的问题,阿里云的题库非常丰富,可以帮助我更好的学习知识,在这上面有很多之前想要找却没有找到的软件,同时,阿里云还有很多免费的福利供大家领取。阿里云,你值得拥有!
一起玩转树莓派(4)——用开关控制蜂鸣器发声 在本系列的前几篇博客中,我们使用桌面软件控制过红绿灯,也编程点亮过炫彩的3色LED 灯。在这些实验的过程中,相信你对树莓派GPIO引脚如何输出高低电平,以及如何使用PWM技术来控制电压输出等都有了了解。本篇博客,我们将再探索一些树莓派编程更多新鲜好玩的领域,来尝试使用硬件来控制硬件。
白天我在阿里写代码,入夜还有我的麦克风! 昨天下班,IT小哥过来神神秘秘地说,走吗?去酒吧听我唱歌。 说着往我手里塞了个手牌,自己往格子衬衫外面套个黑色皮衣,头也不回地走入夜色。 五新?原来他就是传说中那个白天写代码,入夜唱摇滚的“阿里汪峰”五新? ——啊,等等我啊喂! 推门进入前,我抬头看了看,霓虹招牌在夜色里闪烁: Happy Honey Badger (快乐的平头哥) 欸,这造型有点眼熟——欢迎来到阿里十派年度歌王总决选。