两位数码管显示计时器

上传人:腾**** 文档编号:40531307 上传时间:2018-05-26 格式:DOC 页数:3 大小:163KB
返回 下载 相关 举报
两位数码管显示计时器_第1页
第1页 / 共3页
两位数码管显示计时器_第2页
第2页 / 共3页
两位数码管显示计时器_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《两位数码管显示计时器》由会员分享,可在线阅读,更多相关《两位数码管显示计时器(3页珍藏版)》请在金锄头文库上搜索。

1、一、题目一、题目用定时 0 的方式 1 实现数码管两位 59S 循环计时(计时器)二、思路方案二、思路方案本实验利用单片机的定时器/计数器定时和计数的原理,通过 proteus 仿真软件来实现 模拟实现。模拟利用 AT89C51 单片机、LED 数码管实现秒表的计时。其中一个两位数码管用来显示数据,一位用来显示个位秒,另一位用来显示十位秒。当 计数超过范围时所有数码管全部清零重新计数。三、实验设计原理图三、实验设计原理图四、程序流程图四、程序流程图五、程序代码如下:五、程序代码如下:#include #define uchar unsigned char #define uint unsign

2、ed int uchar num,count,ge,shi;void delay(uint); void display(uchar,uchar); uchar SEG=0xc0,0xf9,0xa4,0xb0,0x99, /显示数码管 0-9 数字0x92,0x83,0xf8,0x80,0x98; void main() TMOD=0x01; /设置定时器工作方式 T0 的工作方式为 1 TH0=(65536-45872)/256; /装初值 11.0592M 晶振定时 50ms 数为 45872 TL0=(65536-45872)%256; EA=1; /开总中断 ET0=1; /开定时器

3、0 中断 TR0=1; /启动定时器 0 while(1) /程序在这里不停的对数码管动态扫描同时等待中断发生 display(shi,ge); /*以下是设计中断服务程序的时间和显示*/ void T0_time()interrupt 1 TH0=(65536-45872)/256; /重装初值 TL0=(65536-45872)%256; if(+num= =20) /如果到了 20 次,说明 1 秒时间到 num=0; /然后把 num 清 0 重新再记 20 次 if(+count=60) /这个数用来送数码管显示,到 60 后归 0 count=0; shi=count/10; /把

4、一个 2 位数分离后分别送数码管显示,十位和个位 ge=count%10; /*以下为延迟函数*/ void delay(uint xms) uint i,j; for(i=xms;i0;i-) /延迟时间为 xms 乘以 50ms for(j=110;j0;j-); /*以下为显示数码管的子函数*/ void display(uchar shi,uchar ge) P3=0xfe; /打开 P3.0,及打开数码管 1 引脚P2=SEGge; delay(20);P3=0xfd; /打开 P3.1,及打开数码管 2 引脚 P2=SEGshi; delay(20); 六实验过程遇到的问题总结六实

5、验过程遇到的问题总结1.1.由于重新接触单片机,软硬件较生疏,刚看题目没思路,只能网上查资料看,再理解,相当的费力。2.2.连接硬件找不到元器件,英文的都看不到,只能一个个翻译才找到元器件,英文真的很重要。以下是用到组别的英文单词 Microprocessor ICs 微处理器集成电路(里面包含各样的集成芯片如:89C51,MAX232 等) Optoelectronics 光电学(包含各类数码管、led、点阵、液晶屏)后来又遇到 两位数码管的 1、2 引脚参数不懂,现在懂得了:1 引脚:显示右边第一个 2 引脚:显示左边第一个3.3.由于 C 语言没掌握扎实,编程序思路还没很好掌握,但通过一次实验多次调试,有进步了。

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

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号