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

上传人:知****量 文档编号:18097904 上传时间:2022-05-29 格式:PDF 页数:9 大小:218.35KB
返回 下载 相关 举报
51单片机输入数字并数码管倒计时典型C语言代码.pdf_第1页
第1页 / 共9页
51单片机输入数字并数码管倒计时典型C语言代码.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《51单片机输入数字并数码管倒计时典型C语言代码.pdf》由会员分享,可在线阅读,更多相关《51单片机输入数字并数码管倒计时典型C语言代码.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、5151 单片机输入数字并数码管倒计时典型单片机输入数字并数码管倒计时典型 C C 语言代码语言代码使用 STC89C52RC单片机,外接数码管、蜂鸣器。改代码非常适合初学者学习借鉴。#include#define uchar unsigned char#define uint unsigned intsbit dula=P00;sbit wela=P01;sbit p17=P03;sbit p02=P02;sbit p32=P32;sbit p04=P04;uchar count;uint Sumnum;uint circle,circle1;uint time;float top;/定义

2、top 为浮点型变量uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;uchar temp,count;uint bian,num,e,d,c,b,a;void delay(uchar x)uchar a1,b1;for(a1=x;a10;a1-)for(b1=200;b10;b1-);void chaishu(uint sum1)uint e1,b1,c1,d1;e=sum1/10000;/e=6*e1=sum1%10

3、000;/e1=5535d=e1/1000;/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*void display(uint wan,uint qian,uint bai,uint shi,uint ge)wela=1;P2=0 xfe;wela=0;P2=0 xff;dula=1;P2=tablewan;dula=0;delay(3);P2=0 xff;wela=1;P2=0 xfd;wela=0;P2=0 xff;dula=1;P2=tableqian;du

4、la=0;delay(3);P2=0 xff;wela=1;P2=0 xfb;wela=0;P2=0 xff;dula=1;P2=tablebai;dula=0;delay(3);P2=0 xff;wela=1;P2=0 xf7;wela=0;P2=0 xff;dula=1;P2=tableshi;dula=0;delay(3);P2=0 xff;wela=1;P2=0 xef;wela=0;P2=0 xff;dula=1;P2=tablege;dula=0;delay(3);P2=0 xff;/switchvoid suanbian(uchar cont)switch (cont)/松开按键

5、后对 bian 进行赋值case 1:bian=num;break;/跳出 switchcase 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结束/switchvoid keyscan()/以下测 456P1=0 xfd;/P1 口等于 11111101temp=P1;/temp 等于 P1 口的值if

6、(P1!=0 xfd)/ 如果 P1 口不等于 11111101delay(100);/延时 100 毫秒if(P1!=0 xfd)/再测一下如果 P1 口是否等于 11111101选择。switch(temp)/如果不等于,那么检测 temp 取到的 P1 口的值并进入case 0 xed:num=4;count=count+1;/如果=0 xed那么 num 设定为 4break;/跳出 switchcase 0 xdd:num=5;count=count+1;/如果=0 xed那么 num 设定为 5break;/跳出 switchcase 0 xbd:num=6;count=count

7、+1;/如果=0 xed那么 num 设定为 6break;/跳出 switch/switch结束while(P1!=0 xfd);/此处为一个等待按键松开的 while 语句:没松开就一直停在 while 中suanbian(count);/chaishu(bian);/第二个 if 结束/第一个 if 结束/以下测 123P1=0 xfe;/P1 口等于 11111101temp=P1;/temp 等于 P1 口的值if(P1!=0 xfe)/ 如果 P1 口不等于 11111101delay(100);/延时 100 毫秒if(P1!=0 xfe)/再测一下如果 P1 口是否等于 111

8、11101switch(temp)/如果不等于,那么检测 temp 取到的 P1 口的值并进入选择。case 0 xee:num=1;count=count+1;/如果=0 xed那么 num 设定为 4break;/跳出 switchcase 0 xde:num=2;count=count+1;/如果=0 xed那么 num 设定为 5break;/跳出 switchcase 0 xbe:num=3;count=count+1;/如果=0 xed那么 num 设定为 6break;/跳出 switch/switch结束while(P1!=0 xfe);/此处为一个等待按键松开的 while

9、语句:没松开就一直停在 while 中suanbian(count);/chaishu(bian);/第二个 if 结束/第一个 if 结束/以下测 789P1=0 xfb;/P1 口等于 11111101temp=P1;/temp 等于 P1 口的值if(P1!=0 xfb)/ 如果 P1 口不等于 11111101delay(100);/延时 100 毫秒if(P1!=0 xfb)/再测一下如果 P1 口是否等于 11111101选择。switch(temp)/如果不等于,那么检测 temp 取到的 P1 口的值并进入case 0 xeb:num=7;count=count+1;/如果=0

10、 xed那么 num 设定为 4break;/跳出 switchcase 0 xdb:num=8;count=count+1;/如果=0 xed那么 num 设定为 5break;/跳出 switchcase 0 xbb:num=9;count=count+1;/如果=0 xed那么 num 设定为 6break;/跳出 switch/switch结束while(P1!=0 xfb);/此处为一个等待按键松开的 while 语句:没松开就一直停在 while 中suanbian(count);/chaishu(bian);/第二个 if 结束/第一个 if 结束/以下测 0 和 ce 键 ok

11、 键P1=0 xf7;/P1 口等于 11111101temp=P1;/temp 等于 P1 口的值if(P1!=0 xf7)/ 如果 P1 口不等于 11111101delay(100);/延时 100 毫秒if(P1!=0 xf7)/再测一下如果 P1 口是否等于 11111101switch(temp)/如果不等于,那么检测 temp 取到的 P1 口的值并进入选择。case 0 xe7:bian=0;count=0;/按下 ce 键后清零(直接给 bian 赋值为 0)break;/跳出 switchcase 0 xd7:num=0;count=count+1;/按下 0 后*brea

12、k;/跳出 switchcase 0 xb7:Sumnum=bian;count=0;为零,/按下 OK 后,将bian 赋值给 Sumnum,同时将count 赋值/以防止个位堆积(实际上count 保持原数)break;/跳出 switch/switch结束while(P1!=0 xf7);/此处为一个等待按键松开的 while 语句:没松开就一直停在 while 中suanbian(count);/第二个 if 结束/第一个 if 结束/ 整 个 键 盘 检 测 程 序 完 成/以下为主函数/void main()circle=0;TMOD=0 x01;/设定定时器工作模式0000000

13、1TH0=(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)/如果按下了 OK 键TR0=1;/启动定时器 0if(time=200)/如果时间到了 200 个 50 毫秒(共 10 秒)if(circle=Sumnum)p17=0;/开发光二极管TR0=0;/不允许定时器再次启动/EX0=0;/关外部中断 0 源允许circle1=circle/10;cha

14、ishu(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);/主函数结束/定时中断函数内/void T0_time() interrupt 1 /定时/计数器 0 的溢出中断对应的中断序号为1TH0=(65536-50000)/256;/50 毫秒TL0=(65536-50000)%256;/装入定时器 0 初值time+;/定时中断函数内/容容/计数中断函数/void C1_count() interrupt 0/定时/计数器 1 的溢出中断对应的中断序号为3circle+;/计数中断函数/内容内容

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁