1.求计数器毕业论文
摘要:数字秒表,主要由以下几部分组成:1.控制部分;2.计数显示电路;3.电源电路。此次采用的方案是利用时基脉冲发生器产生振荡,通过控制电路等转换,最后到计数显示电路显示。此计数器计时精度 2 10 ;最大量程99.99秒;稳定度5 10 /连续工作12小时。信号输入方式:(1)机控用触点输入;(2)光控用光点输入;具有清零功能;适宜工作环境-25 ~+50 度(摄氏度)。
关键词:时基脉冲、振荡、控制电路、计数显示电路
1.引言
计数器计是一个很接近我们生活的一个小产品,为了将自己所学运用于实际生活中,我的设计课题是数字毫秒计数计。
本设计的课题为精密数字毫秒计数计,所要达到的目标并不是很多,及其考虑的因素也不是很专业化,主要目的只是检验所学知识的系统结构与密度,培养自己的创新能力与实践能力。
设计过程中,参考选录了近期一些芯片的最新技术资料和数据资料,在此,对这些设计者能够向广大朋友提供资料表示感谢!
此次制作过程中,得到指导老师的大力支持,还有同学的帮助,顺利的完成。单独自己个人的力量是无法达到这样的效果的,在此我对他们给予的帮助表示深深的感谢!
时间是具有连续性、单向性和序列性的,而且总是不断向前推进。牛顿的经典时空理论认为:时间是绝对的,与参照系无关,与空间也无关。爱因斯坦的相对论则认为:时间是相对的,与参照系和空间都有密切的联系。而量子力学的建立,又为时间的连续性提出质疑,提出了最短时间间隔的观点。
时间的量度一般以稳定的周期性运动为基础,以选定标准的周期运动的周期的某一倍数或分数为时间单位。时间是一种能用周期性的物理现象来观察和测量的物理量。在国际单位制中,时间的主单位为秒。
早期使用的计时产品电路复杂、接插件多,使用过程中常出现工作不稳定的现象。它们大多用的是灯泡及光敏三极管,由于白天光线较亮,物体通过光电门时,光线明、暗变化不明显,易造成测量失误的现象。
在宏观测量中,往往需要用到比秒大的单位;而在微观领域中,又常常用到比秒小的单位。所以我们经常用秒的倍数或分数来表示时间,而这些也正是我们现实中常用的。
本次设计的精密数字毫秒计是由时基脉冲发生器、控制电路、计数显示电路、清零电路、电源电路、光电开关和光电门组成的计时系统。该机主要特点是:电路简单,成本低廉、制作容易、测量精度高、电路工作稳定、抗干扰能力强
现在我就来制作一个,虽然不是很专业,少但是是自己的一个尝试。此次设计中我考虑了两种方案!此次我采用的是数字毫秒计数器,同样其中还有另一中方案,下面我将着重介绍自己所采纳方案。虽然设计过程很粗略化,但是我觉得学到的东西很多,自己的能力也相应地得到了提高;毕竟由于自己的能力有所限制,设计难免有所纰漏,时间仓促,能力有限,有诸多不足之处,还希望大家多多批评指正!
2.设计一个0~99单片机计数器
#include<reg51.h>
unsigned char xianshi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char miao=0,x,sz;
sbit k3=P2^6;
sbit k4=P2^7;
sbit key=P3^2;
void delay(unsigned int x)//延时
{
unsigned int y,z;
for(y=x;y>0;y--)
{
for(z=125;z>0;z--);
}
}
void zd_hs()interrupt 1
{
TH0=(65535-10000)/256;//设置初值
TL0=(65535-10000)%256;
x++;
if(x>100){x=0;
if(sz==1) miao++;
if(miao>99){miao=0; }
}
}
void anjian_hs()
{
if(key==0)
{
delay(100);
if(key==0)
{
sz++;
if(sz>1)sz=0;//key_z的取值(0,1,2)
while(key==0);
}
}
}
void XS_HS()
{
P0=0xff;
k3=0;
P0=xianshi[miao/10];
delay(10);
k3=1;
P0=0xff;
k4=0;
P0=xianshi[miao%10];
delay(10);
k4=1;
P0=0XFF;
}
main()
{TMOD=0x01;
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
EA=1;
TR0=1;
ET0=1;
while(1)
{
XS_HS();
anjian_hs();
}
}
3.设计十进制0~99的计数器,采用按键计数,数码管显示
Count EQU 30H ;标号赋值.
SP1 BIT P3.7 ;加一
SP2 BIT P3.6 ;减一
SP3 BIT P3.5 ;清零
;-----------------------------------
ORG 0000H
START: MOV Count, #0
NEXT: CALL DISP
;-----------------------------------
W1: JB SP1, W2 ;SP1为1转移.
CALL DELY10MS ;调用延时子程序.
JB SP1, W1
JNB SP1, $ ;SP1为0转移.
INC Count ;Count加1
MOV A, Count
CJNE A, #100, NEXT ;累加器与立即数不等转移.
LJMP START ;返回初始值.
;-----------------------------------
W2: JB SP2, W3 ;SP2为1转移.
CALL DELY10MS ;调用延时子程序.
JB SP2, W2
JNB SP2, $ ;SP2为0转移.
DEC Count ;Count减1
MOV A, Count
CJNE A, #255, NEXT ;累加器与立即数不等转移.
MOV Count, #99
LJMP NEXT ;返回.
;-----------------------------------
W3: JB SP3, W1 ;SP3为1转移.
CALL DELY10MS ;调用延时子程序.
JB SP3, W3
JNB SP3, $ ;SP2为0转移.
LJMP START ;返回初始值.
;-----------------------------------
DELY10MS: ;延时子程序.
MOV R6, #20
D1: MOV R7, #248
DJNZ R7, $
DJNZ R6, D1
RET ;子程序返回.
;-----------------------------------
DISP:
MOV A, Count
MOV B, #10
DIV AB ;A除以B, 商存于A余B
MOV DPTR, #TABLE
MOVC A, @A + DPTR
MOV P0, A
MOV A, B
MOVC A, @A + DPTR
MOV P2, A
RET ;子程序返回.
;-----------------------------------
TABLE:
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ;0---9
END
4.设计十进制0
看这个,跟你要求的差不多 ,你自己稍稍改下就OK啦~\(≧▽≦)/~
#include
#define uchar unsigned char
#define uint unsigned int
uchar DSY_CODE[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
uchar count=0;
void main()
{
P0=0X00;
P2=0X00;
TMOD=0X06;//TMOD=0000 0110B,C/T=1,工作于计数方式
TH0=TL0=256-1;
ET0=1; //允许T0中断
EX0=1; //允许INT0中断
EA=1;
IP=0X02; //定时器0中断优先
IT0=1; //INT0中断触发为下降沿触发
TR0=1; //启动T0
while(1)
{
P0=DSY_CODE[count/10];
P2=DSY_CODE[count%10];
}
}
void clear_counter() interrupt 0
{
count=0;
}
void key_counter() interrupt 1
{
count=(count+1)%100;
}
5.计数器的设计方法探讨的毕业论文,要求可用多种方法设计计数器
基于单片机的航标灯控制电路的设计摘要】阐述了利用单片微处理器87C51的定时功能,设计了一种简单、可靠、节能、低成本的航标灯控制电路,提高了航标灯控制电路的质量和可靠性,拓展了微处器的应用范围。
【关键词】单片机;航标灯;87C51(一)硬件电路及工作原理1.硬件电路为整体电路简单,低功耗、低成本高可靠性目标的实现,本电路选用了MCS87C51单片微处理器作为航标控制电路的核心,时钟频率选为12MHZ。87C51是INTEL公司MCS-51系列单片机中基本型产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的体系结构和指令系统。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,是80C51BH的EPROM版本,电改写光擦除的片内4kB EPROM。87C51内置8位中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
快速脉冲编程,如编写4kB片内ROM仅需12秒。此外,87C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
航标灯的工作特点是夜晚工作而白天停止工作,实现这样的工作模式可以有多种方法,如可通过控制87C51的外部中断源INT0或INT1引脚的电位,启动或停止定时器/计数器实现晚上工作而白天停止的工作模式。除此以外,也可以使用门控位GATE为1的条件,允许外部输入电平控制启动或停止定时器/计数器来实现。
但这两种情况下微处理器不管是白天还是晚上都处于工作状态,不能有效的降低能耗。本设计采用光敏三极管结合继电器控制的方式,白天利用光敏三极管和继电器组成的控制电路切断微处理器的供电源,迫使微处理器停工作,达到降低能耗的目的。
到夜晚来临时又通过光敏三极管和继电器的控制作用接通蓄电池向微处理器的提供电能,微处理启动工作。整个航标灯控制电路如图1所示。
在图1中Q1、Q2及继电器K组成光检测电路,LM7805及电容C1、C2构成微处理器80C51的供电电路路,C3、R2为微处理器的上电复位电路,12MHz晶振及两个30PF的电容与80C51内部电路共同构成振荡电路为80C51提供时钟信号,Q3、Q4等构成微处理器与LED航标灯的接口电路。2.工作原理由图1可知,整个控制电路由蓄电池提供电能,白天光敏本极管Q1导通,三极管Q2(NPN型)截止,继电器J失电,常开触点K断开,微处器87C51无供电电源停止工作。
当夜晚时,光敏三极管Q1截止,Q2导通,继电器J得电,常开触点K闭合,蓄电池经LM7805稳压向微处理器87C51供电,同时80C51由复位电路复位,复位后87C51进入程序执行状态,执行驻留87C51内程序存储器里的程序,向P1.0输出控制信号,通过由Q3、Q4组成的安口电路驱动LED,完成航标灯的闪烁或定光控制,按钮开关S作为手动校验用。(二)软件设计航标灯根据其所处的位置和作用不同,有多种灯光模式。
比如定光、闪光等,闪光标灯中又根据所处具体位置的不同又有快闪,顿闪之分,这里以过河标为设计目标。过河标对灯光的要求为顿闪,闪光周期为3S,亮2S,灭1S。
利用87C51的定时功能很容易实现这种控制模式,当然要实现长达2S的定时,这个值已超出了定时器T0或T1的最大定时值。为此在这里采用定时器定时和软件计数相结合的方法。
如在主程序中设定一个初值为40的软件计数器和定时为50ms。这样每当定时到50ms时CPU就响应它的溢出中断请求,从而进入客观存在的中断服务程序。
在中断服务程序中。CPU先使软件计数器减1,然后判断它是否为零。
若它为零,则表示2S定时间到,这样就可获得较长的定时时间。由此可得该航标灯控制程序的流程图和源程序如下。
1.程序流程图(上接第114页)2.源程序ORG 0000HAJMP MAINORG 000BHAJMP T0INTORG 0100HMAIN:MOV SP,#40HCLR P1.0SETB EASETB F0MOV TMOD#01HMOV TL0,#0B0HMOV TH0,#3CHSETB PT0SETB ET0SETB TR0MOV R7,#40HERE:AJMP HERET0INT:JNB F0,DOWNMOV TL0,#0B0HMOV TH0,#3CHDJNZ R7,EXITMOV R7,#40CLR F0CLR P1.0MOV R6,#20MOV TL0,#0B0HMOV TH0,#3CHAJMP HEREDOWN:MOV TL0,#0B0HMOV TH0,#3CHDINZ R6,EXITSETB P1.0SETB F0EXIT:RETIEND(三)航标灯控制电路改进和思考上述设计利用微处理来实现对航标灯的控制,具有耗电省,成本低,可靠性高,维护维修方便等特点,解决了传统航标控制电路存在的一些缺点,尽管如此也还有许多值得改进和思考的地方,航标灯的工作条件恶劣,灯具经常发生移位或损坏,为了能及时地了解各航标灯的工作状态和工作正常与否,以便及时对出现故障的航标灯进行维护,这就需航标灯具有智能功能,完成自我诊测,报警等功能。相信随着微处理器技术和现代通信技术在航标灯控制领域的不断应用和完善,航标灯将会越来越智能化,可靠性也会越来越高,。
6.要做一个数电的课程设计,从0到99的电子秒表,有没有详细的过程
数电的课程设计,就用计数器做呗,从0到99的电子秒表,其实就是0~99的加法计数器。方法很多呀,集成计数器就更多啦。如果只是画一个电路图而已,那就随便选一个计数器。要是做实物,先看学校实验室都有什么集成电路。给你一个例子做参考,在这个基本上再补充,或就这样画也行。
7.设计一个程序:能够达到0
你这个主程序MAIN是干什么的??我没看的懂你这个主程序。
和你说的。
根本就不是一回事啊。
如果只是要用P1 P2控制2个LED 显示 1-99那很简单, #include
如果你给的位码就是片选地址使用I/O口1 控制LED I/O口2 控制片选的话#include
8.0到99定时电路的工作原理
一般数字电路中采用T触发器级联完成二进制计数,具体来说,在每个时钟的下降沿将T触发器的输出取反,并送到下一个T触发器的T输出端,依次级联,并将第一个T触发器的输出作为最低位,
0到99共需要7个T触发器,当7个T触发器的输出序列达到1100011时,计数结果达到
1*64+1*32+0*16+0*8+0*4+1*2+1*1=99,当时钟频率为1秒时,计数器定时为99秒。
设计一个组合逻辑,当输出序列达到1100011时,将时钟停止或输出timeout信号。
9.单片机设计0
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit we1=P2^7; //数码管位
sbit s1=P2^6; //轻触开关
sbit s2=P2^5;
uint a=0; //显示数值
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8, //共阳数码管数值0-9
0x80,0x90
/*0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07, //共阴数码管数值0-9
0x7f,0x6f*/
};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void xianshi() //数码管显示
{
we1=1; //共阴为0 共阳为1
P0=table[a];
delay(8);
}
void key()
{
if(s1==0)
{
delay(5);
if(s1==0)
{
a++;
if(a==10)
a=0;
while(!s1); //等待松开
}
}
if(s2==0)
{
delay(5);
if(s2==0)
{
a--;
if(a==-1)
a=9;
while(!s2); //等待松开
}
}
}
void main()
{
while(1)
{
xianshi();
key();
}
}
10.单片机的 《00
;********************************************************************/ /* 实验目的:1、掌握数码管的动态扫描原理 * 2、掌握单片机对按键的控制原理 * 实验内容:通过按一下P3.3按键,数码管做 1 的累加, 实现00~99的计数功能,当计到99时又从00开始 */ ;/* 程序详细功能介绍: ; * 具体的硬件结构,大家可以看 WS 系列产品的原理图 ;* 利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.3管脚接一个轻触开关, ;* 作为手动计数的按钮. 数码管驱动采用动态扫描方式用单片机的P0.0-P0.7驱动数码管的段码, ;* P1.3 控制个位数码管的共阳极公共端,P1.2 控制十位数码管的共阳极公共端 ;* 大家可自行修改程序,扩展到0000~9999的计数范围 ;*/ Count EQU 30H AN BIT P3.3 WEI BIT 00H;按键消除振荡位标志 ORG 0000H CLR P2.7 LJMP START ORG 0100H START: MOV Count,#00H NEXT: MOV A,Count MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A ;十位的显示处理 CLR P1.2 LCALL DELY10MS SETB P1.2 MOV A,B MOVC A,@A+DPTR MOV P0,A ;个位的显示处理 CLR P1.3 LCALL DELY10MS SETB P1.3 ;***************************** ;********按键方法一*********** ;***************************** ;JB AN,NEXT ;按键检测 ;LCALL DELY10MS; ;LCALL DELY10MS; ;LCALL DELY10MS; ;LCALL DELY10MS; ;JB AN,NEXT ;LCALL DELY10MS ;LCALL DELY10MS ;LCALL DELY10MS ;***************************** ;*****按键方法二************** ;***************************** JB AN,NEXT1 ;按键检测 JB WEI,NEXT ;在程序循环过来时,若按键没有放开,则不执行下面的程序 SETB WEI ;对按键标志位置1 LJMP NEXT2 ;执行计数加1程序 NEXT1:CLR WEI;若按键放开,则对按键标志位清0, LJMP NEXT ;在执行显示程序,实现按键的消除振荡 NEXT2: ; INC Count ;计数加一 MOV A,Count CJNE A,#100,NEXT LJMP START DELY10MS: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET TABLE: DB 0C0H;0 DB 0F9H;1 DB 0A4H;2 DB 0B0H;3 DB 099H;4 DB 092H;5 DB 082H;6 DB 0F8H;7 DB 080H;8 DB 090H;9 END。
转载请注明出处众文网 » 0-99计数器毕业论文(求计数器毕业论文)