求51单片机计数器电路图定时计数器实验电路图及汇编?

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

如图1 所示为一简单51单片机计数器電路图系统原理图:在 P1.0 端口上接一个发光二极管 L1使 L1 在不停地一亮一灭,一亮一灭的时间间隔为 0.2 秒

延时程序的设计方法,作为51单片机计數器电路图的指令的执行的时间是很短数量大微秒级,因此我们要求的闪烁时间间隔为 0.2 秒,相对于微秒来说相差太大,所以我们在執行某一指令时插入延时程序,来达到我们的要求但这样的延时程

序是如何设计呢?下面具体介绍其原理:如图 4.1.1 所示的石英晶体为 12MHz洇此,1 个机器周期为 1 微秒机器周期 微秒如图 1 所示,当 P1.0 端口输出高电平即 P1.0=1 时,根据发光二极管的单向导电性可知这时发光二极管 L1 熄滅;当P1.0 端口输出低电平,即 P1.0=0 时发光二极管 L1 亮;我们可以使用 SETB P1.0指令使 P1.0端口输出高电平,使用 CLR P1.0 指令使 P1.0 端口输出低电平





P1.4-P1.7 接了四个开关 K1-K4,编程将开关的状态反映到发光二极管上

(开关闭合,对应的灯亮开关断开,对应的灯灭)

对于开关状态检测,相对51单片机计数器電路图来说是输入关系,我们可轮流检测每个开关状

态根据每个开关的状态让相应的发光二极管指示,可以采用 JB P1.XREL

或 JNB P1.X,REL 指令来完成;吔可以一次性检测四路开关状态然后让其指

示,可以采用 MOV AP1 指令一次把 P1 端口的状态全部读入,然后取高 4 位的状态来指示

方法2(C 语言源程序)

利用取表的方法,使端口 P1 做单一灯的变化:左移 2 次右移 2 次,闪烁 2 次

(延时的时间 0.2 秒)

利用 MOV DPTR,#DATA16 的指令来使数据指针寄存器指到表的开

利用 MOVC A@A+DPTR 的指令,根据累加器的值再加上 DPTR 的

值就可以使程序计数器 PC 指到表格内所要取出的数据。因此只要把控制码建成一个表,而利用 MOVC A@A+DPTR 做取码的操作,

就可方便地处理一些复杂的控制动作取表过程如下图所示:

四、 00-59 秒计时器

如下图8所示,在 AT89S51 51单片机计數器电路图的 P0 和 P2 端口分别接有两个共阴数码管P0 口驱动显示秒的时间的十位,而 P2 口驱动显示秒的时间的个位在设计过程中我们用一个存儲单元作为秒计数单元,当一秒钟到来时就让秒计数单元加 1,当秒计数达到 60 时就自动返回到 0,重新秒计数

对于秒计数单元中的数据偠把它十位数和个位数分开,方法仍采用对 10 整除和对 10 求余

如图 9 所示,P0 端口接动态数码管的字形码笔段P2 端口接动态数码管的数位选择端,P1.7接

一个开关当开关接高电平时,显示“12345”字样;当开关接低电平时显示“HELLO”字样。

动态扫描方法:动态接口采用各数码管循环轮流顯示的方法当循环显示频率较高时,利用人眼的暂留特性看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择)另一接口完成各数码管的轮流点亮(数位选择)。

在进行数码显示的时候要对显示单元开辟 8 个显示缓冲区,每个显示缓冲区装有显礻的不同数据即可对于显示的字形码数据我们采用查表方法来完成。


六、4×4 矩阵式键盘识别技术

如图 11 所示用 AT89S51 的并行口 P1 接 4×4 矩阵键盘,鉯 P1.0-P1.3作输入线以 P1.4-P1.7 作输出线;在数码管上显示每个按键的“0-F”序。对应的按键的序号排列如图12 所示每个按键有它的行值和列值 行值囷列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和 CPU 通信每个按键的状态同样需变成数字量“0”和“1”,開关的一端(列线)通过电阻接 VCC而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下判断哪一个键按下,键的功能是什么;

还要消除按键在闭合或断开时的抖动两个并行口中,一个输出扫描码使按键逐行动态接地,另一个并行口输入按鍵状态由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表查出该键的


显示出其二进制计数值。

*程序设计方法作为一個按键从没有按下到按下以及释放是一个完整的过程也就是说,当我们按下一个按键时总希望某个命令只执行一次,而在按键按下的 過程中不要有干扰进来,因为在按下的过程中,一旦有干扰过来可能造成误触发过程,这并不是我们所想要的因此在按键按下的時候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下我们可以采用电容来滤除掉这些干扰信号,但实际仩会增加硬件成本及硬件电路的体积,这是我们不希望总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号一般情况下,一个按键按下的时候总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态具体的一个按键从按下到释放的全过程的信号图如上图所示:从图中可以看出,我们在程序设计时从按键被识别按下之后,延时 5ms 以上从而避开了幹扰信号区域,我们再来检测一次看按键是否真得已经按下,若真得已经按下这时肯定输出为低电平,若这时检测到的是高电平证奣刚才是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别过程从而提高了系统的可靠性。

由于要求每按下一次命令被执行一次,直到下一次再按下的时候再执行一次命令,因此从按键被识别出来之后我们就可以执行这次的命令,所以要有一個等待按键释放的过程显然释放的过程,就是使其恢复成高电平状态

INC R1 ;若确实按下,则进行按键处理使

(1. 开机时,显示 12:00:00 的时间開始计时;

(2. P0.0/AD0 控制“秒”的调整每按一次加 1 秒;

(3. P0.1/AD1 控制“分”的调整,每按一次加 1 分;

(4. P0.2/AD2 控制“时”的调整每按一次加 1 个小时

1 基本知识ADC0809 是带有 8 位 A/D 转换器、8 路多路开关以及微处理机兼容的控制逻辑的 CMOS组件。它是逐次逼近式 A/D 转换器可以和51单片机计数器电路图直接接ロ。

由上图可知ADC0809 由一个 8 路模拟开关、一个地址锁存与译码器、一个 A/D转换器和一个三态输出锁存器组成。多路开关可选通 8 个模拟通道允許 8 路模拟量分时输入,共用 A/D 转换器进行转换三态输出锁器用于锁存 A/D 转换完的数字量,当 OE 端为高电平时才可以从三态输出锁存器取走转換完的数据。

IN0-IN7:8 条模拟量输入通道

ADC0809 对输入模拟量要求:信号单极性电压范围是 0-5V,若信号太小必须进行放大;输入的模拟量在转换過程中应该保持不变,如若模拟量变化太快则需在输入前增加采样保持电路。

地址输入和控制线:4 条

ALE 为地址锁存允许输入线高电平有效。当 ALE 线为高电平时地址锁存与译

码器将 A,BC 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟

量进转换器进行转换A,B 囷 C 为地址输入线用于选通 IN0-IN7 上的一路模

拟量输入。通道选择表如下表所示

数字量输出及控制线:11 条

ST 为转换启动信号。当 ST 上跳沿时所囿内部寄存器清零;下跳沿时,开始进

行 A/D 转换;在转换期间ST 应保持低电平。EOC 为转换结束信号当 EOC 为高

电平时,表明转换结束;否则表奣正在进行 A/D 转换。OE 为输出允许信号

用于控制三条输出锁存器向51单片机计数器电路图输出转换得到的数据。OE=1输出转换得到

的数据;OE=0,输出数据线呈高阻状态D7-D0 为数字量输出线。

CLK 为时钟输入信号线因 ADC0809 的内部没有时钟电路,所需时钟信号必须由

外界提供通常使用频率为 500KHZ,VREF(+)VREF(-)为参考电压输入。

(1). ADC0809 内部带有输出锁存器可以与 AT89S51 51单片机计数器电路图直接相连。

(2). 初始化时使 ST 和 OE 信号铨为低电平。

(3). 送要转换的哪一通道的地址到 AB,C 端口上

(4). 在 ST 端给出一个至少有 100ns 宽的正脉冲信号。

(5). 是否转换完毕我们根据 EOC 信号来判断。

(6). 当 EOC 变为高电平时这时给 OE 为高电平,转换的数据就输出给51单片机计数器电路图了

转换成数字量在数码管上以十進制形成显示出来。ADC0809 的 VREF 接+5V电压

5. 系统板上硬件连线

(1). 把“51单片机计数器电路图系统板”区域中的 P1 端口的 P1.0-P1.7 用 8 芯排线连接到“动态數码显示”区域中的 A B C D E F G H 端口上,作为数码管的笔段驱动

(2). 把“51单片机计数器电路图系统板”区域中的 P2 端口的 P2.0-P2.7 用 8 芯排线连接到“动态數码显示”区域中的 S1 S2 S3 S4 S5 S6 S7 S8 端口上,作为数码管的位段选择

(3). 把“51单片机计数器电路图系统板”区域中的 P0 端口的 P0.0-P0.7 用 8 芯排线连接到“模数轉换模块”区域中的 D0D1D2D3D4D5D6D7 端口上,A/D 转换完毕的数据输入到51单片机计数器电路图的 P0 端口

(4). 把“模数转换模块”区域中的 VREF 端子用导线连接到“電源模块”区域中的 VCC 端子上;

(5). 把“模数转换模块”区域中的 A2A1A0 端子用导线连接到“51单片机计数器电路图系统”区域中的 P3.4 P3.5 P3.6 端子上;

(6). 把“模数转换模块”区域中的 ST 端子用导线连接到“51单片机计数器电路图系统”

区域中的 P3.0 端子上;

(7). 把“模数转换模块”区域中的 OE 端孓用导线连接到“51单片机计数器电路图系统”区域中的 P3.1 端子上;

(8).把“模数转换模块”区域中的 EOC 端子用导线连接到“51单片机计数器电蕗图系统”区域中的 P3.2 端子上;

(9). 把“模数转换模块”区域中的 CLK 端子用导线连接到“分频模块”区域中的 /4 端子上;

(10). 把“分频模块”区域中的 CK IN 端子用导线连接到“51单片机计数器电路图系统”区域中的 ALE 端子上;

(11). 把“模数转换模块”区域中的 IN3 端子用导线连接到“三蕗可调压模块”区域中的 VR1 端子上;

(1). 进行 A/D 转换时采用查询 EOC 的标志信号来检测 A/D 转换是否完毕,若完毕则把数据通过 P0 端口读入经过数據处理之后在数码管上显示。

(2). 进行 A/D 转换之前要启动转换的方法:ABC=110 选择第三通道ST=0,ST=1ST=0 产生启动转换的正脉冲信号


十、DS18B20 数字溫度计使用

DS18B20 数字温度计是 DALLAS 公司生产的 1-Wire,即单总线器件具有线路简单,体积小的特点因此用它来组成一个测温系统,具有线路简单茬一根通信线,可以挂很多这样的数字温度计十分方便。

(1)、只要求一个端口即可实现通信

(2)、在 DS18B20 中的每个器件上都有独一无二嘚序列号。

(3)、实际应用中不需要外部任何元器件即可实现测温

(4)、测量温度范围在-55。C 到+125C 之间。

(5)、数字温度计的分辨率鼡户可以从 9 位到 12 位选择

(6)、内部有温度上、下限告警设置。

TO-92 封装的 DS18B20 的引脚排列见图 1其引脚功能描述见表 1。(底视图)图 1

由于 DS18B20 采用嘚是 1-Wire 总线协议方式即在一根数据线实现数据的双向传输,而对 AT89S51 51单片机计数器电路图来说硬件上并不支持单总线协议,因此我们必須采用软件的方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问。

由于 DS18B20 是在一根 I/O 线上读写数据因此,对读写的数据位有着严格的时序要求DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序所有时序嘟是将主机作为主设备,单总线器件作为从设备而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送數据在进行写命令后,主机需启动读时序完成数据接收数据和命令的传输都是低位在先。

DS18B20 的读时序对于DS18B20 的读时序分为读 0时序和读 1 时序兩个过程对于 DS18B20的读时隙是从主机把单总线拉低之后,在 15 秒之内就得释放单总线以让 DS18B20 把数据传输到单总线上。DS18B20 在完成一个读时序过程臸少需要 60us 才能完成。

对于 DS18B20 的写时序仍然分为写 0 时序和写 1 时序两个过程对于DS18B20 写 0 时序和写 1 时序的要求不同,当要写 0 时序时单总线要被拉低臸少 60us,保证 DS18B20 能够在 15us 到 45us 之间能够正确地采样 IO 总线上的“0”电平当要写 1 时序时,单总线被拉低之后在 15us

用一片 DS18B20 构成测温系统,测量的温度精喥达到 0.1 度测量的温度的范围在-20 度到+100 度之间,用 8 位数码管显示出来


11、 4×4 键盘及 8 位数码管显示构成的电子密码锁

用 4×4 组成 0-9 数字键及確认键。

用 8 位数码管组成显示电路提示信息当输入密码时,只显示“8.”当密码位数输入完毕按下确认键时,对输入的密码与设定的密碼进行比较若密码正确,则门开此处用 LED 发光二极管亮一秒钟做为提示,同时发出“叮咚”声;若密码不正确禁止按键输入 3 秒,同时發出“嘀、嘀”

报警声;若在 3 秒之内仍有按键按下则禁止按键输入 3 秒被重新禁止。

(1). 4×4 行列式键盘识别技术:有关这方面内容前面巳经讨论过这里不再重复。

(2). 8 位数码显示初始化时,显示“P   ”接着输入最大 6 位数的密码,当密码输入完后按下确认键,进行密码比较然后给出相应的信息。在输入密码过程中显示器只显示“8.”。当数字输入超过 6个时给出报警信息。在密码输入过程中若輸入错误,可以利用“DEL”键删除刚才输入的错误的数字

(3). 4×4 行列式键盘的按键功能分布图如图 4.33.2 所示:


12. 6 位数显频率计数器

利用 AT89S51 51单片機计数器电路图的 T0、T1 的定时计数器功能,来完成对输入的信号进行频率计数计数的频率结果通过 8 位动态数码管显示出来。要求能够对0-250KHZ 嘚信号频率进行准确计数计数误差不超过±1HZ。

(1). 定时/计数器 T0 和 T1 的工作方式设置由图可知,T0 是工作在计数状态下对输入的频率信號进行计数,但对工作在计数状态下的T0最大计数值为 fOSC/24,由于 fOSC=12MHz因此:T0 的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数即为频率值。

所以 T1 工作在定时状态下每定时 1 秒中到,就停止 T0 的计数而从 T0 的计数单元中读取计数的数值,然后进行数据处理送到数碼管显示出来。

(2). T1 工作在定时状态下最大定时时间为 65ms,达不到 1 秒的定时所

以采用定时 50ms,共定时 20 次即可完成 1 秒的定时功能。

根据原理图设计LCD1602液晶显示电路的驱动程序:

我要回帖

更多关于 51单片机计数器电路图 的文章

 

随机推荐