单片机 实验5 电子秒表显示器

这篇博客介绍了如何使用单片机实现电子秒表显示器的功能。通过编程设置定时/计数器,实现秒计数器每秒加1,达到60后归零并重新开始计数。实验内容包括绘制电路原理图,使用12MHz晶振和50ms T0定时方式1+中断,以及程序设计和仿真结果的观察。
AI助手已提取文章相关产品:

在编程软件配合下,要求实现如下功能:数码管的初始显示值为“00”;当1s产生时,秒计数器加1;秒计数到60时清0,并从“00”重新开始,如此周而复始的进行。

一、 实验目的

        掌握定时/计数器的工作原理,熟悉定时/计数器中断法编程与调试内容。 

 二、 实验内容     

        1、按图绘制实验五电路原理图:     

        2、采用12MHz晶振,50ms T0定时方式1+中断(20次中断为1s)法编程:     

        3、实现如下功能程序运行开始时先显示“00”,随后显示数值逐渐增大。待计数到59后,自动从“00”开始。     

         4、观察仿真结果,完成实验报告。  

您可能感兴趣的与本文相关内容

### 实验原理 51单片机电子秒表显示器实验主要利用定时器中断来实现计时功能。定时器可以按照设定的时间间隔产生中断,在中断服务函数中对计时变量进行更新。具体来说,定时器工作在模式1(16位定时器模式),设定初值使定时器每隔50ms产生一次中断。每产生20次中断(即1秒),秒数加1。当秒数达到60时,秒数归零重新开始计时。数码管用于显示秒数的十位和个位,通过查表法将秒数转换为对应的数码管段码进行显示。 ### 实验代码 ```c #include<reg51.h> #define c unsigned char c t=0; c second=0; // 数码管段码表,对应0 - 9的显示 c code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 定时器0中断服务函数 void time0() interrupt 1 { TR0=0; // 停止定时器0 TH0=0x3c; // 重新设置定时器初值,定时50ms TL0=0xb0; t++; if(t==20) { // 20次中断,即1秒 t=0; second++; } if(second==60) { // 秒数达到60,归零 second=0; } P0=table[second/10]; // 显示秒数的十位 P2=table[second%10]; // 显示秒数的个位 TR0=1; // 启动定时器0 } void main() { P0=table[second/10]; // 初始化显示秒数的十位 P2=table[second%10]; // 初始化显示秒数的个位 TMOD=0x01; // 设置定时器0为模式1 TH0=0x3c; // 定时器0初值 TL0=0xb0; EA=1; // 全局中断使能 ET0=1; // 定时器0中断使能 TR0=1; // 启动定时器0 while(1); // 主循环,保持程序运行 } ``` ### 实验教程 #### 硬件连接 - 将数码管的段选引脚连接到单片机的P0口和P2口,分别用于显示秒数的十位和个位。 - 确保单片机的电源和接地引脚正确连接,提供稳定的电源。 #### 软件实现步骤 1. **编写代码**:按照上述代码编写51单片机电子秒表显示器的程序。 2. **编译代码**:使用Keil等开发工具对代码进行编译,生成可烧录的HEX文件。 3. **烧录程序**:使用烧录工具(如STC-ISP)将生成的HEX文件烧录到51单片机中。 4. **调试运行**:烧录完成后,给单片机上电,观察数码管的显示是否正常计时。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值