博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定时器/计数器设计实验
阅读量:5956 次
发布时间:2019-06-19

本文共 1040 字,大约阅读时间需要 3 分钟。

一、  实验内容

    采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示出来。

二、  实验目的

了解定时器的各种工作方式

掌握定时器/计数器的使用和编程方法

三、  实验设备

DELL台式机 + proteus版本6 + keilC51版本7

四、  实验电路图(可打印)

 

 

五、  程序流程图

 

 

六、程序源码(可打印)

#include<reg51.h>

sbit P1_0=P1^0;

unsigned char numcode[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88};

unsigned char seqcode[4]={0x01,0x02,0x04,0x08};

unsigned int num=0;

 

void int1() interrupt 1

{

num++;

TL0=0xb0;

TH0=0x3c;

}

 

void DelayMS(unsigned int ms)

{

unsigned char i;

while(ms--) for(i=0;i<120;i++);

}

 

void main()

{

unsigned char i=0;

unsigned char dspcode[4];

unsigned long t;

P3=numcode[i];

ET0=1;

EA=1;

TH0=0x3c;

TL0=0xb0;

TMOD=0x01;

while(1)

{

     if(P1_0==0)

     {

         TR0=1;

         i++;

         P3=numcode[i];

         while(P1_0==0);

         TR0=0;

         if(i==10)

         {

             t=((TH0<<8)+TL0)/1000;

             t=(t+50*num)/10;

             dspcode[0]=numcode[(t/1000)%10]^0x80;

             dspcode[1]=numcode[(t/100)%10];

             dspcode[2]=numcode[(t/10)%10];

             dspcode[3]=numcode[t%10];

             break;

         }

     }

}

while(1)

{

     for(i=0;i<4;i++)

     {

         P2=seqcode[i];

         P0=dspcode[i];

         DelayMS(5);

     }

}

}

转载于:https://www.cnblogs.com/johanxu/p/5066381.html

你可能感兴趣的文章
Mysql 监视工具
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs
查看>>
我的友情链接
查看>>
CentOS定时同步系统时间
查看>>
批量删除用户--Shell脚本
查看>>
如何辨别android开发包的安全性
查看>>
Eclipse Java @Override 报错
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
Python高效编程技巧
查看>>
Kafka服务端脚本详解(1)一topics
查看>>
js中var self=this的解释
查看>>
js--字符串reverse
查看>>