(单片机原理与应用)定时器/计数器设计实验
2015-03-07 13:25
316 查看
一、实验内容
采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示出来。
二、实验目的
了解定时器的各种工作方式
掌握定时器/计数器的使用和编程方法
三、实验设备
DELL台式机 、keilC51版本7、proteus版本6
四、实验电路图
五、程序流程图
六、程序源码
采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示出来。
二、实验目的
了解定时器的各种工作方式
掌握定时器/计数器的使用和编程方法
三、实验设备
DELL台式机 、keilC51版本7、proteus版本6
四、实验电路图
五、程序流程图
六、程序源码
#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit Dot=P0^7;//小数点 sbit P3_5=P3^5;//按钮 uchar Count=0;//循环次数 uchar flag=0;//判断标志 uchar Times=0; //数码管段码定义 uchar code DSY_CODE[]= { 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90 }; //延时 void DelayMS(uint x) { uchar i; while(--x)for(i=0;i<120;i++); } //6只数码管上显示的数字 uchar Digit[]={0,0,0,0,0,0}; void main() { uchar i,j; P0=0xff; P2=0x00; P3_5=1; TMOD=0x01;//设T0为定时方式1 EA=1;ET0=1;//开总控,INT0 TH0=(65536-50000)/256;//设置50ms定时 TL0=(65536-50000)%256; while(Count!=10){ if(P3_5==1)//开关高电平 { if(flag==1)//判断标志位 { flag=0;Count++;//修改标志位,循环次数+1 } TR0=0;//关中断 } else if(P3_5==0)//开关低电平 { flag=1; TR0=1;//修改标志位,关中断 } } //显示数码管 while(1) { j=0x80; for(i=0;i<6;i++) { j=_crol_(j,1); P2=j; P0=DSY_CODE[Digit[i]]; if(i==2)//因为是平均时间,所以小数点左移一位 Dot=0; DelayMS(2); } } } void Time0()interrupt 1 { uchar i; TH0=(65536-50000)/256;//定时 TL0=(65536-50000)%256; if((++Times)==2)//50ms*2=0.1s { Times=0; Digit[0]++;//0.1s累加 for(i=0;i<=5;i++)//进位处理 { if(Digit[i]==10) { Digit[i]=0; if(i!=5) Digit[i+1]++; } } } }
相关文章推荐
- 定时器/计数器设计实验
- 定时器/计数器设计实验
- (单片机原理与应用)并行口设计数字键盘实验
- 实验二:外部中断与定时器/计数器中断实验
- 实训汇编语言设计——8253计数器/定时器
- 计数器设计实验
- FPGA基础实验:计数器设计、波形仿真、SignalTap调试
- 南邮微机实验(设计定时器)
- 定时器/计数器的提高实验报告
- 实训汇编语言设计——8253计数器/定时器
- 定时器/计数器的提高实验报告
- 实验7 利用51单片机的定时器设计一个时钟
- 南邮微机接口实验——8254定时器/计数器实验
- 定时器/计数器实验报告
- 计数器设计(php)
- 电工测量及实验实训网站设计
- 设计一个具有健壮性,灵活性,可重用性的Web应用架构(一)--->实验总结
- 单片机C语言编程-定时器/计数器(查询方式)
- Linux下利用posix线程库设计自己的应用层timer定时器
- 单片机C语言编程-定时器/计数器(计数方式)