单片机计数显示器
51单片机的电子计数器

基于51单片机的电子计数器一.什么是电子计数器?电子计数器是利用数字电路技术数出给定时间内所通过的脉冲数并显示计数结果的数字化仪器。
二.基本组成:电子计数器主要由输入电路、比较电路、时间基准电路、控制电路和计数显示电路等部分组成。
1.输入电路:电子计数器的输入电路主要有三个作用,一是阻抗变换,二是电压放大,三是整形,所以它有三个组成部分。
阻抗变换的目的是通过提高输入端的阻抗来减小对被测信号源的分流,常用晶体管射极跟随器或场效应管源极跟随器来实现。
电压放大采用输入放大器,它们除需具有一定的放大倍数外,还需要有较宽的通频带,以保证电子计数器有一定的灵敏度和测量范围。
整形电路的作用是对被测量整形,使输至比较电路入口的波形规整化,成为前、后沿较陡的矩形脉冲,以保证计数电路能被可靠地触发,整形电路常用施密特触发器来实现。
2.比较电路:电子计数器的比较电路是由一个与门电路来实现被测信号(如频率)与标准时间信号的比较的。
3.时间基准电路(时基电路):电子计数器是用比较法进行测量的,也就是将被测信号与一系列标准时间信号进行比较。
4.控制电路:控制电路是电子计数器的指挥系统,在控制电路所送出的各种控制信号的指挥下,协调计数器各单元电路的工作。
5.计数显示电路:电子计数器的计数电路是对来自闸门的脉冲个数/N进行计数,并将计数结果用数字显示出来的仪器。
为了提高计数器的测量速度,并使每一次测得的数据段相对稳定地显示出来,常在计数电路后加上寄存器,用来暂时寄存测量所得的数据。
6.自校:自校是电子计数器对其内部基准信号源进行测量的一种功能,可借以检查自身的逻辑功能是否正常。
三.如何实现?实现计数功能,比较方便的办法是利用单片机内部的定时/计数器。
也可以采用下面三种方法:1.采用时基电路计数:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件电路。
但不可编程。
2.采用可编程芯片计数:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。
认识单片机的定时器计数器

void main(void) { TMOD=0x01;
TH0=-25000/256; TL0=-25000%256; TR0=1; ET0=1; EA=1; while(1); } void timer0(void) interrupt 1 { TH0=-25000/256;
TL0=-25000%256; P10=~P10; }
根据定时时间T,及公式(1)、(2)分别可以求出初 值N为:
方式1: N=216-T×fosc/12
(3)
方式2、方式3 :N=28-T×fosc/12 (4)
如果fosc=12MHZ,以上公式可简化为
方式1: N=216-T
方式2、方式3 :N=28-T
例如:系统的时钟频率是12MHz,在方式1下,如果希望定时 器/计数器T0的定时时间T为10ms,则初值N =216-T=6553610000=55536
任务一、认识单片机的定时器/计数器
一、定时器/计数器及其应用 在单片机应用系统中,定时或计数是必不可少的。例如: 测量一个脉冲信号的频率、周期,或者统计一段时间里 电机转动了多少圈等。常用的定时方法有:
1、软件定时 软件定时是依靠执行一段程序来实现的,这段程序本身 没有具体的意义,通过选择恰当的指令及循环次数实现 所需的定时,由于执行每条指令都需一定的时间,执行 这段程序所需总的时间就是定时时间。 软件定时的特点是无需硬件电路,但定时期间CPU被占 用,增加了CPU的开销,因此定时时间不宜过长,而且 定时期间如果发生中断,定时时间就会出现误差。
led=_crol_(led,1); 满10次变量led左移1位送P0口
P0=led;
}
}
[案例3] 用定时器的计数方式实现外部中断。如图 所示,P0口控制8只发光管轮流点亮,发光管点 亮时间为500ms,单脉冲电路控制发光管的移动 方向,按下单脉冲按钮,发光管左移,再按下发 光管右移 。
基于单片机的数字频率计设计

基于单片机的数字频率计设计摘要本方案主要以单片机为核心,主要分为时基电路,逻辑控制电路,放大整形电路,闸门电路,计数电路,锁存电路,译码显示电路七大部分,设计以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测的正弦波或者三角波整形为方波。
利用单片机的计数器和定时器的功能对被测信号进行计数。
编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
本设计以89C51单片机为核心,应用单片机的算术运算和控制功能并采用LED 数码显示管将所测频率显示出来。
系统简单可靠、操作简易,能基本满足一般情况下的需要。
既保证了系统的测频精度,又使系统具有较好的实时性。
本频率计设计简洁,便于携带,扩展能力强,适用范围广。
[关键词]单片机:运算;频率计;LED数码管AbstractThe program mainly microcontroller as the core, are divided into time-base circuit, the logic control circuit, amplifier shaping circuit, the gate circuit, the counting circuit, latch circuit, decoding circuit most of the seven shows, design a microcontroller as the core, the measured signal the first amplifier to amplify the incoming signal, and then was sent to the waveform shaping circuit surgery, the measured sine wave or triangle wave shaping as a square wave. Counter and timer microchip features of the signal count. Write the corresponding program can automatically adjust the measurement range of SCM, and the frequency of the measured data to the display circuit displays.The design of the 89C51 microcontroller core, microcontroller applications and control functions and arithmetic operations with LED digital display tube to the measured frequency is displayed. System is simple, reliable, easy to operate and can basically meet the general needs. Both to ensure the accuracy of the system frequency measurement, but also the system has good real-time. The frequency meter design is simple and easy to carry, expansion capability, wide application.[Key words] microcontroller, operation, frequency meter, LED digital tube目录摘要 (1)概述........................................ 错误!未定义书签。
单片机二进制八个led灯计数

单片机二进制八个led灯计数以下是一种可能的实现方式:```c#include <reg52.h>sbit LED1 = P1^0; // 定义 LED1 连接的引脚sbit LED2 = P1^1; // 定义 LED2 连接的引脚sbit LED3 = P1^2; // 定义 LED3 连接的引脚sbit LED4 = P1^3; // 定义 LED4 连接的引脚sbit LED5 = P1^4; // 定义 LED5 连接的引脚sbit LED6 = P1^5; // 定义 LED6 连接的引脚sbit LED7 = P1^6; // 定义 LED7 连接的引脚sbit LED8 = P1^7; // 定义 LED8 连接的引脚unsigned char count = 0; // 计数器变量void delay() {unsigned int i, j;for(i = 0; i < 100; i++) {for(j = 0; j < 1000; j++) {}}}void main() {while(1) {LED1 = count & 0x01; // 判断计数器的最低位是 0 还是 1LED2 = (count >> 1) & 0x01; // 判断计数器的第二位是 0 还是 1 LED3 = (count >> 2) & 0x01; // 判断计数器的第三位是 0 还是 1 LED4 = (count >> 3) & 0x01; // 判断计数器的第四位是 0 还是 1 LED5 = (count >> 4) & 0x01; // 判断计数器的第五位是 0 还是 1 LED6 = (count >> 5) & 0x01; // 判断计数器的第六位是 0 还是 1 LED7 = (count >> 6) & 0x01; // 判断计数器的第七位是 0 还是 1 LED8 = (count >> 7) & 0x01; // 判断计数器的最高位是 0 还是 1count++; // 计数器加 1delay(); // 延时一段时间}}```这段代码使用了 P1 口的 8 个引脚分别连接到 8 个 LED 灯,通过不断改变P1 口的引脚状态来实现二进制计数。
基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计单片机(Microcontroller)是一种集成了微处理器、存储器和各种输入输出功能的芯片,广泛应用于嵌入式系统中。
AT89C51单片机是英特尔公司生产的一款典型的8位微控制器,其具有强大的功能和灵活的设计特性,被广泛应用于工业控制、汽车电子、消费类电子产品等领域。
在众多应用中,计数器是一种常见的电子器件,被广泛应用于各种领域,比如工业控制、实验测量、智能家居等。
基于AT89C51单片机的计数器设计,可以实现对信号的计数和显示,具有较高的稳定性和可靠性。
本文将介绍基于AT89C51单片机的计数器设计。
首先介绍AT89C51单片机的基本特性和引脚布局,然后讨论计数器的原理和设计思路,最后给出具体的设计方案和实现步骤。
一、AT89C51单片机的基本特性和引脚布局AT89C51是一款高性能、低功耗的8位CMOS微控制器,其主要特性包括:1. 内置4KB闪存程序存储器,用于存储用户程序;2. 128字节RAM,用于存储临时数据和寄存器;3. 32个通用I/O引脚,用于连接外部器件和传感器;4. 完整的串行通信接口(UART),用于与外部设备进行通信;5. 定时器/计数器和PWM输出,用于实现各种定时和计数功能;6. 多种工作模式选择,包括被动低功耗模式和中断工作模式。
AT89C51单片机的引脚布局如下图所示:(图片)P0、P1、P2和P3是AT89C51单片机的四个通用I/O端口,分别具有8个引脚,用于连接外部设备和传感器。
X1和X2是晶体振荡器的输入和输出端,用于提供时钟信号。
RESET 是复位端,用于复位单片机。
EA和PSEN是扩展ROM控制端和程序存储器的读取端,用于外接ROM和实现程序存储。
ALE/PROG是地址锁存器的输入,用于地址总线的多路选择。
RXD 和TXD是串行通信接口的接收和发送端口,用于与外部设备进行通信。
二、计数器的原理和设计思路计数器是一种常用的数字电路,用于对输入信号进行计数和显示。
单片机计数

单片机计数是一种常见的应用,通常用于测量时间、频率、转速等参数。
下面我将用500-800字回答单片机计数的问题:单片机计数的基础原理是利用单片机内部的计数器,通过对外部信号的计数来达到计数的目的。
具体来说,当外部信号触发单片机内部的计数器时,计数器会加一,从而反映出外部信号的频率或者数量。
一、硬件连接单片机的计数通常需要与外部传感器或设备进行连接。
常见的连接方式包括:1. 脉冲信号输入:通过外部脉冲信号传感器,将外部信号转化为单片机可以识别的脉冲信号,再通过单片机内部的计数器进行计数。
2. 红外对管传感器:利用红外对管传感器检测外部物体的移动或位移,通过单片机内部的计数器记录检测到的物体数量。
3. 霍尔传感器:利用霍尔效应原理检测磁场的变化,适用于检测机械臂等物体的转速或移动速度,通过单片机内部的计数器记录移动的距离或速度。
二、软件实现单片机的计数功能通常由软件实现。
根据不同的连接方式,具体的软件实现方式也有所不同。
一般来说,单片机的计数器可以通过定时器中断或定时器定时来实现。
在中断或定时器触发时,计数器加一,从而实现计数功能。
在实现计数功能时,需要注意以下几点:1. 计数精度:根据不同的应用场景,需要选择合适的计数精度。
例如,对于测量时间或频率的应用,通常需要较高的计数精度;而对于测量转速或物体数量等应用,可以适当降低计数精度。
2. 校准和调整:为了确保计数的准确性,需要根据实际应用情况对单片机进行校准和调整。
例如,在脉冲信号输入时,需要根据传感器类型和灵敏度进行校准和调整。
3. 抗干扰能力:在实际应用中,可能会受到各种干扰因素的影响,如电磁干扰、电源波动等。
因此,需要采取相应的措施来提高单片机的抗干扰能力,以确保计数的准确性。
综上所述,单片机计数需要硬件连接和软件实现相结合。
根据不同的应用场景和需求,需要选择合适的连接方式和软件实现方法,同时需要注意计数的精度、校准和调整以及抗干扰能力等方面的问题。
单片机实验一计数显示器

单片机原理及应用实验报告一实验名称:计数显示器实验指导老师:学生姓名:班级:学号:【实验目的】熟悉51单片机的基本输入\输出应用,掌握Proteus ISIS模块的原理图绘图方法及单片机系统仿真运行方法。
【实验方法】实验电路原理图如图1.1所示,图中含有如下五个分支电路:共阴极数码管LED1和LED2,P0口,P2口,上拉电阻RP1以及Vcc组成的输出电路;由按钮开关BUT,P3.7和接地点组成的输入电阻;由C1,C2,晶振X1,引脚XTAL1,XTAL2与接地点组成的时钟电路;由C3,R1,引脚RST和Vcc组成的上电复位电路;由Vcc和引脚(EA非)组成的片内ROM选择电路(简称片选电路)。
在编程软件的配合下,该电路可实现如下计数功能显示,可统计按钮BUT的按压次数,并将按压的结果以十进制形式显示出来;当显示值达到99后可自动从一开始循环。
图1.1【实验内容】观察Proteus ISIS模块的软件结构,熟悉菜单栏,工具栏,对话框等基本单元功能,如图1.2图1.2选择元件(1.3),画导线(1.4),画总线(1.5),修改参数(1.6)等基本操作图1.3图1.4图1.5图1.6 学会可执行文件加载及程序仿真运行方法;如图1.7图1.7验证计数显示器的共能。
【电路原理图分析】上拉电阻的存在是因为P0口不能正常输出信号“1”(因为漏极开路),所以接上拉电阻是必须的。
【实验程序】#include<reg51.h>void delay(unsigned int c) ; //申明延时函数,延时时间为c*10mssbit key=P3^7; //位申明unsigned char code duanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0、1、2、3、4、5、6、7、8、9的显示码void main(){ int a,b;int i=0;while(1){if(key!=1){delay(1); //延时消抖(实际电路中会出现颤抖)if(key==1) //判断按键是否松开,松开之后才会自加一,不然计数不作处理i++;}if(i==100)i=1;a=i/10;b=i%10;P0=duanma[a]; //输出相应的十位P2=duanma[b]; //输出相应的各位}}void delay(unsigned int c) //延时程序10ms{unsigned char a, b;for (;c>0;c--){for (b=0;b<38;b++){for (a=0;a<130;a++);}}}【仿真运行截图】【实验小结】由于C语言有比较好的移植性,所以我从我的单片机教程上移植了数码显示管的断码,本着是16个I/0口控制两个数码管就没用到相应的74LS138译码器来选择哪个数码管显示(即位选),就是实验程序调试时发现延时的时间控制不是那么好控制,远远没有定时器那么精确。
基于C51单片机的000-999计数器

[2]迟忠君.单片机应用技术.北京:北京邮电大学出版社,2016(6):3-5。
三、设计执行过程(请根据以下内容填写对该设计项目用到的理论知识)
1、总体设计框图(画出总体设计框图,并结合设计框图简述工作原理,写不下可另附页)
五、项目结题评审(请根据以下内容做好记录,并提交完整的项目设计报告给老师打分)
1、项目答辩记录(请将老师提的问题和答案记录下来)
问题一:
问题二:
记录人:年月日
2、结题答辩组评审意见(以下由老师填写)
成绩专家组:、年月日
3、项目成绩评定(请将老师提的问题和答案记录下来)
项目教学活页成绩:。
答辩成绩:。
若干
12MHz晶振
1个
0.8mm焊锡
若干
30pF瓷片电容
2个
10uF电解电容
1个
10k电阻
1个
5、焊接图纸和说明(用铅笔或专业软件画出详细的焊接布局设计图,元件引脚标注详细清晰。)
说明:使用ProtellDXP画出pcb布线图,布线图采用双层布线模式,蓝色导线位于底层,红色导线位于顶层。
6、实物效果照片和功能说明(用高清相机拍出实物的效果照片,此页彩色打印,要体现出任务书中的功能效果,图片高清,并附有功能效果的文字说明,可另附页。)
说明:考虑到数码管位置的摆放问题,故将程序的P1和P0对调,P0控制十位数显示,P1口控制百位数显示,其余不变。
四、项目总结(请根据以下内容做工作总结,并提交完整的项目设计报告)
1、学习小结(对学习到的知识点进行总结、归纳)
通过这次000-999计数器的设计,总体来说,我的收获很大。无论是在培养自己的实验动手能力还是在自己独立思考能力方面。在此次点阵设计的过程中,更进一步的熟悉了proteus软件和DXP软件的使用以及加深了对芯片结构的了解和掌握,加强了对c语言的认识,学会了如何拆分数字的百位,十位以及个位,并将其传送到单片机的各个端口,了解了数码管的内部结构,在以后的学习中会有很大的帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子秒表显示器
一、设计要求及目的
设计要求:在Keil C中用C51语言编程,并在Proteus中模拟51单片机的电子秒表显示器,并在电子秒表显示器中加入中断和定时,使得电子秒表显示
器反复的显示某个区间(0~60)的值。
设计目的:熟悉51单片机的基本输入/输出应用,掌握Proteus ISIS模块的原理图绘图方法及单片机系统仿真运行方法,同时,掌握C51语言的编程方式
和数据结构,掌握中断和定时的概念以及在51系列单片机中的应用。
二、实验环境
操作平台:Windows 编程软件:Keil C 模拟仿真软件:Proteus8
三、元器件列表
四、实验原理
1.实验电路原理图如图1所示,图中有如下5个分支点路:由共阴极数码管LED1
和LED2、P0口、P2口、上拉电阻RP1以及V cc组成的输出电路;由按钮开关BUT、、和接地点组成的输入电路;由C1、C2、晶振X1、引脚XTAL1、XTAL2与接地点组成的时钟电路;由C3、R1、引脚RST和V cc组成的上电复位电路;
由V cc和引脚EA组成片内ROM选择电路(简称片选电路)。
图表 1 实验原理图
2.数码管的初始显示值为“00”;当1s产生时,秒计数器加1;秒计数器到60
时清零,并从“00”重新开始,如此周而反复。
3.软件编程原理:采用T0定时方式1中断法编程,其中1s定时采用20次50ms
定时中断的方案实现。
程序设计的流程图如图2所示。
主函数
变量定义初始化T0定时方式1初始
化
计数初值初始化数码管显示初始化T0中断初始化
启动T0
原地循环
T0中断函数
中断计数器加1
1s计时到?
秒计数器加1,
中断计数器清0
60s计时到?
秒计数器清0
秒值输出显示
重装计数初值
中断返回
Y
Y
N
N 图表2 程序流程图
五、程序源代码
#include<>
unsigned char count1=0; //中断计数器
unsigned char count2=0; //计数器变量
usigned char code table[ ]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f}; //LED显示字符
timer0() interrupt 1{ //T0中断函数
count1++; //计数器增1
if(count1==20){ //将1s分为20个50ms
count1=0; count2++;
}
if(count2==60) count2=0; //计数器达到 60时清零P0=table[count2/10]; //显示十位数字
P2=table[count2%10]; //显示个位数字
TH0=0x3c; TL0=0xb0; }
main(){
TMOD=0x01; //设置T0技术方式为1
TH0=0x3c; //计数初值
TL0=0xb0;
P0=table[count2/10]; //显示初值"00"
P2=table[count2%10];
ET0=1;
EA=1; //开启中断
TR0=1; //启动T0
while(1); } //循环
六、实验结果
图表3 数码管初始显示
图表4 数码管经过一个定时周期显示
说明:图3显示的是初始时刻数码管的显示(“00”),图4显示的是数码管在经过一个定时周期60s后显示的值(“59”)。
当数码管显示如图4所示时,在下一时刻,数目管将从“00”开始重新显示,如此反复。
七、总结
通过一个学期的单片机
知识的学习和平时实验课的学习,使我对51单片机的原理有了深刻的认识,并对51单片机的应用有了一定的了解和掌握。
同时,通过本次设计计数显示器的实验学习,使我对51系列单片机的中断、定时的概念以及有关单片机的并行
I/O口有了很好的理解,并学会了与中断和定时相关的编程,不仅如此,在对51系列单片机的C语言编程方面有了更好的提高。
但是,在实验过程中,也存在很多的问题等待自己去进一步的学习,比如对模拟仿真软件的使用不够熟练、在定时和中断的编程方面有时不能灵活运用等。