单片机控制数码管显示1-100程序.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
该文档涉及的知识点是单片机控制数码管显示数字的程序设计。主要使用了8051系列单片机,并且编程语言为汇编语言。以下是详细解释: 1. **数码管显示原理**:数码管通常由7个段(a、b、c、d、e、f、g)和一个或两个小数点组成,通过控制每个段的亮灭来显示不同的数字。在程序中,使用了一个字符数组`table`存储了每个数字0-9对应的7段码。 2. **单片机控制**:单片机通过I/O端口P0、P2来控制数码管的显示。P0口用于输出七段码,P2口的高位bit(duan和wei)用于选择和切换数码管位。其中,sbit duan=P2^6控制数码管的位选,sbit wei=P2^7作为片选信号。 3. **程序结构**:主函数`main()`包含了程序的主要逻辑,首先调用`init()`函数进行初始化设置,然后进入一个无限循环,在循环内根据`temp`变量的值计算出百位、十位和个位,并调用`display()`函数进行显示。 4. **初始化函数`init()`**:该函数设置了TMOD寄存器以启用定时器0,并配置为方式1(16位定时器)。同时设置了初值使得定时器每隔50ms溢出一次。还开启了总中断EA和定时器0中断ET0,启动定时器0计数。 5. **定时器中断服务函数`timer0()`**:当定时器0溢出中断时,会执行这个函数。在这里,主要更新变量`aa`的值,以达到定时刷新数码管显示的目的。 6. **延时函数`delay()`**:用于控制数码管的显示速度,防止闪烁。通过嵌套循环实现微秒级别的延时。 7. **显示函数`display()`**:此函数负责将百位、十位和个位数字转化为7段码并输出到数码管上。通过位操作控制P0口的输出和P2口的位选和片选信号,实现了三位数码管的滚动显示。 8. **程序优化**:原程序中注释掉的部分是旧的显示函数,它没有实现百位的显示,而只处理了个位和十位的递增。现在的`display()`函数可以完整显示0-999的数值。 9. **变量定义**:`uint`和`uchar`是无符号整型和无符号字符型的别名,`bai`、`shi`、`ge`分别存储了百位、十位和个位的数字,`temp`作为循环计数器,`aa`用于控制数码管的刷新频率,`duan`和`wei`是数码管控制位的标志。 这个程序展示了如何使用单片机通过定时器中断和数码管显示技术来动态地在数码管上显示出从1到100的数字序列。
- 粉丝: 88
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享STM32F102x8B-DS-CH-V2很好的技术资料.zip
- X64EIP内核注入DLL C++源码
- 技术资料分享STM32F101xCDE-DS-CH-V5很好的技术资料.zip
- 智慧云Serverless SDK的微信小程序demo.zip
- 技术资料分享STM32F101x46-DS-CH-V2很好的技术资料.zip
- 技术资料分享STM32F101x8B-DS-CH-V11很好的技术资料.zip
- 掌故-微信小程序.zip
- 技术资料分享STM32F10xxx闪存编程参考手册很好的技术资料.zip
- 基于深度学习的裂缝检测技术项目Python源码.zip
- 技术资料分享STM32F10xxCDE-Errata-CH-V5很好的技术资料.zip