2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 两位数码管秒表c语言 两位数码管显示计时器.doc

两位数码管秒表c语言 两位数码管显示计时器.doc

时间:2020-09-12 17:05:04

相关推荐

两位数码管秒表c语言 两位数码管显示计时器.doc

两位数码管显示计时器

一、题目

用定时0的方式1实现数码管两位59S循环计时(计时器)

二、思路方案 本实验利用单片机的定时器/计数器定时和计数的原理,通过proteus 仿真软件来实现模拟实现。模拟利用AT89C51单片机、LED数码管实现秒表的计时。 其中一个两位数码管用来显示数据,一位用来显示个位秒,另一位用来显示十位秒。当计数超过范围时所有数码管全部清零重新计数。

三、实验设计原理图

四、程序流程图

五、程序代码如下:

#include

#define uchar unsigned char

#define uint unsigned 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; //开定时器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; //把一个2位数分离后分别送数码管显示,十位和个位

ge count%10; /*以下为延迟函数*/

void delay uint xms uint i,j;

for i xms;i 0;i-- //延迟时间为 xms乘以50ms

for j 110;j 0;j-- ; /*以下为显示数码管的子函数*/

void display uchar shi,uchar ge P3 0xfe; //打开P3.0,及打开数码管1引脚

P2 SEG[ge];

delay 20 ;

P3 0xfd; //打开P3.1,及打开数码管2引脚

P2 SEG[shi];

delay 20 ; 六实验过程遇到的问题总结

由于重新接触单片机,软硬件较生疏,刚看题目没思路,只能网上查资料看,再理解,相当的费力。

连接硬件找不到元器件,英文的都看不到,只能一个个翻译才找到元器件,英文真的很重要。以下是用到组别的英文单词

Microprocessor ICs 微处理器ptoelectronics 光电学

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。