A. 用89S52单片机设计一个6位显示的电子计时系统。6位LED分别显示时、分、秒(各两位)。
读书时的课程设计中的部份,当时觉得写的还不错,现在看起来有点夸张,有很大的发挥简化空间,很多语句都不成熟,但是还是完成了设计要求了,这是未简化的版本,里面有电路图和程序(用汇编语言写的),现放在我的空间里,自己去下吧http://www.hsz.ik8.com//mcu.rar
里面可设两个闹钟,可以设置开和关。可以调时间还有日期也能调包括年月日小时分钟秒.
这是我以前回答过的题,为什么不搜索一下呢
B. 单片机秒表设计(含按键,中断,定时器等)
#include<reg52.h>
#define uint unsigned int
/*int code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x84,0x0E};*/
/*uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num=0,aa=0,,shi,ge;
void display(uint ,shi,ge);//数码管位显示子函数
void init(); //定时器子函数
void delay(uint z); //延时子函数
void main()
{
init();//初始化定时器
while(1)
{
if(aa==20)
{
aa=0;
num++;
if(num==100)num=0;
=num/100;
shi=num%100/10;
ge=num%10;
}
display(,shi,ge);
}
}
void display(uint ,shi,ge)
{
P1=0xfe;
P0=table[];
delay(5);
P1=0xfd;
P0=table[shi];
delay(5);
P1=0xfb;
P0=table[ge];
delay(5);
}
void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
}
void init()
{
TMOD=1;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}*/
C. 课程设计数字秒表设计 求高手解答。
一 设计说明书
1.设计任务
(1) 进行设计方案的比较,并选定设计方案;
(2) 完成单元电路的设计和主要元器件说明;
(3) 安装各单元电路,要求布线整齐、美观;
(4) 写出课程设计报告文档。
2.设计要求
(1) 设计并制作符合要求的电子秒表;
(2) 秒表由6 位七段LED显着器显示,其中两位显示分,四位显示
秒,其中显示的分辩率为0.01 秒;
(3)计时最大值为99 分59点99秒;
(4)计时误差不得超过0.01秒;
(5)具有自动清零、启动计时、暂停计时及继续计时等控制功能;
(6) 控制操作按键不得超过2个。
3.提高部分
3.1 安装自己设计的电路
(1)检查元器件
(2)对电路进行组装:按照自己设计的电路,在面包板上插接元器件或在通用板上焊接。焊接完毕后,应对照电路图仔细检查,看是否有错接、少接、虚焊的现象。
3.2. 通电调式
(1)通电测试:对安装完成的电路板的参数及工作状态进行测量,以便提供调整电路的依据。
(2)通电调试:经过反复的调整和测量,使电路的性能达到要求。
3.3 书写调试报告
课程设计说明书书写格式
参照“课程设计说明书书写格式”文件。
4.参考资料
1、《数字电子技术导论》西安交通大学 . 何金茂主编
2、《数字电子技术基础》高等教育出版社. 康华光主编
3、《数字电子技术》 高等教育出版社。 杨志忠主编
二.方案论证
2.1.方案的选择
通过对设计要求的分析,应用相关的数字电子电路方面的知识画出原理图,检查无误后,将原理图在EWB中仿真,验证通过无误后,可以考虑使用何种方案来实现设计电路。我们可以通过对照原理图在万能板上焊接来实现所设计的电路;也可以在PROTEL中画出原理图并布好线通过做PCB板来实现所设计的电路;还可以通过在面包板上插线来实现设计的电路。因在商店只买到万能板,所以我们采用万能板接线。
2.2电路总体功能、结构的分析
本电路的目标为设计一个数字式秒表。如图2.1所示,数字式秒表电路系统由主体电路和扩展电路两部分组成。其中主体电路完成计数功能,控制电路完成控制的扩展功能。通过所设计电路将实现具有清零、启动、暂停、继续等控制功能的计时数字式秒表。
根据电路所需要达到的要求,可以将电路的总体结构框图描述(如图2.2):
图2.2 多功能数字式秒表系统的组成框图
设计时各部分所用的器件名称如下:
时钟信号:由555组成的多谐振荡器。
计数器:74LS190
锁存器:CT74LS373
译码器:CT74LS47
显示器:BS201
三. 555组成的多谐振荡器简介
3.1 555与RC组成多谐振荡器
由门电路组成的多谐振荡器虽具有多种电路的形式,但它们无一例外地具有如下的共同的特点。首先,电路中含有开关器件,如门电路、电压比较器、BJT等。这些器件主要用作产生高、低电平;其次,具有反馈网络,将输出电压恰当地反馈给开关器件,使之改变输出状态;另外,还要有延迟环节,利用RC电路的充、放电特性可实现延时,以获得所需要的振荡频率。在许多实用电路中,反馈网络兼有延时的作用。图3.1.1是一种最简型多谐振荡器。
3.2振荡周期的计算
在振荡过程中,电路状态的转换主要取决于电容的充、放电时间,而转换时刻则取决于 的数值。根据以上分析所得电路在状态转换时 的几个特征值,可以计算出周期T
四 芯片简介
4.1 74LS190
74LS190是一种较为典型的集成同步十进制加/减法计数器。图中 ̄LD为异步
置数控制端, ̄CT为计数控制端,D0-D3为并行数据输入端,Q0-Q3为输出端, ̄U/D为加减计数控制端。CO/BO为进位/借位输出端。 ̄(RC)为行波时钟输出端。CT74LS190没有专门的置0输入端,但可以借助于数据D3D2D1D0=0000时,实现计数器的置0功能。
74LS190的引脚图、功能表如下图所示。
4.1.1 74LS190的引脚图
表4.1.1 74LS190的功能表
输入 输出
CP R0(1) R0(2) S9(1) S9(2) QA QB QC QD
X 1 1 0 X 0 0 0 0
1 1 X 0 0 0 0 0
X X 1 1 1 0 0 1
↓ X 0 X 0
计数
0 X 0 X
0 X X 0
X 0 0 X
(1)异步置数功能:当 ̄LD=0时,不论有无脉冲CP和其他信号输入,并行输入的数
据d3-d0被置入计数器相应的触发器中,这时Q3Q2Q1Q0=d3d2d1d0.
(2) 计数功能: 取 ̄CT=0, ̄LD=1。当 ̄U/D=0时,在CP脉冲上升沿作用下,进行
十进制加法计数。当 ̄U/D=1时,在CP脉冲上升沿作用下,进行减法计数。
(3) 保持功能:当 ̄CT= ̄LD=1时,计数器保持原来的状态不变。
4.2 CT74373
锁存器的原理图如下图
图4.2.1锁存器的原理图
C是锁存器信号的输入端,D是数据输入端Q和Qo是数据互补输出端。当C=0时,G2被封锁,输出0,G3被封锁输出1。G5输出Q=D,Qo=Do(D和Do是数据互补)。当C由0变1时,分两种情况讨论:一是当C由0变1时,Qo=1,Q=0,G2被封锁,由于G3两个输入都为1,其输出为0。G4门也被封锁。G2门的输出Qo=1。原来的状态不改变。其二是当C由0变1时,Qo=0,Q=1。G2门的两输入均为1,则输出Qo=0,使Q=1。D无论是0还是1也不改变原来的状态。综合上述分析,可看出:C=0时,Q=D,电路不锁存数据,相当于缓冲器。当C=1时,D不影响电路状态。C由0变1时将数据D锁定并保持。直到C由1变回0。
图4.2.2 CT74LS373的引脚图
CT74LS373是一种典型的8位锁存器,OC是三态输出控制,低电平有效。即此端加低电平时输入数据能达到输出端,加高电平时8个输出均呈高阻态,C是锁存器的锁存控制输入端。C下降沿锁存数据并低电平保持,高电不锁存,输入数据直达输出端。每个锁存器只有一个同相输出没有互补输出。符号中输出输入端引线上所标带的数字是该端在芯片上的引脚号。
表4.2.1 CT74373功能表:
输入 输出
OC C D Q
L H H H
L H L L
L L X Qo
H X X Z
表中第1、2行表示在OC为低电平、C为高电平时,Q随D变化,第三行表示OC和C都为低电平Q保持原状态QO不变。第四行表示OC为高电平时输出Q为高组态Z。
4.3 74LS47
图4.3.1 74LS47引脚
1脚:二进制的置位输入端;2脚:使能端;
3脚:五进制置位端输入;4脚:输出
5脚:输出;6脚:使能端;7脚:接地端
8脚:输出端;9脚:输出端;10脚:二进制时钟信号;11脚:五进制时钟信号;12脚:二进制复位输入;13脚:五进制复位输入;14脚:接电源
表4.3.1 74LS47功能表
4.4 显示译码器
现在的许多电器设备上都有显示十进制字符的字符显示器,以直观的显示出电器设备的运行数据。目前广泛使用的字符显示器是七段字符显示器,或称七段数码管。常见的七段数码管有液晶显示数码管和半导体数码管两种。
液晶显示数码管是利用液晶材料的透明度或者显示的颜色受外加电场控制的特点制成的,简称LCD。
半导体数码管是由七段发光二极管(Light Emitting Diode)组成,简称LED。图4.4.1是LED的引脚及其等效电路。
图4.4.1 (a)LED的引脚及其等效电路。
LED产品的种类繁多,有图4.4.1(b)、(c)所示的共阴极电路,还有共阳极电路,常用的数码显示器有BS201,BS202等。
要驱动LED正常的显示十进制数的十个字符,LED前面必须接一个显示译码器。
显示译码器可实现的逻辑功能是:将输入的8421BCD码转化成驱动LED发光的高、低电平信号,驱动LED显示出不同的十进制数字符,下面来讨论显示译码器的组成。
因显示译码器可以驱动LED显示出0~9这十个数字字符,十个数字字符对应十种高低电平的组合状态,要描述这十种高、低电平的组合状态必须用4位二进制数,根据LED发光的特点可得描述显示译码器逻辑功能的真值表如表4.4.1所示。
表4.4.1 显示译码器逻辑功能真值表
4.4.2七段数字显示器发光段组
4.5 四2输入与非门74LS00
图4.5.1 74LS00引脚图
上图中1、2、3组成一个与非门,其中1、2是输入,3为输出。4、5、6组成一个与非门,其中4、5是输入,6为输出。8、9、10组成一个与非门,其中9、10是输入,8为输出。11、12、13组成一个与非门,其中12、13是输入,11为输出。
4.6 四二输入与门74LS08
五设计原理图
一百进制
接线时按照原理图的脚将各个芯片连接,连接 时小心短路。
二十四进制
六.安装工艺
6.1 安装工具
焊烙铁 1个,松香 1盒,焊锡 1卷,剥线钳 1个, 尖嘴钳 1个, 电工刀 1个, 数字万用表 1个, 镊子 1个。
6.2. 安装具体步骤
⑴ 首先要弄清万能板的结构原理,分清各插空是否是等位点;
⑵ 其次合理安排集成块和元器件的位置,尽可能的保持在同一条直线上。
⑶ 注意导线的剖削,剖削导线绝缘层,要求剖削后的芯线长度必须适应连接需要,不应过长或过短,且不应损伤芯线。为了美观剖削导线时不用火烧,用剥线钳或电工刀剖削。具体操作方法如下:按连接所需要长度,用钳头刀口轻切绝缘层,用左手捏紧导线,右手适当用力,即可使端部的绝缘层脱离芯线,用电工刀时,刀口对导线成45度角切入塑料绝缘层。
⑷ 导线的布置,布线要注意整齐不交叉。要求导线竖的要直、横要平,尽量减少悬线的存在。这样便于调整与测试工作的顺利进行。布线具体方法步骤如下:为了最大可能避免错误的出现,应按元件的排列顺序依次布线,同一元件可按管脚的顺序依次布线。
6.3. 安装注意事项
(1) 安装应接触良好,保证被安装元件间能稳定可靠地通过一定的电流。
(2) 应避免元器件损坏的发生。插拔元器件时候要垂直插拔以免造成不必要的机械损坏。
(3) 安装时必须采用绝缘良好的绝缘导线,连线的时候要取好元件与元件的距离。连接的时候线和线之间的交叉尽量的少。
7.调试与测试
7.1调试前的检测
电子安装完毕,通常不宜急于通电,先要认真检查一下。检查内容包括:
(1)连线是否正确
检测的方法通常有两种方法:
a. 根据电路图连线,按元件的排列顺序依次检查
这种方法的特点是,按一定顺序一一检查安装好的线路,同一元件按管脚的顺序依次检察。由此,可比效容易查出错线和少掉的线。
b.按照实际线路来对照原理图电路进行查线
这是一种以元件为中心进行查线的方法。把每个元件引脚的连线一次查清,检查每个去处在电路图上是否存在,这种方法不但可以查出错线和少掉的线,还容易查出多线。
为了防止出错,对于已查过的线,应在电路图上做出标记,最好用指针式万用表“欧姆1”档,或用数字万用表的“二极管”档的蜂鸣器来测量元器件引脚,这样可以同时发现接触不良的地方。
(2)元器件的安装情况
检查元器件引脚之间有无短路;连接处有无接触不良;二极管的极性和集成元件的引脚是否连接有误。
(3)电源供电,信号源连接是否正确。
(4)电源端对地是否有短路的现象。
注:在通电前,断开一根电源线,用万用表检查电源端对地是否存在短路。若电路经过上述检查,并确认无误后,就可以转入调试。
7.2通电观察
把经过准确测量的电源接入电路。观察有无异常现象,包括有无冒烟,是否有异味, 手摸器件是否发烫,电源是否有短路现象等。如果出现异常,应立即断电源,待排除故障后才能再通电。然后测量各路总电压和各器件的引脚的电源电压,以保证元器件正常工作。
7.3调试中注意事项
调试结果是否正确,很大程度受测量正确与否和测量精度的影响。为了保证调试的效果,必须减小测量误差,提高测量精度。为此,需注意以下几点:
(1) 调试前先熟悉各种仪器的使用方法,并仔细加以检查,以避免由于使用仪器不当,或仪器的性能达不到要求,而造成测量结果不准,以至做出错误的判断。
(2) 测量仪器的地线应于被测量仪器的地线连在一起,并形成系统的参考地电位,这样才能保证测量结果的准确性。
(3) 要正确选择测量点和测量方法。
(4) 调试过程中自始至终要有严谨的科学作风,决不可急于求成。在调试过程中,不但要认真观察测量,还要记录并善于进行分析、判断。切不可一遇问题,就没有目的的乱调和乱改接线,甚至把电路拆掉重新安装。这样,不但不能解决问题,相反还会发生更大的故障,甚至损坏元器件及测量仪器。
7.4 故障的排除
新电路板出现故障是常见的,每个学生都必须认真对待。查找故障时,首先要有耐心,还要细心,切忌马马虎虎,同时还要开动脑筋, 认真进行分析、判断。
当电路工作时,首先应关掉电源,再检查电路是否有接错、漏掉线、断线,有没有接触不良、元器件损坏、插错了的元器件、元器件引脚接错等。查找时可借助万用表进行。
对于一个完整的系统电路,迅速而准确的排除故障,需要一定的实际工作经验,对于初学者来说,首先应认真分析电路图,并善于将全电路分解成几个功能块,明确各部分信号传递关系及工作原理。然后根据故障现象及有关测试数据,分析和初步确定故障可能出现的部位,再按上述步骤仔细检查这一部分电路,就可能比较快地找到故障点及故障原因。
8. 元器件清单
(1) CT74LS191——同步十进制计数器(7片);
(2) CT74LS08——四二输入与门(2片);
(3) CT74LS373——8位锁存器(3片);
(4) CT74LS48——BCD七段译码器/驱动器(6片);
(5) CT74L00——四二输入与非门(2片);
(6) BS201——----共阳极数码显示管(6片);
(7) 电阻2个,电阻48KΩ2个, 电阻2 1个;
(8) 开关2个,电源VCC +5V一个;
(9) 导线若干。
(备注:有些元件买不到,因而用相似功能的芯片代替)
9.心得体会
通过几个星期的努力,最终把这次课程设计的任务完成了。这是我们进行的第一个课程设计,让我懂得了很多以前不知道的知识,如万能板的内部结构、相关芯片的引脚功能等等。在设计中,遇到了很多问题,甚至有一些是以前没有见到的。经过同学的帮助和老师的指导,最终克服了那些难题,锻炼了我们的实践动手能力,使我们真正做到了理论与实践的有效结合。
制作电路时,深深体会到连接电路时一定要细仔细,一定要确保每条线路接触性良好。实验线路出现问题时,要耐心一步一步的去检查。在实验测试时,应保持冷静,要有条理,遇问题时要联系书本知识积极思考,同时记录好实验数据。
在这次课程设计过程中,我发现光有理论知识是不够的,还必须懂一些实践中的知识。所以在课程设计的实践中,我们应将实验与课堂教学结合起来,锻炼自己的理论联系实际的能力和实际动手能力。例如:检查和排除故障的能力。
本次课程设计,也培养了我们小组的合作精神,所谓团结就是力量,就是一个再好不过的解释。它不仅为我以后的课程设计打下基础,而且还培养了我们的合作精神和分析问题的能力。
10. 参考文献
[1] 康华光 .电子技术基础(数字部分). 第四版 北京: 高等教育出版社,2005
[2] 阎 石 .数字电子技术基础. 第四版 北京:高等教育出版社,1998
[2] 杨志忠 .数字电子技术. 北京:高等教育出版社,2000
[3] 张建华 .数字电子技术. 北京:机械工业出版社,1994
[4] 李亚伯 .数字电路与系统. 北京:电子工业出版社,1998
[5]陈华容 贾雅琼.数电实验指导书. 湖南:湖南工学院,2005
[6]谢自美 .电子线路设计-实验-测试. 武汉:华中科技大学出版社,2005
[7]赵雅兴 . 数字电路与FPGA. 北京 人民邮电出版社,2004
[8]邓勇 邓斌. 数字电路设计完全手册 北京.国防工业出版社,2004
D. 要求:一 课程设计内容:设计一个单片机秒表,该秒表可显示00.00到99.99秒的时间,进行相应的单片机硬件电
//Timer0
void Timer0_Init(void)
{
EA=1;
TMOD=0x01;
ET0=1;
TH0=(65535-10000)/256;
TL0=(65535-10000) %256; //赋初值,10ms中断一次,即0.01秒
TR0=1;
}
void Timer0(void) interrupt 1
{
TH0=(65535-10000)/256;
TL0=(65535-10000) %256;
t++;
E. 单片机秒表课程设计,急求!!!!
原理图如下,
程序如下:
;=================================================
;寄存器分配定义
;=================================================
LED_BUF EQU 50H ;显示数据首址
COUNTER_INT EQU 3BH ;中断计数器
SECOND EQU 3DH ;秒单元
;=================================================
;常数定义
;=================================================
CN_COUNT_INT EQU 100 ;10ms * 100 = 1S
SET_MODEL EQU 0FFH ;完全译码模式
SET_BRIGHT EQU 04H ;占空比为15/32;显示亮度;
SET_LIMIT EQU 01H ;2位显示方式;
SET_NORMAL EQU 01H ;测试模式
SET_START EQU 01H ;进入启动工作方式?
;=================================================
;管脚分配定义
;=================================================
m7219_DIN BIT P3.0
m7219_LOAD BIT P3.1
m7219_CLK BIT P3.2
KEYSTART BIT P1.0
KEYRESET BIT P1.1
;============================================
;模拟主程序
;===========================================
org 0000h
ajmp main
ORG 000BH
LJMP Timer0Interrupt
org 0030h
main:
mov sp,#70h
lcall Init_M7219
lcall InitTimer0
; MOV SECOND,#95H ;TEST
Loop:
CALL disp
key_reset:
SETB KEYRESET
JB KEYRESET,key_start
; DELAY
NOP
NOP
NOP
JB KEYRESET,key_start
JNB KEYRESET,$
CLR TR0
MOV A,#0
MOV SECOND,A
MOV led_buf,A
MOV LED_BUF+1,A
JMP key_SCAN_END
key_start:
SETB KEYSTART
JB KEYSTART,key_SCAN_END
; DELAY
NOP
NOP
NOP
JB KEYSTART,key_SCAN_END
JNB KEYSTART,$
SETB TR0
key_SCAN_END:
JMP loop
;===========================================
InitTimer0:;10ms一次中断
MOV TMOD,#01H
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB EA
SETB ET0
RET
;===========================================
Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#0D8H
MOV TL0,#0F0H
;========================
INC COUNTER_INT
MOV A,COUNTER_INT ;10ms 计数值加1
CJNE A,#CN_COUNT_INT,Timer0Interrupt_EXIT
MOV COUNTER_INT,#0
MOV A,SECOND
CJNE A,#99H,Timer0Int_sec
CLR TR0;关闭计时
JMP Timer0Interrupt_EXIT
Timer0Int_sec:
ADD A,#01 ;秒加1
DA A
MOV SECOND,A
SWAP A
ANL A,#0fH
MOV led_buf,A
MOV A,SECOND
ANL A,#0FH
MOV LED_BUF+1,A
;========================
Timer0Interrupt_EXIT:
POP ACC
POP DPL
POP DPH
RETI
;====================================================
; function:Init_M7219 ;初始化max719
; input: ------------
; output: ----------
; usage: a,b
;====================================================
Init_M7219: ;初始化Max7219
MOV a,#0bh ;设置扫描界限
MOV b,#set_limit ;设置位数
lcall w_7219
MOV a,#09h ;设置译码模式
MOV b,#set_model ;00h非译码模式;ffh为BCD译码模式
lcall w_7219
MOV a,#0ah ;设置亮度
MOV b,#set_bright ;15/32亮度
lcall w_7219
MOV a,#0fh ;设置工作方式
MOV b,#set_normal ;正常工作方式
lcall w_7219
MOV a,#0ch ;进入启动工作方式
MOV b,#set_start
lcall w_7219
RET
;===================================================
; function:disp ;显示子程序
; input: r0
; output: -----------
; usage: r0,r3,r4,a,b
;===================================================
disp:
MOV r0,#led_buf
MOV r4,#01h
MOV r3,#set_limit
INC r3
disp1:
MOV a,@r0
MOV b,a
MOV a,r4
lcall w_7219
INC r0
INC r4
djnz r3,disp1
RET
;===================================================
; function:w_7219 ;显示驱动程序;
; input: a ;传送7219的地址
; b ;传送7219的数据
; output:-------------
; usage: a,r2
;====================================================
w_7219:
CLR M7219_clk
CLR M7219_din
CLR M7219_load ;置load=0
lcall sd_7219 ;传送7219的地址
MOV a,b
lcall sd_7219 ;传送数据
setb M7219_load ;数据装载
CLR M7219_din
RET
;=================================================
; function:sd_7219 ;向7219传送数据或地址子程序
; input: a
; output: max7219
; usage: a, r2
;==================================================
sd_7219: ;向7219送地址或数据
MOV r2,#08h
c_sd:
CLR C
CLR M7219_clk
RLC a
MOV M7219_din,c ;准备数据
NOP
setb M7219_clk ;上升沿将数据传入
NOP
NOP
CLR M7219_clk
djnz r2,c_sd
RET
F. 用52单片机C语言编写程序,实现00~59计时。要求用T0,工作方式1。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6; //段选
sbit wela=P2^7; //位选
uchar shi,ge,num1,num2; //变量
uchar code table[]={0x3f,0x06,0x5b,0x4f, //共阴极字型码
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x) //延时子程序
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
TMOD=0x01; //设置定时器0的工作方式
TH0=(65536-50000)/256; //装初值
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
}
void display() //显示子程序
{
la=1;
P0=table[ge]; //送段选数据
la=0;
P0=0xff; //送位选数据前关闭所有显示
wela=1;
P0=0xfe; //送位选数据
wela=0;
delay(5); //延时
la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
void main()
{
init();
while(1)
{
display();
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256; //重装初值
TL0=(65536-50000)%256;
num1++;
if(num1==20) //到了20次,1秒时间到
{
num1=0; //清0重新计数
num2++;
if(num2==60)
num2=0;
P1=0x00;
delay(500);
P1=0xff;
shi=num2/10; //把一个2位数分离后分别送数码管显示
ge=num2%10; //十位和个位
}
}
试了的,可以放心,采纳吧!
G. 52单片机制作秒表问题
H. 要求:一 课程设计内容:设计一个单片机秒表,该秒表可显示00.000到99.999秒的时间
#include<reg52.h>
#include<intrins.h>
void Delay1ms(); //@11.0592MHz
int ms=0;
int s=0;
void main()
{
while(1)
{
Delay1ms();//延时函数
ms++;
if(ms>=1000) //经过一千毫秒
{
ms=0; //让一千毫秒的变量清零
s++; //秒变量加一
}//这里得到的就是数据,看你通过什么显示,然后将两个数据填写进去就行
}
}
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
刚刚给你写的
I. 如何用单片机汇编语言设计一个秒表
C51 http://..com/question/42921479.html?fr=qrl&cid=192&index=1
http://..com/question/29519178.html?fr=qrl&cid=192&index=2
1.基于单片机的设计
2.计时精度:百分之一秒
2.5键操作完成 清除 启动 停止 设置初值 程序退出的功能
采用LED显示时、分、秒、百分之一.PROTEL图最好也有
用89C51,外接晶振,复位电路,二个数码管,二个按键,做一个电子秒表,具体要求为用按键起停电子表,可用按键设计倒计时时间(如10S,20S,60S),并启动倒计时功能。能用按键选择以上两功能之一。
三、程序代码:
A_BIT EQU 20H
B_BIT EQU 21H
TEMP EQU 22H
MOV P3,#0FFH
MOV P0,#0FFH
CLR F0
CLR F1
MOV DPTR,#NUMTAB
MOV P3,#0FFH
MOV P0,#0FFH
START:JB P3.6,START1
ACALL DELAY10
JB P3.6,START
JNB P3.6,$
LJMP GN1
START1: JB P3.7,START
ACALL DELAY10
JB P3.7,START1
JNB P3.7,$
LJMP GN2
GN1:
S1:MOV A,#0
MOV TEMP,A
GOON1: MOV R2,#2
JS1: MOV R3,#250
TIME1: MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,A
MOV A_BIT,B
LCALL DPLOP1
C1: JB P3.6,B1
ACALL DELAY10
JB P3.6,C1
JNB P3.6,$
CPL F0
ZT1: ; MOV P3,#0FFH
JB P3.6,$
ACALL DELAY10
JB P3.6,ZT1
JNB P3.6,$
LCALL DPLOP1
B1: JB P3.7,LOOP1
ACALL DELAY10
JB P3.7,B1
JNB P3.7,$
AJMP OVER
LOOP1: DJNZ R3,TIME1
DJNZ R2,JS1
INC TEMP
MOV A,TEMP
CLR C
SUBB A,#60
JNZ GOON1
ACALL OVER
RET
GN2: MOV A,#14H
MOV TEMP,A
MOV P3,#0FFH
MOV P0,#14H
GOON2: MOV R2,#2
JS2: MOV R3,#250
TIME2: MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,A
MOV A_BIT,B
MOV DPTR,#NUMTAB
DPLOP2: MOV A,A_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
ACALL DELY1
SETB P2.5
MOV A,B_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6
ACALL DELY1
SETB P2.6
C2: JB P3.6,B2
ACALL DELAY10
JB P3.6,C2
JNB P3.6,$
ZT2: MOV P3,#0FFH
JB P3.6,$
ACALL DELAY10
JB P3.6,ZT2
JNB P3.6,$
B2: JB P3.7,LOOP2
ACALL DELAY10
JB P3.7,B1
JNB P3.7,$
AJMP OVER
LOOP2: DJNZ R3,TIME2
DJNZ R2,JS2
DEC TEMP
MOV A,TEMP
JNZ GOON2
ACALL OVER
RET
OVER: AJMP START
DELY1: MOV R4,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET
DELAY10: MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
NUMTAB: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
DPLOP1: MOV A,A_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
ACALL DELY1
SETB P2.5
MOV A,B_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6
ACALL DELY1
SETB P2.6
RET
END
J. 求80c52单片机设计的倒计时器,快要交了!!
你是要用数码显示嘛?
不同的数码现实程序有所不同的!给点分可以帮你写个的