版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51单片机输入数字并数码管倒计时典型C语言代码51单片机输入数字并数码管倒计时典型C语言代码使用STC89C52R单片机,外接数码管、蜂鸣器。改代码非常适合初学者学习借鉴。#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitdula=P0A0;sbitwela=P0A1;sbitp17=P0A3;sbitp02=P0A2;sbitp32=P3A2;sbitp04=P0A4;ucharcount;uintSumnum;uintcircle,circle1;uinttime;floattop;/定义top
2、为浮点型变量ucharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchartemp,count;uintbian,num,e,d,c,b,a;voiddelay(ucharx)uchara1,b1;for(a1=x;a1>0;a1-)for(b1=200;b1>0;b1-);voidchaishu(uintsum1)uinte1,b1,c1,d1;e=sum1/10000;/e=6*e1=sum1%10000;/e1=5535d=e1/1000;
3、/d=5*d1=e1%1000;/d1=535c=d1/100;/c=5*c1=d1%100;/c1=35b=c1/10;/b=3*b1=c1%10;/b1=5a=b1;/a=5*wan,uintqian,uintvoiddisplay(uintbai,uintshi,uintge)wela=1;P2=0xfe;wela=0;P2=0xff;dula=1;P2=tablewan;dula=0;delay(3);P2=0xff;wela=1;P2=0xfd;wela=0;P2=0xff;dula=1;P2=tableqian;dula=0;delay(3);P2=0xff;wela=1;P2=0
4、xfb;wela=0;P2=0xff;dula=1;P2=tablebai;dula=0;delay(3);P2=0xff;wela=1;P2=0xf7;wela=0;P2=0xff;dula=1;P2=tableshi;dula=0;delay(3);P2=0xff;wela=1;P2=0xef;wela=0;P2=0xff;dula=1;P2=tablege;dula=0;delay(3);P2=0xff;/switchvoidsuanbian(ucharcont)switch(cont)/松开按键后对bian进行赋值case 1:bian=num;break;/跳出switchcase
5、2:bian=(bian*10)+num;break;/跳出switchcase 3:bian=(bian*10)+num;break;/跳出switchcase 4:bian=(bian*10)+num;break;/跳出switchcase 5:bian=(bian*10)+num;break;/跳出switch/switch结束/switchvoidkeyscan()/以下测456P1=0xfd;/P1口等于11111101temp=P1;/temp等于P1口的值if(P1!=0xfd)/如果P1口不等于11111101delay(100);/延时100毫秒if(P1!=0xfd)/再测
6、一下如果P1口是否等于11111101switch(temp)/如果不等于,那么检测temp取到的P1口的值并进入选择。case0xed:num=4;count=count+1;/如果=0xed那么num设定为4break;/跳出switchcase0xdd:num=5;count=count+1;/如果=0xed那么num设定为5break;/跳出switchcase0xbd:num=6;count=count+1;/如果=0xed那么num设定为6break;/跳出switch/switch结束while(P1!=0xfd);/此处为一个等待按键松开的while语句:没松开就一直停在whi
7、le中suanbian(count);/chaishu(bian);/第二个if结束/第一个if结束/以下测123P1=0xfe;/P1口等于11111101temp=P1;/temp等于P1口的值if(P1!=0xfe)/如果P1口不等于11111101delay(100);/延时100毫秒if(P1!=0xfe)/再测一下如果P1口是否等于11111101switch(temp)/如果不等于,那么检测temp取到的P1口的值并进入选择。case0xee:num=1;count=count+1;/如果=0xed那么num设定为4break;/跳出switchcase0xde:num=2;co
8、unt=count+1;/如果=0xed那么num设定为5break;/跳出switchcase0xbe:num=3;count=count+1;/如果=0xed那么num设定为break;/跳出switch/switch结束while(P1!=0xfe);/此处为一个等待按键松开的while语句:没松开就一直停在while中suanbian(count);/chaishu(bian);/第二个if结束/第一个if结束/以下测789P1=0xfb;/P1口等于11111101temp=P1;/temp等于P1口的值if(P1!=0xfb)/如果P1口不等于11111101delay(100);
9、/延时100毫秒if(P1!=0xfb)/再测一下如果P1口是否等于11111101switch(temp)/如果不等于,那么检temp取到的P1口的值并进入选择。case0xeb:num=7;count=count+1;/如果=0xed那么num设定为4break;/跳出switchcase0xdb:num=8;count=count+1;/如果=0xed那么num设定为5break;/跳出switchcase0xbb:num=9;count=count+1;/如果=0xed那么num设定为6break;/跳出switch/switch结束while(P1!=0xfb);/此处为一个等待按键
10、松开的while语句:没松开就一直停在while中suanbian(count);/chaishu(bian);/第二个if结束/第一个if结束/以下测0和ce键ok键P1=0xf7;/P1口等于11111101temp=P1;/temp等于P1口的值if(P1!=0xf7)/如果P1口不等于11111101delay(100);/延时100毫秒if(P1!=0xf7)/再测一下如果P1口是否等于11111101switch(temp)/如果不等于,那么检测temp取到的P1口的值并进入选择。case0xe7:bian=0;count=0;/按下ce键后清零(直接给bian赋值为0)break
11、;/跳出switchcase0xd7:num=0;count=count+1;/按下0后*break;/跳出switchcase0xb7:Sumnum=bian;count=0;/按下。诟,将bian赋值给Sumnum同日将count赋值为零)/以防止个位堆积(实际上count保持原数)break;/跳出switch/switch结束while(P1!=0xf7);/此处为一个等待按键松开的while语句:没松开就一直停在while中suanbian(count);/第二个if结束/第一个if结束/整个键盘检测程序完成/以下为主函数/voidmain()circle=0;TMOD=0x01;/
12、设定定时器工作模式00000001TH0=(65536-50000)/256;/50毫秒TL0=(65536-50000)%256;/装入定时器0初值EA=1;/开总允许ET0=1;/开源定时器0允许1EX0=1;/开外部中断0源允许IT0=1;/外部中断0下降沿有效while(1)if(Sumnum!=0)如果按下了OKUTR0=1;/启动定时器0if(time=200)/如果时间到了200个50毫秒(共10秒)if(circle>=Sumnum)p17=0;/开发光二极管TR0=0;/不允许定时器再次启动/EX0=0;/关外部中断0源允许circle1=circle/10;chaishu(circle1);while(1)display(e,d,c,b,a);elseTH0=(65536-50000)/256;/50毫秒TL0=(65536-50000)%256;/装入定时器0初值circle=0;time=0;keyscan();chaishu(bian);display(e,d,c,b,a);/主函数结束/定时中断函数内容/voidT0_time()inte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通事故私下调解协议书
- 个人土地补偿协议书
- 阑尾结石病因介绍
- (立项备案申请模板)海砂淡化及机制砂项目可行性研究报告参考范文
- 2023年天津市河西区高考语文三模试卷
- 山东省菏泽市鄄城县2024-2025学年七年级上学期期中生物学试题(解析版)-A4
- 2023年直流鼓风机项目融资计划书
- 护理资料培训课件 大便标本采集相关知识
- 养老院老人康复设施使用管理制度
- 培训过程控制培训课件
- 小学教师期末学生评语
- 商业街规划设计方案总结报告(2篇)
- 中国同性恋人群心理健康研究综述
- 共青团团课课件
- 教科版小学科学四上《3.6运动的小车》课件
- 呼吸性碱中毒并发电解质紊乱的防治措施
- MOOC 现代邮政英语(English for Modern Postal Service)-南京邮电大学 中国大学慕课答案
- 学校护校队工作制度
- MOOC 大学生心理健康-厦门大学 中国大学慕课答案
- 砂石料供应、运输、售后服务方案
- (高清版)DZT 0331-2020 地热资源评价方法及估算规程
评论
0/150
提交评论