当前位置:首页 > 经验 >

proteus单片机教程(proteus导入单片机程序)

来源:原点资讯(www.yd166.com)时间:2022-10-30 07:00:53作者:YD166手机阅读>>

1. 基于proteus的51单片机开发实例(11)--按键按下了几次?

proteus单片机教程,proteus导入单片机程序(1)

图1 按键次数检测电路

1.1. 实验目的

在前面的实例中,我们已经学习了51单片机定时器/计数器的定时功能(《基于proteus的51单片机开发实例(9)--定时器的定时模式》),我们已经知道到定时器/计数器既能够实现定时功能,也能够实现计数功能。那么在本实例我们来学习51单片机中定时器/计数器的计数功能。

1.2. 设计思路

在本实例中,我们通过在定时器/计数器的技术引脚接一个按键,利用51单片机定时器/计数器的计数功能,判断这个按键被按下了多少次,然后通过连接在单片机P1口的8个发光二极管来指示按键按下的次数:第一次按下按键,最低位的发光二极管点亮,第二次按键按下,倒数第二位的发光二极管点亮,第三次按下按键,最低位和倒数第二位的发光二极管都点亮........,以此类推。

1.3. 基础知识

前面我们已经了解了51单片机定时器/计数器的基本结构,本实例中继续来学习相关知识。

proteus单片机教程,proteus导入单片机程序(2)

图2 51单片机定时器/计数器结构

51单片机定时器/计数器的使用步骤如下:

1、选择定时器/计数器的工作方式

利用TMOD寄存器中相关的控制位首先来选择使用的是定时器0还是定时器1,然后选择是工作于定时方式还是计数方式。一般情况下,在定时时长或计数数量较大的情况下,选择工作方式0或者工作方式1,因为工作方式0可定时或计数的时长是3位,方式1是16位,而方式2和方式3则只有8位。

2、设置计数初值

根据定时/计数要求设定计数初值。需要牢记的是51单片机定时器/计数器的计数特性是向上计数,即计数时只能从小数累加,直到数据大到超出计数范围产生溢出。然后将计算好的初值写入寄存器TH和TL。

初值的计算方法:

在定时器/计数器初始化过程中,要设置定时或计数的初始值需要进行计算。因为定时器/计数器是向上计数的,在计数溢出产生中断,因此初值不能是所需要的计数模值,而是要从最大计数值减去计数模值,这样得出的值才是真正需要的计数初值。假设计数器的最大计数值为M(根据工作方式不同,M的值可能是2的13次方,2的16次方,2的8次方),计算处置的公式如下。

proteus单片机教程,proteus导入单片机程序(3)

图3 计数初值的计算公式

3、根据需要决定是否开放定时器/计数器中断。

4、启动定时器/计数器。通过设置运行控制寄存器TCON中的TR0或TR1为0或1,来启动/停止定时器/计数器。

在本实例中,是通过什么途径来识别按键按下的次数呢?

原来,当我们选择了定时器/计数器的计数功能后,单片机会自动去检测和识别相应的计数端口,对于51单片机来说,定时器/计数器0的计数端口是P3.4,定时器/计数器0的计数端口是P3.4,在计数模式下,这两个端口处于输入状态,它的一举一动都会被定时器/计数器捕捉,当然,关于这种怎么捕捉,我们在后面的实例会深入讲解。。

1.4. 电路设计

根据设计思路中的描述,本例的电路首先是在51单片机的计数端口连接一个按键,该端口平时为高电平,当按键按下,变为低电平。

单片机的P1口通过拉电流的方式连接8个发光二极管,这8个发光二极管通过不同的点亮顺序来指示按键按下的次数。

1.5. 程序设计

本实例的程序代码如下。

#include <AT89X52.h> int main(void) { TMOD = 0x05;//设置定时器/计数器的工作方式:定时器/计数器0工作在计数方式0 TH0 = 0x00;// TL0 = 0x00;//计数初值设为0 TR0 = 0x01;//开启计数 P1 = 0xff;//先让发光二极管不亮 while(1) // { P1 = TL0; //根据计数值的变化,相应LED点亮或熄灭 } }

我们可以看到,程序代码非常简单,只有寥寥数句,但是却能够很直观,形象的实现51单片机定时器/计数器的计数功能。

1.6. 实例仿真

编写程序代码,编译后生成hex文件载入到proteus的单片机中,然后开始仿真。我们可以看到,随着按键的按下,发光二极管按照不同的顺序点亮,可以很清晰地指示按键按下的次数。

1.7. 总结

通过本实例我们不但学习了51单片机定时器/计数器的计数功能,更重要的是,加深了对定时和计数的理解,明白了计数初值的含义和计算方法,以及51单片机设置在计数模式是,还必须通过对应的计数端口来实现计数功能。(这个跟定时功能正好不同,定时功能是通过计算内部计数器的数值的增加来实现定时功能,不需要外部引脚上的计数信号)。

proteus单片机教程,proteus导入单片机程序(4)

图4 定时器/计数器

,

栏目热文

d991es使用教程(d991es如何移动光标)

d991es使用教程(d991es如何移动光标)

Dad shoes风格大热,很多品牌都想进去分一杯羹,很多品牌为了拥抱这个风潮推出了自家的老爸鞋。不过,要说到真正的老爸...

2022-10-30 06:50:35查看全文 >>

proteus教程画电路图(proteus电路画法总结)

proteus教程画电路图(proteus电路画法总结)

51单片机最小系统这篇用protel99se这版软件来画,peotel99se和AD最新版对于画一般的电路和PCB差别...

2022-10-30 06:57:21查看全文 >>

proteus中怎么选择单片机(proteus怎样添加c51单片机)

proteus中怎么选择单片机(proteus怎样添加c51单片机)

1. 基于proteus的51单片机开发实例(7)--按键的检测1.1. 实验目的图1是本实例的电路图。图1 独立按键检...

2022-10-30 07:08:50查看全文 >>

proteus入门到精通(proteus新手教程)

proteus入门到精通(proteus新手教程)

首先把proteus软件链接发给需要的朋友百度网盘链接:https://pan.baidu.com/s/1gaWBwyV...

2022-10-30 07:05:23查看全文 >>

protel99e和altium哪个好(protel99排名)

protel99e和altium哪个好(protel99排名)

EDA工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:EWB、PSPICE、OrCAD、PCAD、Protel、...

2022-10-30 07:10:05查看全文 >>

proteus的变压器参数怎么设置(proteus三相变压器怎么调节)

proteus的变压器参数怎么设置(proteus三相变压器怎么调节)

朱嵘涛1,徐爱钧2(1. 长江大学 工程技术学院,湖北 荆州 434020;2. 长江大学 电信学院,湖北 荆州 434...

2022-10-30 06:54:20查看全文 >>

proteus单片机的波特率怎么设置(proteus怎么对单片机编程)

proteus单片机的波特率怎么设置(proteus怎么对单片机编程)

//main.c #include <reg52.h> #include "delay.h"...

2022-10-30 07:08:15查看全文 >>

proteus使用教程(proteus使用入门教程电子版)

proteus使用教程(proteus使用入门教程电子版)

PCB和PCB类型:PCB是印刷电路板的缩写。印刷电路板是电子系统的基本组件。它们由呈板状的基板和基础材料组成,带有铜迹...

2022-10-30 06:33:04查看全文 >>

proteus怎么设vcc参数(proteus未为vcc找到封装怎么解决)

proteus怎么设vcc参数(proteus未为vcc找到封装怎么解决)

本文是电路仿真软件的进阶篇,对于电路仿真软件的基础篇,大家可翻阅往期文章哦。本文中,将基于proteus电路仿真软件的步...

2022-10-30 06:42:10查看全文 >>

女人梦见自己开车车开得飞快(梦见自己一个人开车开得很快)

女人梦见自己开车车开得飞快(梦见自己一个人开车开得很快)

梦到自己飞快地飞在路上,飞过行人,飞过路边的餐馆,飞在风景如画的乡间道路上,飞啊飞,前面没有路了,出现一条大河,飞在无边...

2022-10-30 07:03:13查看全文 >>

文档排行