两位十进制倒计时秒表定时器
下棋定时钟设计 -毕业设计
下棋定时钟设计学生:XX 指导教师:XX内容摘要:下棋定时钟设计是在下棋比赛过程中,两人下棋时对双方的每一步行棋时间设定一个倒计时。
本设计采用CD4060分频实现秒脉冲,可逆十进制计数器74LS192实现倒计时,LED数码管显示剩余时间。
此设计应用十分广泛,可用于下棋比赛或者是平常的对羿中限定时间等。
经过小小的改动,此设计还可用于其它倒计时,例如:篮球比赛中的24秒进攻倒计时,交通灯电路的设计等。
本设计还有很多优点,如结构简单,制作成本低,便于空闲时个人制作。
关键词:下棋分频倒计时 LED显示Chess set clock designAbstract: The timing design of playing chess is that when two people play chess in playing chess competition process, a time countdown is set up to the both sides to limit the time of each foot. The design uses the CD4060 to divide frequency to gain the second of pulse, reversible decimal system counter 74LS192 to realize the countdown of time, and the LED numerical code to demonstrate the remaining time. The application of this design is very broad, it may be used to play chess prescribing a time limit to wait among competition or two people’s game in the usual time. By a little changing, this design may be used in other time countdown, for instance: Countdown 24 seconds in basketball attacking game, circuital design of traffic light and so on. The design still having many merits, for example, its structure is simple and the cost is low, and it is fit to personal making in spare time very well.Keywords: Play chess Frequency division Time countdown LED display目录前言.................................................................................................................. 错误!未定义书签。
两位十进制倒计时秒表定时器
TL1=(65536-45872)%256;
num++;
if(num==20)
{
num=0; shi=m/10; ge=m%10; m--; if(m==-1) { TR1=0;shi=0;ge=0; } } }
sbit POUT = P0^0;
//扬声器控制引脚
sbit P2_7=P2^7;
sbit P2_4=P2^4;
uint shi,ge,num;
int m;
uchar
code
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39};
音符与频率对照关系如表所示。对于每一个音符的演奏时间,可以通过软件延时 来处理。首先确定单位延时时间程序(根据CPU的频率不同而有所变化)。然后确定每 个音符演奏需要几个单位时间,就几次调用延时子程序即可。
表 音符与频率对照表(单位:Hz)
频率表是将曲谱中的音符对应的频率值依次记录下来,时间表是将各个音符发音的相
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void play(uint shi,uint ge)
{
P2_7=0;P0=table[shi];P2_7=1;
P2_4=0;P0=table[ge];P2_4=1;
一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出 这个音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这 段乐曲。利用定时器控制单片机的 I/O 引脚输出方波,将相应一种频率的计数初值写 入计数器,就可产生对应频率的方波。
2位10进制计数器
//设计一个2位10进制计数器,每秒加1,在LED上显示#include "reg51.h"#define THCO 0xee#define TLCO 0x0#define THC1 0xee#define TLC1 0x0unsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char Data_Buffer[2]={0,0};unsigned int count=0;sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;void main(){TMOD=0x11;TH0=THCO;TL0=TLCO;TR0=1;ET0=1;TH1=THC1;TL1=TLC1;TR1=1;ET1=1;EA=1;while(1);}void timer1() interrupt 3{static unsigned char Bit1;TH1=THC1;TL1=TLC1;count++;if(count>200){count=0;Bit1++;if(Bit1>99)Bit1 = 0;Data_Buffer[0]=Bit1/10;Data_Buffer[1]=Bit1%10; }}void timer0() interrupt 1{static unsigned char Bit=0;TH0=THCO;TL0=TLCO;Bit++;if(Bit>=2)Bit=0;P1|=0x0f;P0=Duan[Data_Buffer[Bit]]; switch(Bit){case 0: P10=0;break;case 1: P11=0;break;}}实验5思考题#include "reg51.h"#define THCO 0xee#define TLCO 0x00#define THC1 0xee#define TLC1 0x00unsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char Data_number[4]={1,2,3,4};unsigned char Data_time[2]={0,0};sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit key=P3^2;int mode=0,Bit1=0,Bit=0;void main(){TMOD=0x11;TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EX0=1;IT0=1;TH1=THC1;TL1=TLC1;TR1=0;ET1=1;EA=1;while(1);}void tans_mode() interrupt 0 {int t;if(key==0){for(t=0;t<1000;t++);if(key==0){while(!key);mode++;if(mode==3)mode=0;Bit=0;if(mode==2){TR1=1;Bit1=0;}else{TR1=0;}}}}void timer1() interrupt 3{static unsigned int count=0;TH1=THC1;TL1=TLC1;count++;if(count>200){count=0;Bit1++;if(Bit1>99)Bit1=0;Data_time[0]=Bit1/10;Data_time[1]=Bit1%10; }}void timer0() interrupt 1{TH0=THCO;TL0=TLCO;P1=0x0f;if(mode==0){P0=Duan[0];}if(mode==1){Bit++;if(Bit>=4)Bit=0;P0=Duan[Data_number[Bit]]; }if(mode==2){Bit++;if(Bit>=2)Bit=0;P0=Duan[Data_time[Bit]];}switch(Bit){case 0: P10=0;break; case 1: P11=0;break; case 2: P12=0;break; case 3: P13=0;break; }}。
迷你计时器操作方法
迷你计时器操作方法
迷你计时器是一种小型的计时设备,通常用于测量时间并进行倒计时操作。
以下是一些常见的迷你计时器操作方法:
1. 启动计时器:按下计时器上的“Start”或“On”按钮,计时器开始计时。
2. 停止计时器:按下计时器上的“Stop”或“Off”按钮,计时器停止计时。
3. 重置计时器:按下计时器上的“Reset”或“Clear”按钮,计时器的时间会被重置为初始设置的时间。
4. 调整计时器时间:有一些迷你计时器可以调整计时时间。
这可以通过旋转或按下计时器上的按钮来完成。
具体的调整方法会因计时器型号而异,您可以查阅计时器的说明书以了解具体操作方法。
5. 设置倒计时时间:部分迷你计时器也支持倒计时功能。
您可以按下计时器上的“倒计时(Countdown)”按钮,然后使用调整按钮或旋转设置倒计时时间。
完成设置后,启动计时器即可开始倒计时。
6. 警报提醒:大多数迷你计时器在计时结束时会发出警报声或闹铃。
您可以通过按下“Alarm”或“警报(Alarm)”按钮来设置或取消警报功能。
注意:具体的操作方法可能会因迷你计时器的型号和品牌而有所不同。
如果您有迷你计时器的说明书,建议您仔细阅读说明书中的操作说明。
如果没有说明书,您可以尝试按照上述基本操作方法进行操作,但操作结果可能会因计时器型号而有所不同。
两位数码管计时0-99 实验
{ P31=0; P2=a[y]; P30=1; P30=0; P2=a[x]; P31=1;
} } main() { for(i=0;i<100;i++) { b=i/10; //shiwei
c=i%10; //gewei xianshi(c,b); } }
4
单片机实验报告
上述两种编程语言编写程序的思路基本一致,都是通过修改程序中动态显示的 时长实现显示时长的调节。上述两个程序有一个共同的缺点,那就是无法特别准确 的定时。在计时不要求很准确的场合使用可以,但是在对计时准确性要求较高的场 合使用时,则不是很适合。如果要求显示准确性较高,例如秒表,可以采用定时器 中断的方式修改以上程序。
对于没有 Keil 编程软件的编程者,可以将如下代码存入 HEX 文件中,再将该 HEX 文件下载至单片机或导入仿真软件中。 程序 HEX 代码如下: :0300000002008576 :0C008500787FE4F6D8FD758107020000CA :02000000802E50 :100030007530007830B6640050061145053080F503 :1000400075300080F0E53075F00A84F53185F032C6 :100050007C0A7B0A7AFFC2B190B000C2B0E53293F5A0D2B100DAE7DB3E :10007000E3DCDF22C0F9A4B0999282F880908883F3
数电课程设计--十秒倒计时定时器
辽宁师范大学《数字电路》课程设计(09级本科)题目:定时器1 学院:物理与电子技术学院专业:电子信息工程班级:班级学号: 14 姓名:张宁指导教师:赵静邱红张卓完成日期:2011 年 10 月 27 日一.设计内容及要求10秒的倒计时定时器,倒计时要求用数码显示,当定时到1秒时,有声音提示,提示声音为秒,当倒计时到0时停止计数二.总体方案设计由设计内容及要求,我设计了一个以NE555构成的多谐振荡电路,来发出一秒间隔的脉冲;用74LS192进行倒计时,通过74LS47连接一个数码显示器;由74LS192发出的高低电平经过逻辑电路变化,连接74LS121来控制蜂鸣器在1秒时响。
三.单元模块设计.1.以NE555构成的多谐振荡器图1 图二NE555的震荡器在本电路中的周期T=C(R1+R2)=1S图三。
图三为多谐振荡电路R1和R2,C的值确保震荡周期为1秒,图三的右下角为复位电路,与下一部分一同介绍。
2.倒计时电路图四图五由74LS192的真值表图四可以看出,若想让元件工作在减计数状态MR,PL非,CPu的值必须分别为0,1,1。
由要求可以看出,192的初始必须是九,所以加了一个复位电路,确保初始值是9.计数器输入端P0,1,2,3对应接高低低高电平。
Q0,Q1,Q2,Q3为计数器输出端接到74LS47上。
NE555的3号管脚与74LS192的4浩管脚相连。
一秒发出一个脉冲,74LS192开始倒计时。
图六4.逻辑电路逻辑电路的作用在于将74LS192输出为一,即Q3Q2Q1Q0=0001时输给报警电路一个负脉冲。
图七图八图九图九管脚功能描述:管脚3(A1)、4(A2)是负边沿触发的输入端;管脚5(B)是同相施密特触发器的输入端,对于慢变化的边沿也有效;管脚10(C ext)和管脚11(R ext/C ext)接外部电容(C x),电容范围在10pF~10μF之间;管脚9(R int)一般与管脚14(V CC,接+5V)相连接;如果管脚11为外部定时电阻端时,应该将管脚9开路,把外接电阻(R x)接在管脚11和管脚14之间,电阻的范围在2~40kΩ之间。
99-0倒计时设计
1. 设计的任务与要求显示两位的天数倒计时,如99到1a)当到9时喇叭自动响0时结束b)用LED数码管显示结果c)可以实现预置数功能2. 方案设计与分析2.1 方案的比较与选择方案一:通过减法器实现两位数是十进制数减法运算,实现倒数功能,并通过译码器和LED 数码管驱动电路。
方案二:通过秒表计时器,以及计数器连接成的一天为单位的计时器,接入减法器,实现倒数功能,并通过CD4511接在译码显示器,实现倒计数功能。
比较分析:两种方案相比较,虽然方案二的计数步骤比较多,并且逻辑性可能稍强,并且通过上网查资料,和图书馆的查阅,对陌生的元器件不是很了解,并且接触很少。
因此,通过比较实用性,合理性,选择方案一。
方案二逻辑框图→→↓2.2 实验方案:用555多谐振荡器产生脉冲,两个传输门进行控制两个计数器的触发脉冲,传输门由两个计数器的置位端(LD)控制,当置数时触发脉冲被隔断,用74LS160控制置位端的A,B,C,D门一个脉冲开关控制此计数器的触发端CLK,当按下开关松开时,输出(置位的数)加1.用数码管显示减法计数器的输出,用一个四输入与非门作为反馈,当天数小于9时蜂鸣器响。
3. 原理及技术指标 3.1 实验原理:我们可以用555时基电路构成的多谐振荡器来产生频率为10Hz 的脉冲,即输出周期为0.1秒的方波脉冲,将该方波脉冲信号送到计数器74LS190的CP 减计数脉冲端,再通过译码器74LS160把输入的8421BCD 码经过内部作和电路“翻译”成七段(a ,b ,c ,d ,e ,f ,g )输出,显示十进制数,或者将该方波脉冲信号送到减法计数器CD40110的CP 减计数脉冲端,通过计数器把8421BCD 码经过内部作和电路“翻译”成七段(a ,b ,c ,d ,e ,f ,g )输出,显示十进制数将该方波脉冲信号送到减法计数器CD40110的CP 减计数脉冲端,通过计数器把8421BCD 码经过内部作和电路“翻译”成七段(a ,b ,c ,d ,e ,f ,g )输出,显示十进制数,然然后在适当的位置设置开关或控制电路即可实现计数器的直接清零,启动和暂停/连续、译码显示电路的显示。
完整word版00-99秒倒计时器程序及仿真
题目一:秒计时器功能要求:1.系统上电,数码管显示“99”.2.每隔1秒,数码管显示减1,减小到“00”后,数码管显示“00”,同时继电器开启。
3.按键的定义如下:“暂停/开始”按键S13:当S13按下时,秒表计时停止,数码管显示当前数值,再次按下时恢复计时。
“设置”按键S14:当停止计时时,按下S14键,可以设置秒数。
按键S1-S10分别对应数字0-9,先输入数字为十位数,后输入数字为个位数,若输入数字大于99,数码管显示“99”。
设置结束后,按下S13键启动计时。
“重新开始”按键S15:当S15按下时,数码管显示为“99”,秒表从新开始计时。
#include<reg51.h>#include<intrins.h>unsigned char code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char codejp[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; unsigned char a[2]={0,0};unsigned char int_time;unsigned char second=99;unsigned char c;bit zt;bit sz;unsigned char count;unsigned char y;unsigned char x;unsigned char count2;//函数功能:数码管动态扫描延时void delay(unsigned char s){unsigned char i,j;for(i=0;i<s;i++)for(j=0;j<125;j++);}//数码管显示子程序void DisplaySecond(unsigned char k){P2=0xfe;P0=Tab[k/10];delay(1);P2=0xfd;P0=Tab[k_x0010_];delay(1);}//扫描键盘的值void sm(void){ unsigned char k,j,n,a,m;m=0xfe;P1=0xf0;k=P1;k=k&0xf0;if(k!=0xf0){ delay(5);if(k!=0xf0){for(j=0;j<4;j++){ P1=m;n=P1;for(a=0;a<16;a++){if(jp[a]==n)c=a; //键值保存在C中while(P1==jp[a]);}m=_crol_(m,1);}}}}//按键void aj(void){if(P1!=0xf0){if(c==12) //按下暂停/开始键{count++;if(count==1){TR0=0;zt=1;}if(count==2){TR0=1;count=0;}}if(c==13){if(zt==1){second=00;sz=1;count2=0;}}if(c<10){if(sz==1){count2++;if(count2==1){a[0]=c;second=a[0]*10+a[1]; }if(count2==2){a[1]=c;second=a[0]*10+a[1]; }}}if(c==14){second=99;}}P1=0xf0;}//主函数void main(void){TMOD=0x01;TH0=(65536-46083)/256; TL0=(65536-46083)%6; EA=1;ET0=1;while(1){DisplaySecond(second);sm();aj();}}//函数功能:定时器0的中断服务子程序void interserve(void)interrupt 1 using 1 {int_time ++;if(int_time==20){int_time=0;second--;if(second==-1){second=00;P2=0x7f;delay(5);}}TH0=(65536-46083)/256;TL0=(65536-46083)%6;}。
倒计时器——精选推荐
倒计时器⼀、设计任务利⽤单⽚机的定时器/计数器的定时和计数,⽤ LED数码管显⽰计时的时间,某键按下去时;再按⼀下停⽌计时;另⼀键按下去时间清零。
⼆、设计⽅案及⼯作原理⽅案设计:1.有复位的功能。
2.有设置的功能。
3.有定时和计时切换的功能。
4.计时范围0~99.99秒。
5.定时范围0~99分。
⼯作原理:⽤8051芯⽚制作⼀个具⽤倒计时和秒表功能的器件,外接晶振。
当倒计时时,送⼀个数,从这个数⼀直计到0蜂鸣器响。
正计时,0.01秒计满9向0.1秒进⼀,0.1秒计满9向秒个位进⼀,秒个位计满9向秒⼗位进⼀,秒⼗位计满9结束运⾏。
⽬录第⼀章、系统设计要求和解决⽅案第⼆章、硬件实现第三章、软件实现第四章、实现的功能第五章、缺点及可能的解决⽅法第六章、⼼得体会附录⼀、参考⽂献附录⼆、硬件原理图附录三、程序流程图第⼀章系统设计要求和解决⽅案系统设计要求:利⽤单⽚机的定时器/计数器的定时和计数,⽤ LED数码显⽰计时的时间,某键按下去时;再按⼀下停⽌计时;另⼀键按下去时间清零。
解决⽅案:初始化为何种状态,开关是否按下,显⽰是定时状态还是计时状态。
若为定时状态,。
⽤四个共阴数码管LED显⽰起显⽰时间,采⽤动态显⽰的⽅法,P2.4、P2.5、P2.6、P2.7作为位选信号,P0⼝输出选段码。
键盘为独⽴式按键,分别接在P3.2、P3.3、P3.4、P3.5上。
K1为设置/启动功能键。
按下时,系统进⼊时间设置;再按下,系统启动。
K2为倒计时时间⼗位数设定键,按下时⼗位数字在0到9的范围。
K3倒计时个位数设定键,按下时,个位数字在0到9的范围。
K4为复位键。
K5为定时与计时的切换键,按下切换到计时状态,不按为定时状态。
P3.5连接发光⼆极管状态指⽰,系统时间设为定时状态熄灭,倒计时状态闪烁。
P3.6输出控制信号驱动蜂鸣器,倒计时时间到,蜂鸣器响。
开始正计时,正计时结束,蜂鸣器再响,程序结束。
第⼆章硬件实现⽤8051芯⽚制作⼀个具⽤倒计时和秒表功能的器件,外接晶振。
用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计
目录一、设计题目和要求: (2)二、设计目的: (2)三、设计内容: (3)四、课程设计心得体会 (25)五、参考文献 (26)六、课程设计指导教师评审标准及成绩评定 (27)附件1:秒表原理图(实际接线图) (28)附件2:仿真图1 (30)附件3:仿真图2 (31)一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。
二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。
6.掌握定时器、外部中断的设置和编程原理。
7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、设计内容:了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。
AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:振荡器和时钟电路数据存储器128字节程序存储器14KBCPU 两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线外部中断扩展控制P0 P1 P2 P3 RXD TXD1.单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
倒计时数字秒表设计 (2)
课程设计任务书倒计时数字秒表设计摘要:本次课程设计以AT89S52单片机为核心设计一个倒计时数字秒表,计数初值为59并开始每秒自动减1,当按键1按下时记录当前时间值,当按键2按下时显示当前记录值,显示过之后再次按下按键1时秒表复位为59。
本设计硬件部分包括电源电路、复位电路、按键电路、振荡电路、数码管显示电路五部分电路,软件程序部分有定时中断程序、外部中断程序、显示子程序和延时子程序等。
软件Proteus画出原理图并进行仿真,依照仿真成功的原理图接线,在万能版上把个个器件焊接好从而实现预期的功能。
关键词:倒计时; AT89S52; 74LS47; 数码管目录1. 设计背景.......................................................................... 错误!未定义书签。
2. 设计方案.......................................................................... 错误!未定义书签。
2.1总体设计框图........................................................... 错误!未定义书签。
2.2时钟电路方案选择................................................... 错误!未定义书签。
2.3复位电路方案选择................................................... 错误!未定义书签。
2.4显示电路方案选择................................................... 错误!未定义书签。
3. 方案实施.......................................................................... 错误!未定义书签。
百度多功能秒表的设计
多功能秒表的设计摘要本设计是通过使用单片机80C51来设计一个单片机控制的秒表系统。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行加、减(倒)计时,数码管能够正确地显示时间。
在设计中定时器1用做1秒定时,从而实现每秒加1。
定时器0用做10毫秒定时,从而实现每10毫秒快加1。
中断0用做暂停键使用,中断1用做停止键使用。
该秒表可以每秒加一,每秒减一,快加1,快减1,独立存储四个数据并能进行查询。
在硬件设计中由于所需按键比较少,所以采用独立连接式电路,使用P0和P2口直接对两个数码管发送数据,在使用P0口时,由于输出级为漏级开路电路,若要驱动NMOS或其他拉电流负载时,引脚上应外接上拉电阻。
用软件法消除来抖动,LCD数码管采用共阴极的接法。
复位电路采用上电或开关复位电路,在电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。
时钟信号采用内部时钟法,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
目录1 概述 (2)1.1 设计意义 (2)1.2 设计任务 (2)1.3主要功能 (2)2 系统总体设计及硬件设计 (3)2.1单片机的设计 (3)2.2 电源 (3)2.3 钟及复位电路 (3)2.4 显示及键盘 (5)3 软件设计 (6)3.1主程序 (6)3.2设置子程序: (9)3.3加减1子程序 (11)3.4 快加减子程序 (14)4 PROTEUS软件仿真 (17)5 课程设计体会 (18)参考文献 (18)附1 源程序代码 (20)附2 秒表系统电气图 (26)1概述1.1 设计意义1、通过设计使学生进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;2、通过利用MCS-51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法;3、通过设计一个简单的计算器数字输入及显示模拟系统,掌握单片机仿真软件Proteus的使用方法;4、掌握键盘和显示器在的单片机控制系统中的应用。
数字计时器
电工电子综合实验报告—数字计时器院系:电光学院专业:通信工程班级:07042201学号:0704220100姓名:* * *指导教师:李元浩时间:2009.09.17—2009.09.20目录1.设计电路功能要求(1)2.设计电路原理图(1)3.电路逻辑原理图及工作原理(2)4.各单元电路原理及逻辑设计4.1脉冲发生电路(2-3)4.2计时电路(3-4)4.3显示电路(4)4.4清零电路(5)4.5校分电路(5)4.6报时电路(6)5.电路安装与调试说明(6-7) 6.对电路的改进意见(7)7.收获体会及建议(7)8.设计参考资料(7)9.附录(8-10)1.设计电路功能要求本实验要求设计一个0分00秒-9分59秒的多功能数字计时器。
数字计时器是由脉冲发生电路,计时电路,译码显示电路,和控制电路等几部分组成。
其中控制电路由清零电路,校分电路,和报时电路组成。
该数字计时器可以在控制电路的作用下具有开机清零、手动清零、快速校分和整点报时功能。
①.设计一个脉冲发生电路,为计时器提供秒脉冲,为报时电路提供驱动蜂鸣器发声的脉冲信号;②.设计计时和显示电路,将分及秒的个位、十位分别在七段显示器上显示出来,从0分0秒开始,计到9分59秒,然后重新计数。
将分及秒的个位、十位分别在七段显示器上显示出来,七段显示器循环显示数字000~959;③.设计清零电路,实现手动及开机清零;④.设计校分电路,在校分开关控制下实现分校正;⑤.设计报时电路,使数字计时器实现在9分53秒、9分55秒、9分57秒低音(1KHz)报时,以及在9分59秒高音(2KHz)报时;2.设计电路原理图图2-1 电路原理图3.电路逻辑原理图及工作原理数字计时器的原理方框图如图3-1所示,该电路系统由脉冲发生电路、计时和显示电路、清零电路、校分电路和报时电路和其它附加电路等几部分组成的。
脉冲发生电路由振荡器和分频器组成,振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准的秒脉冲,同时也可得到其他不同频率的脉冲。
实验2`有时钟输入的两位十进制计数器原理图输入设计
三、实验注意事项 1、输入文件名不能用汉字或关键字、非法字符; 、输入文件名不能用汉字或关键字、非法字符; 2、注意文件在编译连接时的路径; 、注意文件在编译连接时的路径; 3、注意引脚分配与对应的 芯片相匹配; 、注意引脚分配与对应的FPGA芯片相匹配; 芯片相匹配 4、注意信号标号与总路线的表达方式。 、注意信号标号与总路线的表达方式。 四、实验设备 GW48EDA系统,计算机一台,打印机一台 系统, 系统 计算机一台, 五、实验思考 1、用VHDL编写有时钟输入的两位十进制计数器源程序。 编写有时钟输入的两位十进制计数器源程序。 、 编写有时钟输入的两位十进制计数器源程序 2、 对仿真波形结果进行分析。 、 对仿真波形结果进行分析。 3、写出验证性实验报告 、写出验证性实验报告.
图3-4 用74390设计一个有时钟使能的两位十进制计数器原理
图3-5 调出元件74390
图3-6 从Help中了解74390的 详细功能
1、设计电路原理图,频率计的核心元件之一是含有时钟使能及进位扩展输出的十进 、设计电路原理图, 制计数器。为此这里拟用一个双十进制计数74390和其它一些辅助元件来完成。电路 和其它一些辅助元件来完成。 制计数器。为此这里拟用一个双十进制计数 和其它一些辅助元件来完成 原理图如图3-4所示。图中,74390连接成两个独立的十进制计数器,待测频率信号 原理图如图 所示。图中, 连接成两个独立的十进制计数器, 所示 连接成两个独立的十进制计数器 clk通过一个与门进入 通过一个与门进入74390的计数器 的时钟输入端 的计数器1的时钟输入端 通过一个与门进入 的计数器 的时钟输入端1CLKA,与门的另一端由计数使 , 能信号enb控制:当enb = '1' 时允许计数;enb = '0' 时禁止计数。计数器 的4位输出 控制: 时允许计数; 时禁止计数。计数器1的 位输出 能信号 控制 q[3]、q[2]、q[1]和q[0]并成总线表达方式即 并成总线表达方式即q[3..0],由图 左下角的 左下角的OUTPUT输出 、 、 和 并成总线表达方式即 ,由图3-4左下角的 输出 端口向外输出计数值,同时由一个4输入与门和两个反相器构成进位信号进入第 输入与门和两个反相器构成进位信号进入第2个计 端口向外输出计数值,同时由一个 输入与门和两个反相器构成进位信号进入第 个计 数器的时钟输入端2CLKA。 数器的时钟输入端 。 个计数器的4位计数输出是 第2个计数器的 位计数输出是 个计数器的 位计数输出是q[7]、q[6]、q[5]和q[4],总线输出信号是 、 、 和 ,总线输出信号是q[7..4]。这 。 两个计数器的总的进位信号,即可用于扩展输出的进位信号由一个6输入与门和两个 两个计数器的总的进位信号,即可用于扩展输出的进位信号由一个 输入与门和两个 反相器产生, 输出。 是计数器的清零信号 是计数器的清零信号。 反相器产生,由cout输出。clr是计数器的清零信号。 输出 2、计数器电路实现,在此首先从实现图 所示的电路的绘制和测试开始,用鼠标双 所示的电路的绘制和测试开始, 、计数器电路实现,在此首先从实现图3-4所示的电路的绘制和测试开始 击“Enter Symbol”窗中 窗中Symbol Libraries栏的 栏的e:\maxplus2\max2lib\mf的宏功能元 的宏功能元 窗中 栏的 件库,于是可以在Symbol Files栏中看到绝大多数 系列的元件(图3-5)。这些器 栏中看到绝大多数74系列的元件 )。这些器 件库,于是可以在 栏中看到绝大多数 系列的元件( )。 件的详细功能及其它们的逻辑真值表可以通过查阅“ 选项来获得。 件的详细功能及其它们的逻辑真值表可以通过查阅“Help”选项来获得。为了查阅 选项来获得 74390的功能,可如图 所示,在Help菜单中选 的功能, 所示, 菜单中选Old-Style Macrofunctions项,然后 的功能 可如图3-6所示 菜单中选 项 选Counters项。 项
倒计时功能操作方法
倒计时功能操作方法
要实现倒计时功能,可以使用以下步骤:
1. 设定要倒计时的时间,例如10分钟或1小时。
2. 将时间转换为适合编程的形式,例如使用秒作为单位。
3. 创建一个计时器变量,并将其初始值设置为总倒计时时间。
4. 在每个单位时间(如每秒)更新计时器变量的值,例如将其减去1。
5. 在每个时间单位更新后,检查计时器变量的值是否为0。
如果为0,则表示倒计时结束。
6. 根据需要,可以在倒计时结束后触发某些操作,例如显示一个提示、播放声音或执行其他相关任务。
具体的代码实现方法可能会因编程语言而异。
以下是一个示例的Python代码来实现倒计时功能:
python
import time
def countdown(minutes):
total_seconds = minutes * 60
while total_seconds:
minutes, seconds = divmod(total_seconds, 60)
print(f"倒计时还剩{minutes:02d}:{seconds:02d}")
time.sleep(1)
total_seconds -= 1
print("倒计时结束!")
countdown(10) # 设置10分钟的倒计时
这段代码将会每秒打印剩余时间,并在倒计时结束时打印出"倒计时结束!"。
数电课程设计十秒倒计时定时器
辽宁师范大学《数字电路》课程设计(09级本科)题目: 定时器1学院:物理与电子技术学院专业:电子信息工程班级:09.3班学号:14级!姓名: 张宁指导教师:赵静邱红张卓2完成日期:2011年10 月27 日一•设计内容及要求10 秒的倒计时定时器,倒计时要求用数码显示,当定时到1秒时,有声音提示,提示声音为0.5秒,当倒计时到0时停止计数二.总体方案设计由设计内容及要求,我设计了一个以NE555构成的多谐振荡电路,来发出一秒间隔的脉冲;用74LS192进行倒计时,通过74LS47连接一个数码显示器;由74LS192发出的高低电平经过逻辑电路变化,连接74LS121来控制蜂鸣器在1秒时响。
三.单元模块设计.1.以NE555构成的多谐振荡器NE555的震荡器在本电路中的周期T=C(R1+R2)=1S 图二冲图三为多谐振荡电路 R1和R2, C 的值确保震荡周期为1 秒,图三的右下角为复位电路,与下一部分一同介绍。
2.倒计时电路图5-1 7 11.SI92的引和扌*列及逻辑符巧<H )引脚扌非列I%1HI l_d I HL L TUT ?1 Qi 口。
CP (> OPuPOOJQO Qijr1一匕 f3 2 P2 P36Q2 7Q3CPu CPnMRTCu TC D1213L_r —Po “就Fil rial pin1011 —14-图四由74LS192的真值表图四可以看出,若想让元件工作在减计数状态MR PL 非,CPu的值必须分别为0,1,1。
由要求可以看出,192的初始必须是九,所以加了一个复位电路,确保初始值是9.计数器输入端P0,1,2,3对应接高低低高电平。
Q0, Q1,Q2,Q3为计数器输出端接到74LS47上。
NE555的3号管脚与74LS192的4浩管脚相连。
一秒发出一个脉冲,74LS192开始倒计时。
4.逻辑电路逻辑电路的作用在于将74LS192输出为一,即 Q3Q2Q1Q0=0001时输给报警电路一个负脉冲。
两位十进制计数器VHDL.
电子科技大学实验报告学生姓名:范仁森学号:2011032030016 指导教师:杜涛学生姓名:李彦龙学号:2012032030019学生姓名:万金山学号:2011032030030一、实验室名称:计算机大楼309二、实验项目名称:两位十进制计数器在7段数码管显示的设计三、实验原理:用FPGA板上的晶振频率为33.86MHz的时钟进行2的25次方分频作为基准频率,然后用两位十进制计数器计数,计数结果输出至七段数码管显示器的数据端。
再将时钟进行2的19次方分频作为数码管扫描频率,接到数码管的共阴极端。
其中七段数码管由8个(a,b,c,d,e,f,g,dp)按照一定位置排列的发光二极管构成,通常采取共阴极或者共阳极的设计,将8个二极管的同一极接在一起,通过分别控制另外的8个电极的电平,使二极管导通(发光)或截止(不发光)。
四、实验目的:1、掌握七段数码管译码器的工作原理;2、掌握设计两位十进制计数器。
3、学会运用波形仿真测试检验程序的正确性。
五、实验内容:用VHDL设计两位十进制计数器在7段数码管显示的设计,并在VHDL描述的测试平台下对译码器进行功能仿真,给出仿真的波形,并在FPGA板上测试。
六、实验器材(设备、元器件):电脑一台,Active-HDL,30MHz FPGA开发板七、实验步骤:程序:顶层BDE设计U1部分:div25:将晶振信号进行2的25次方分频作为计数基准频率library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity div25 isport(clk : in STD_LOGIC;clr : in STD_LOGIC;div_25 : out STD_LOGIC);end div25;architecture div25 of div25 issignal count:std_logic_vector(24 downto 0);----为分频器设置一个中间信号beginprocess(clk,clr)beginif(clr='1')thencount<="0000000000000000000000000"; ----初始化elsif(clk'event and clk='1')then ----上升延触发if (count="1111111111111111111111111")then ----将时钟频率分频至接近1Hzcount<="0000000000000000000000000";---进位elsecount<=count+1; ---计数end if ;end if;end process;div_25<=count(24);----输出1Hz信号end div25;U3部分:count ---十进制的个位计数器library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity count isport(clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;count_4:out std_logic_vector(3 downto 0);cin:out std_logic);end count;architecture count of count issignal count_3:std_logic_vector(3 downto 0); ----计数十位数需要4位2进制begincount_4<=count_3;process(clk,clr)beginif(clr='1')thencount_3<="0000";初始化cin<='0';初始化elsif(clk'event and clk='1')then-----上升沿触发if(en='1')thenif(count_3="1001")then-----进位count_3<="0000";----进位cin<='1';-----输出进位信号elsecount_3<=count_3+1;计数cin<='0';重置进位信号end if;end if;end if;end process;end count;U4部分:count 十进制的十位计数器library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity count isport(clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;count_4:out std_logic_vector(3 downto 0);cin:out std_logic);end count;architecture count of count issignal count_3:std_logic_vector(3 downto 0);begincount_4<=count_3;process(clk,clr)beginif(clr='1')thencount_3<="0000";-----初始化cin<='0';elsif(clk'event and clk='1')thenif(en='1')thenif(count_3="1001")then-----十进制计数count_3<="0000";----进位重置cin<='1';----输出进位信号elsecount_3<=count_3+1;-----计数cin<='0';-----进位信号重置end if;end if;end if;end process;end count;U2部分:div19 -----将晶振信号进行2的19次方分频作为扫描频率library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity div19 isport(clk : in STD_LOGIC;clr : in STD_LOGIC;div_19 : out STD_LOGIC);end div19;architecture div19 of div19 issignal count:std_logic_vector(18 downto 0);beginprocess(clk,clr)beginif(clr='1')thencount<="0000000000000000000";-----初始化elsif(clk'event and clk='1')thenif (count="1111111111111111111")thencount<="0000000000000000000";-----进位重置elsecount<=count+1;------计数end if ;end if;end process;div_19<=count(18);-----出接近64Hz的扫描信号end div19;U5部分:mux2----将两位十进制进行扫描输出library IEEE;use IEEE.STD_LOGIC_1164.all;entity mux2 isport(a : in STD_LOGIC;counter1 : in STD_LOGIC_VECTOR(3 downto 0);counter2 : in STD_LOGIC_VECTOR(3 downto 0);dout : out STD_LOGIC_VECTOR(3 downto 0));end mux2;architecture rtl of mux2 isprocess(a,counter1,counter2)beginif (a='0')thendout<=counter1;----输出个位elsif(a='1')thendout<=counter2;------输出十位end if;end process;end rtl;U6部分:decoder -----将两位十进制的数转换为七段显示码输出至显示管library IEEE;use IEEE.STD_LOGIC_1164.all;entity decoder7 isport(din : in STD_LOGIC_VECTOR(3 downto 0);dout : out STD_LOGIC_VECTOR(6 downto 0));end decoder7;architecture rtl of decoder7 issignal indata:std_logic_vector(3 downto 0);indata<=din;----载入数据process(indata)begincase indata iswhen"0000"=>dout<="1111110";------输出0when"0001"=>dout<="0110000";-----输出1when"0010"=>dout<="1101101";-----输出2when"0011"=>dout<="1111001";-----输出3when"0100"=>dout<="0110011";----输出4when"0101"=>dout<="1011011";-----输出5when"0110"=>dout<="0011111";-----输出6when"0111"=>dout<="1110000";-----输出7when"1000"=>dout<="1111111";-----输出8when"1001"=>dout<="1111011";-----输出9when others=>dout<="0000000";-----输出0 end case;end process;end rtl;仿真:在ise上FPGA板上I/O接口选择clk P79, clr P109, en P114, com1 P135, com2 P133,dout1 P138,dout2 P139,dout3 P140,dout4 P141,dout5 P143,dout6 P144,dout7 P146.在ise上继续编译,最后program下载进FPGA。
掌控板之电子秒表
掌控板之电子秒表作者:陈新龙来源:《电脑报》2020年第50期秒表是一种常见测时仪器,在运动会上我们使用的是电子秒表,具有读取便利、读数精确等优点,所以在比赛计时等场合广泛运用。
电子秒表显示时间的格式为60进制的“00:00:00”分别代表分(0-60)、秒(0-60)和厘秒(0-99),作为运功成绩一般是保留两位小数。
那么能不能用万能的掌控板来制作一个电子秒表器呢?答案是肯定可以的,掌控板正面有A和B两个按键,可以用来控制秒表的启动、暂停,还可以实现分次计时,掌控板背面的按钮用来实现复位(图1)。
首先实现基础的功能就是在掌控板上显示时间。
我们需要程序运行时的格式为“00:00:00”(分:秒:厘秒),先确定好字符位置(如图2)。
接下来要获取“系统运行时间”也是掌控板运行程序的实际时间,掌控板获取的时间单位是毫秒(1000毫秒=1秒),然后根据获得的系统时间来求出需要的分秒厘秒。
变量“厘秒”表示秒表中最后两位数字“00”,由于系统运行时间单位是毫秒,厘秒值对应的系统运行时间是倒数第二位和倒数第三位的数字,所以需要换算,将系统时间先除以10再除以100的余数(可以得到0-99范围的厘秒值)同时需要考虑到当厘秒值的范围小于10的时候需要在数字前面补齐一位0才可以(如图3)。
变量“秒”表示秒表中间两位数字“00”,首先设置系统计时获得以秒为单位的系统运行时间,将系统运行时间除以1000,由于秒的范围值是0-59(60进制),所以计算变量“秒”時要将系统计时除以60的余数便可以得到结果,同时也是需要注意当秒的范围小于10的时候需要在数字前补齐一位0才可以(图4)。
变量“分”表示秒表中头两位数字“00”,分的范围也同秒的范围一样在0-59之间,通过以秒为单位的系统运行时间除以60便可以转化为分钟(将系统计时先除以60再除以60得到余数),同时也需要注意分的范围小于10的时候需要在数字前补齐一位0才可以(图5)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
shi==0& &ge==0
否 play(shi,ge)
否
TR0=1 play1(shi,ge)
是否有外 部中断
是
TR1=1
m
【实验程序】
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define Clk 0x070000
sbit POUT = P0^0;
//扬声器控制引脚
sbit P2_7=P2^7;
sbit P2_4=P2^4;
uint shi,ge,num;
int m;
uchar
code
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39};
}
void play1(uint shi,uint ge)
{
P2_7=0;P0=table[shi];P2_7=1;delayms(100);
P2_4=0;P0=table[ge];P2_4=1;delayms(100);
}
void main()
{
EA=1;
IT0=1;
EX0=1;
ET1=1;
ET0=1;
对时间记录下来(由曲谱中节拍得出)。 频率表和时间表是一一对应的,频率表的最后一项为0,作为重复的标志。根据频率表
中的频率算出对应的计数初值,然后依次写入T0 的计数器。将时间表中相对时间值带入延 时程序来得到音符演奏时间。
参考流程图
电子发声单元原理图
电子发声接线图 【程序流程图】
开始
中断设置及 其初始化
TL1=(65536-45872)%256;
TR1=1;
}
void time_0() interrupt 1
// 定时器 0 中断处理程序
{
POUT = ~POUT;
//产生方波
TH0 = 0x57;
//重新装入计数值
TL0 = 0xff;
}
void time_1() interrupt 3
{
TH1=(65536-45872)/256;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void play(uint shi,uint ge)
{
P2_7=0;P0=table[shi];P2_7=1;
P2_4=0;P0=table[ge];P2_4=1;
两位十进制倒计时秒表定时器
【实验要求】 开始时,两个数码管显示定时的秒数为 60,按“启动”按钮后开始计时,两个数码管显示 从启动开始的秒数,每秒减 1.显示到 0 秒时,显示“00”不断闪烁,并且发声报警。再按 “启动”按钮后,又重新开始倒计时。 【实验设计思路】 用定时器 1 进行 50ms 定时,则当二十次中断时为一秒,实现当前数码减一的功能,而数码 管则是分别显示当前数码的十位和个位,当外部中断 0 有中断信号的时候将当前数码置为 60;同时开启定时器,每秒使得该数码减一,直到减为零的时候开启定时器零同时关闭定时 器 1,使得当前数码不变。且调用长延时显示程序,实现数码闪烁功能,此时定时器 0,定 时改变声波端口,产生稳定方波,送入扬声器中发出警报音。 【实验硬件连线及其说明】 电子发声设计
音符与频率对照关系如表所示。对于每一个音符的演奏时间,可以通过软件延时 来处理。首先确定单位延时时间程序(根据CPU的频率不同而有所变化)。然后确定每 个音符演奏需要几个单位时间,就几次调用延时子程序即可。
表 音符与频频率值依次记录下来,时间表是将各个音符发音的相
num=0;
shi=0;
ge=0;
TMOD=0x11;
while(1)
{
if(shi!=0||ge!=0)play(shi,ge);
if(shi==0&&ge==0){TR0=1;play1(shi,ge);}
}
}
void intt0() interrupt 0
{
TR0=0;
m=15;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num++;
if(num==20)
{
num=0; shi=m/10; ge=m%10; m--; if(m==-1) { TR1=0;shi=0;ge=0; } } }
一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出 这个音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这 段乐曲。利用定时器控制单片机的 I/O 引脚输出方波,将相应一种频率的计数初值写 入计数器,就可产生对应频率的方波。
要产生音频脉冲,只要计算出某一音频的周期(1/频率),然后将此周期除以2, 即为半周期的时间。利用定时器计时这个半周期时间。每当计时到后就将输出脉冲的I/O 反相,就可以在I/O脚上得到此频率的脉冲。