使用AT89S51单片机制作手动00-99计数器

下载需积分: 18 | DOC格式 | 70KB | 更新于2024-10-30 | 108 浏览量 | 11 下载量 举报
2 收藏
"这篇资源是关于使用51单片机(AT89S51)构建一个00-99计数器的教程,包括原理图和程序代码。实验目标是设计一个手动计数器,其中单片机的P3.7管脚连接一个轻触开关作为计数按钮,P2.0-P2.7和P0.0-P0.7管脚分别连接两个共阴数码管,用于显示个位和十位数。" 在51单片机的计数器设计中,主要涉及以下知识点: 1. **51单片机基础**:AT89S51是一款常见的8位微处理器,具有内置Flash存储器,广泛应用于嵌入式系统。它有四个8位I/O端口P0、P1、P2、P3,可以作为输入或输出。 2. **计数器硬件设计**:硬件电路包含一个轻触开关连接到P3.7管脚,用于手动触发计数;两个共阴数码管分别连接到P2和P0端口,通过点亮不同的段码来显示00-99的计数值。 3. **数码管显示**:共阴数码管意味着当数码管的某个段被激活时,该段的阴极接地,使得对应的LED发光。每个数码管需要8条控制线来驱动各个段,通过改变这些线的状态可以显示0-9的任何数字。 4. **按键识别**:程序需要识别P3.7上的按键状态变化,这通常通过轮询或中断服务实现。在本例中,可能采用了轮询方式,检测该管脚电平的变化。 5. **计数逻辑**:计数器通过累加计数值并检查是否达到100来实现。当计数值达到100时,会重置为0,形成00-99的循环计数。 6. **数的拆分**:为了将十位和个位分开显示,需要对计数值进行除法操作。具体来说,通过将计数值除以10,商表示十位,余数表示个位。 7. **查表显示**:使用查表法(Lookup Table)将计算出的个位和十位数字映射到对应的数码管段码,然后输出到P0和P2端口驱动数码管。 8. **程序流程**:程序主要包括按键识别、计数、数值拆分、数码管显示以及延时函数等部分。在程序框图中,可以看到从计数初始化到按键判断、计数更新和数码管显示的逻辑流程。 9. **汇编语言编程**:给出的程序是用汇编语言编写的,汇编语言更接近单片机的机器语言,可以直接控制硬件资源,但编写相对复杂。程序中包含了计数、除法、查表、比较和跳转等基本操作。 10. **延时函数**:`DELY10MS`可能是延迟10毫秒的子程序,用于在计数后等待一段时间,避免因为按键抖动导致的误计数。 这个项目涵盖了51单片机的基础知识,包括硬件接口、数码管显示、按键处理、程序设计和汇编语言编程等,是学习单片机应用开发的好实践。

相关推荐