如何实现数码管3位计数器
- 格式:docx
- 大小:9.08 KB
- 文档页数:1


单片机计数器C语言练习要求:编写一个计数器程序,将T0作为计数器来使用,对外部信号计数,将所计数字显示在数码管上。
该部分的硬件电路如图所示,U1的P0口和P2口的部份引脚构成了6位LED数码管驱动电路,数码管采用共阳型,使用PNP型三极管作为片选真个驱动,所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到P2.0…P2.5,当P2.0…P2.5中某引脚输是低电平时,三极管导通,给相应的数码管供电,该位数码管点亮哪些笔段,则取决于笔段引脚是高或低电平。
图中看出,所有6位数码管的笔段连在一起,通过限流电阻后接到P0口,因此,哪些笔段亮就取决于P0口的8根线的状态。
编写程序时,首先根据硬件连线写出LED数码管的字形码、位驱动码,然后编写程序如下:#include "reg51.h"#define uCHAR unsigned CHAR#define uint unsigned intuCHAR code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; //位驱动码uCHAR codeDispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0 xA1,0x86,0x8E,0xFF}; //字形码uCHAR DispBuf[6]; //显示缓冲区void Timer1() interrupt 3{ uCHAR tmp;uCHAR Count; //计数器,显示程序通过它得知现正显示哪个数码管TH1=(65536-3000)/256;TL1=(65536-3000)%256; //重置初值tmp=BitTab[Count]; //取位值P2=P2|0xfc; //P2与11111100B相或P2=P2&tmp; //P2与取出的位值相与tmp=DispBuf[Count];//取出待显示的数tmp=DispTab[tmp]; //取字形码P0=tmp;Count++;if(Count==6)Count=0;}void main(){ uint tmp;P1=0xff;P0=0xff;TMOD=0x15; //定时器0工作于计数方式1,定时器1工作于定时方式1 TH1=(65536-3000)/256;TL1=(65536-3000)%256; //定时时间为3000个周期TR0=1; //计数器0开始运行TR1=1;EA=1;ET1=1;for(;;){ tmp=TL0|(TH0<<8); //取T0中的数值DispBuf[5]=tmp%10;tmp/=10;DispBuf[4]=tmp%10;tmp/=10;DispBuf[3]=tmp%10;tmp/=10;DispBuf[2]=tmp%10;DispBuf[1]=tmp/10;DispBuf[0]=0;}}这个程序中用到了一个新的知识点,即数组,首先作一个先容。
数字电子技术课程设计报告课程设计(大作业)报告课程名称:数字电子技术设计题目:数字秒表院系:信息技术学院班级:设计者:学号:指导教师:**设计时间:2015.12.14--2015.12. 18 信息技术学院昆明学院课程设计(大作业)任务书目录一、设计目的 (1)二、设计要求和设计指标 (1)三、设计内容 (1)3.1电子秒表工作原理 (1)3.1.1总体设计 (2)3.1.2 脉冲电路设计 (2)3.1.3总清零控制电路 (6)3.1.4时间计数单元 (6)3.1.5分频电路 (8)3.1.6码驱动及显示单元 (9)3.1.7多功能数字秒表电路的组合 (10)3.2仿真结果与分析 (12)3.2.1 时钟发生器的测试 (12)3.2.2 计数、译码、显示单元的测试 (13)3.2.3 整体测试 (13)3.2.4 电子秒表准确度的测试 (14)四、本设计改进建议 (14)五、总结 (15)六、主要参考文献 (16)一、设计目的1、学习数字电路中基本RS触发器、单稳态触发器、时钟发生器及计数、译码显示器等单元电路的综合应用。
2、学习电子秒表的调试方法。
3、秒表由五位七段LED显示器显示,其中一位显示“min”,四位显示“s”,其中显示分辨率为0.01s,计时范围为0~9分59秒99毫秒;具有清零、启动计时、暂停计时及继续计时等功能;控制开关为两个;启动(继续)/暂停计时开关和复位开关。
二、设计要求和设计指标制作一个数字秒表,将单个数字秒表组合设计成可以同时对多人进行计时的多人数字秒表。
电子秒表的工作原理就是不断输出连续脉冲给加法计数器,而加法计数器通过译码器来显示它所记忆的脉冲周期个数。
1.时钟发生器:利用石英震荡555定时器构成的多谐振荡器做时钟源,产生脉冲。
2.记数器:对时钟信号进行记数并进位,百分之一秒和十分之一秒以及个位秒之间10进制,十位秒为六进制; 本设计采用可预置的十进制同步加法计数器74LS90构成电子秒表的计数单元。
计数译码显示电路实验报告总结本次实验是关于计数译码显示电路的搭建和测试。
通过实验,我们掌握了计数器的原理和译码显示电路的工作原理,并能够正确地搭建和测试这些电路。
实验中,我们使用的计数器是74LS161,它是一种同步4位二进制计数器,能够实现递增和递减计数,并能够输出位宽为4位的计数值。
我们将其与译码显示电路74LS47相连,通过74LS47将计数器的输出值转换成7段数码管所显示的数字。
在实验前,我们先对74LS161计数器和74LS47译码显示电路的原理进行了学习和理解。
我们知道,74LS161计数器拥有一个时钟输入,通过时钟信号的触发,可以实现计数器的递增或递减。
而74LS47译码显示电路拥有四个输入端口,分别对应着四位二进制码的输出,通过译码器将输出值转换成7段数码管所显示的数字。
在搭建电路时,我们按照实验指导书中给出的电路图和连接方式进行了连接。
在连接时,我们要注意电路的接线是否正确,以免出现电路短路或开路等问题。
在实验过程中,我们进行了递增和递减计数的测试,观察数码管的显示结果。
我们发现,当计数器的计数值递增或递减时,数码管显示的数字也相应地改变。
这说明我们搭建的电路连接正确,电路能够正常工作。
在实验中,我们还进行了译码器的测试。
我们先将74LS161计数器的输出接到译码器的输入端口,然后将译码器的输出端口分别接到不同的7段数码管上,观察数码管的显示结果。
我们发现,译码器能够正确地将计数器输出值转换成7段数码管所显示的数字。
这说明我们搭建的译码器电路也正确无误。
总的来说,本次实验使我们掌握了计数器和译码显示电路的原理和工作方式,并能够正确地搭建和测试这些电路。
通过本次实验,我们不仅提高了自己的实验操作能力,也加深了对数字电路原理的理解。
什么是计数器如何设计一个二进制计数器计数器是一种电子设备,用于记录和显示特定事件或数据的次数。
它可以根据输入信号的变化来实现计数,常见的应用包括时钟、定时器、频率计等。
二进制计数器是一种特殊类型的计数器,它的计数方式采用二进制编码。
每当触发信号发生变化时,计数器的值会根据预设的计数规则进行自动递增或递减。
二进制计数器常用于电子数字电路中,以表示和控制各种复杂的数字逻辑。
设计一个二进制计数器需要考虑以下几个方面:1. 计数位数:确定计数器的位数决定了其能够表示的最大数字范围。
一般而言,n位二进制计数器可以表示0到2^n-1之间的数字。
2. 计数方向:确定计数器递增或递减的方向。
递增计数器按照二进制编码规则,顺序增加;递减计数器则按照相反的顺序递减。
3. 触发条件:确定计数器何时开始计数。
可以根据时钟信号、外部触发信号和逻辑运算等条件来触发计数器的计数。
4. 计数模式:确定计数器的工作模式,包括连续计数和循环计数。
连续计数模式下,计数器会一直递增或递减,直到达到最大或最小值;循环计数模式下,计数器会在达到最大或最小值后返回到初始值重新计数。
5. 输出接口:设计计数器的输出接口,以便将计数器的结果用于其他逻辑电路。
常见的接口形式包括二进制数码、BCD码、七段显示等。
根据上述要求,设计一个简单的4位二进制递增计数器,以实现从0到15的计数:首先,确定计数器的位数为4位,即可以表示0到15的数字。
其次,计数方向设置为递增模式,按照二进制编码规则从0000到1111。
然后,通过时钟信号触发计数器的计数。
可以将时钟信号作为计数器的输入,每当时钟信号发生一个上升沿或下降沿,计数器的值就会加1或减1。
最后,将计数器的结果输出到一个四位二进制数码管,以显示当前计数器的值。
通过以上设计,一个简单的4位二进制递增计数器便实现了。
它可以用于时钟、定时器、频率计等各种应用场景,并且可以根据需要进行扩展和优化,以满足更为复杂的计数需求。