51单片机初学者程序模块整理
需积分: 9 7 浏览量
更新于2024-07-24
1
收藏 52KB DOC 举报
该资源是针对初学者的51单片机编程教程,总结了常见的程序模块,包括程序开头的定义、延时函数、数码管显示、外部中断和定时器/计数器的使用。
一、程序开头
在51单片机编程中,常用的程序开头会包含必要的头文件,并定义一些数据类型别名。`#include<reg52.h>`包含了51单片机的寄存器定义,使得可以直接访问硬件寄存器。`#define uint unsigned int`和`#define uchar unsigned char`是为了简化代码,将无符号整型和无符号字符型定义为别名。`#include<intrins.h>`则是为了能使用像`_crol_()`、`_crol_()`和`_nop_()`这样的内联汇编函数,这些函数通常用于位操作和延时等低级任务。
二、延时函数
延时函数是51单片机编程中的基础模块,用于实现程序的暂停。在这个例子中,提供了一个简单的延时1ms的函数`delay(unsigned int y)`,通过两个嵌套的for循环实现,可以根据需要调整延时时间。
三、数码管显示
数码管显示模块涉及到数码管的段选和位选。`LED[]`数组存储了0到f对应的段码,而`wx[]`和`dx[]`数组分别对应1到8和0到9的位选编码,用于驱动共阴极和共阳极数码管。通过这些字模,可以控制数码管显示特定的数字或字符。
四、外部中断初始化
外部中断是单片机对外部事件作出响应的重要机制。这里展示了如何初始化外部中断0(INT0),通过设置`EA=1`开启中断总允许,`EX0=1`开启外部中断0,`IT0=0`设置INT0为低电平触发。根据需求,`IT0`也可以设置为1,变为电平跳变触发。
五、定时器使用
定时器在51单片机中常用于周期性任务,如延时或产生脉冲。`dq0()`函数初始化定时器0,`TMOD=0x01`设置为工作模式1,即定时器模式,然后启动定时器0(`TR0=1`)。`TH0`和`TL0`设置了定时初值,以便定时器在溢出前达到指定的时间间隔(50ms)。
六、计数器应用
计数器模式与定时器类似,但由外部输入信号驱动。`jq0()`函数设置定时器0为工作模式1的计数器模式(`TMOD=0x05`),同样启动计数器0。在计数器模式下,单片机会根据外部信号的变化自动计数。
以上就是51单片机初学者常遇到的一些关键程序模块,掌握这些基本模块的使用,能够帮助初学者更好地编写和理解51单片机的控制程序。在实际项目中,可以根据需要组合和扩展这些模块,以实现更复杂的系统功能。
105 浏览量
1272 浏览量
167 浏览量
2024-01-13 上传
911 浏览量
2011-03-25 上传
2010-05-08 上传
2010-08-31 上传
115 浏览量
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
u010489629
- 粉丝: 0
最新资源
- UABE 2.1d 64bit:Unity资源包编辑与提取工具
- RH64成功编译ffmpeg0.7版本,解决JNI编译难题
- HexBuilder工具:合并十六进制文件并转换为二进制
- 傻瓜式EXCEL财务记账系统教程
- React开发的Traekunst.dk项目概述
- 子域名检测大师:高效采集与暴力枚举解决方案
- Laravel网格查询抽象实现详解
- CKplayer:小巧跨平台网页视频播放器
- SpringBoot实现秒杀功能的简单示例教程
- LabView在WEB开发中的应用:用户事件记录温度报警
- Qt框架下QCamera实现摄像头调用与图像显示
- Mac环境下Sublime Text插件的安装教程
- EFT2.22.1R4中文正式版V3.1发布:绝地反击
- 基于Java技术的网上拍卖商城系统设计与实现
- 42巴黎C++课程完全指南与学习心得
- myBase V7.0.0 Pro Beta-20:升级至HTML格式与丰富插件支持