找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2149|回复: 0
打印 上一主题 下一主题
收起左侧

了解单片机定时器的各种工作方式和编程方法

[复制链接]
跳转到指定楼层
楼主
ID:360306 发表于 2018-6-27 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  
课程名称
  
单片机原理及应用
实验课时
4
实验项目
定时器/计数器实验
实验时间


指导老师
胡国华
实验成绩

实验目的(本次上机实验所涉及并要求掌握的知识点)
1、了解定时器的各种工作方式。
  
2、掌握定时器/计数器的使用和编程方法。
实验环境
Protues仿真软件   KellC51 集成开发环境   微机1
实验内容
采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示出来。
      
程序代码:
  
#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 sepcoed[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;
  
ET0=1;  
  
EA=1;
  
TH0=0x3c;  
  
TL0=0xb0;  
  
TMOD=0x01;
  
while(1)  
  
{   
  
if(P1_0==0)
  
{   
  
TR0=1;   
  
i++;
  
P3=numcode;   
  
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;   
  
P0=dspcode;
  
DelayMS(5);
  
}
  
}
  
}
总结(对上机实验结果进行分析,上机心得体会及改进意见
实验结果:
  
file:///C:/Users/zyt/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
  
总结:
  
  通过这次单片机设计,我不仅加深了对单片机理论的理解,将理论很好的运用到实际当中去,同时也使我认识到自身存在的不足之处。无论是理论上还是遇到问题的处理能力上都还有待提高。这也激发了我今后学习努力学习的兴趣。发现问题、提出问题、分析问题、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表