诚 信 声 明
郑重声明:呈交毕业设计文成果指导老师指导独立进行研究取成果成果存知识产权争议毕业设计含集体已发表作品成果完全意识声明法律结果承担
毕业设计者签名:
年 月 日
摘:文介绍基at89s51单片机设计电子数字秒表调试方法设计通at89s51单片机单片机系统三极驱动外围键数码显示等部件设计基单片机简易计时器设计通四位体阳极数码显示数码前两位显示分钟两位显示秒通键秒进行设置利单片机部存储器eeprom存储十组数进行正计时倒计时切换倒计时结束蜂鸣器报警倒计时时间设置查记录数暂停清零等功电子数字秒表计时器够精确记录时间广泛种继电器电磁开关延时器定时器等时间测试体育竞技计时方面广泛应拥较强实性
关键字:at89s51单片机驱动芯片四位体数码
前 言
时钟发明天起成类朋友着时间推移科学技术断发
展时间计量精度求越越高应越越广样时钟更民服务样老朋友焕发青春呢?求断设计出新型时钟
现高精度计时工具数石英晶体振荡器电子钟石英表石英钟采石英技术走时精度高稳定性方便需常调校数字式电子钟集成电路计时时译码代机械式传动led显示器代显示器代指针显示进显示时间减计时误差种表具时分秒显示时间功进行时分校片选灵活性
时间认宝贵资源时间更深刻解时电子方面更深刻认识通学次设计介绍单片机部定时计数器实现电子数字秒表方法设计单片机at89s51芯片led数码核心辅必电路构成单片机电子数字秒表相信会越越深入浸透生活中定程度影响生活理解诠释单片机制作电子产品会越越众领域实施编程开发缺少部分必然成种趋势更解单片机原理应做设计进行巩固
面计时器设计具体程
1绪
11 课题研究背景
着科技快速发展时间流逝观太阳摆钟现电子钟类断研究断创新纪录奥运会计时技术进步计时科技进步百年首届现代奥运会计时跑表系列高科技计时装置高速数码摄机
电子触摸垫红外光束线应答器等等计时技术快速发展便千分秒差距决定着冠军属现体育竞技赛中运动员水断提高差距断缩求时间精度求越越高时冠军间差距毫秒高精度秒表记录成绩机械控制家电计时运作暂停需秒表控制秒表较广泛应秒表携带方便成低应广泛具广泛市场前景
12课题研究目意义
电子数字秒表计时器够精确记录时间广泛种继电器电磁开关延时器定时器等时间测试体育竞技计时方面广泛应拥较强实性
制作电子数字秒表计时器够学知识进行系统实践进步巩固加深基础理知识基技掌握知识进行系统化技操作实践知识综合化通完成电子数字秒表计时器设计制作调试电子产品整制作程完整认识考验电路设计力程序编译力产品焊接组装力实践中提高技水
13课题解决容
课题研究电子数字秒表单片机控制技术具体应研究容包括方面:
(1)选电子数字秒表芯片时应重点考虑功实方便单片存储低功耗抗断电器件
(2)根选电子数字秒表历芯片设计外围电路单片机接口电路
(3)硬件设计时结构量简单实易实现系统电路量简单
(4)根硬件电路图开发板完成器件焊接
(5)根设计硬件电路编写控制at89s51芯片单片机程序
(6)通编程编译调试程序载单片机运行实现设计功
(7)硬件电路软件程序设计时考虑提高机界面友性方便户操作等素
设计务:掌握单片机程序设计调试应电路设计分析调试检测
基求:设计键控制数码显示电子数字秒表实现存储十组数数码前两位显示分钟两位显示秒完成正计时倒计时切换倒计时结束时蜂鸣器报警时倒计时时间行设置查记录数具备暂停清零等功
14系统硬件设计
141 电路设计框图
设计通at89s51单片机单片机系统三极驱动外围键数码显示等部件设计基单片机简易计时器设计通四位体阳极数码显示通键秒进行设置数进行存储查
图1 电路设计框图
142 功实现
系统正常工作时led液晶分秒显示零k1键时电子数字秒表开始计时果想时间进行调整通调整设置模块实现k2键时存储数次存储组数存储十组数想倒计时k5键调节倒计时秒数倒计时结束时蜂鸣器响五声停止想切换正计时k4键时k5键调闹钟闹钟时间时蜂鸣器响五声数码闪五停止果想退出重新计时k6复位
系统原理图图2:
图2原理图
2软件设计
时间认宝贵资源时间更深刻解时电子方面更深刻认识通学选择做通键控制数码电子数字秒表设计电子数字秒表核心部件单片机at89s51整类史位已容置疑确立相信会越越深入浸透生活中定程度影响生活理解诠释单片机制作电子产品会越越众领域实施编程开发缺少部分必然成种趋势更解单片机原理应做设计进行巩固
电路at89s51单片机系统控制核心数码显示三极8550驱动输入部分采五独立式键k1k2k3k4k5显示部分型单片机p0口相连数码位单片机p2口控制型号单片机需相应改变址该软硬件系统具通性高实际价值
21 软件系统框图
系统设计图图2示
图3 软件设计图
22 程序流程图
图4程序流程图
23 程序编写
#include
#define uc unsigned char
#define ui unsigned int
void display()
char code tab[]{0xc00xf90xa40xb00x990x920x820xf80x800x900xff} 数字应显示码表
char code tab1[]{0x400x790x240x300x190x120x020x780x000x10}数点
char code index[]{0xf70xfb0xfd0xfe} 位数字应数码显示位置
uc num[8] 位数字存放数组
uc val[10][4]存储记录 [10]记录序列[8]组记录中数字
char val_index记录序列标志位
uc set_indexok_flagtiming
bit mode1运行模式1正计数0反计数
bit fin_flag0完成标志位反计数结束时位高电触发蜂鸣器
bit set_shan
sbit beepp3^6 sbit key1p1^0 sbit key2p1^1 sbit key3p1^2 sbit key4p1^3 sbit key5p1^4
void delay(ui z)
{ ui ij
for(i0i
}
void init()初始化设计
{ tmod0x11 th00x4b tl00xff th10x4b tr00
tl10xff et11 tr11 et01 ea1
val_index0
}
void clr()
{ uc i
for(i0i<8i++)
num[i]0
}
void setup()
{ ok_flag0xff
set_index0
while (ok_flag)
{ display()
if(key10) 动key1设置值加1
{ delay(5)
if(key10)
{ if ((set_index0)|(set_index2)|(set_index4)|(set_index6))
{ num[set_index]++
if(num[set_index]10)
num[set_index]0
}
else if((set_index1)|(set_index3)|(set_index5)|(set_index7))
{ num[set_index]++
if(num[set_index]6)
num[set_index]0
}
while(key1) display()
}
}
if(key20) 动key2设置位置加1
{ delay(5)
if(key20)
{ set_index++
if(set_index8)
{ set_index0
if((num[4]0)||(num[5]0)||(num[6]0)||(num[7]0))
{
num[0]0num[1]0num[2]0num[3]0mode1
}
else if((num[4]0)&&(num[5]0)&&(num[6]0)&&(num[7]0))
{ if((num[0]0)&&(num[1]0)&&(num[2]0)&&(num[3]0))
mode1
else if((num[0]0)||(num[1]0)||(num[2]0)||(num[3]0))
mode0
}
}
while(key2) display()
}
}
if(key50) 动key5设置结束
{ delay(5)
if(key50)
{ ok_flag0x00
if((num[4]0)||(num[5]0)||(num[6]0)||(num[7]0))
{
num[0]0num[1]0num[2]0num[3]0mode1
}
else if((num[4]0)&&(num[5]0)&&(num[6]0)&&(num[7]0))
{ if((num[0]0)&&(num[1]0)&&(num[2]0)&&(num[3]0))
mode1
else if((num[0]0)||(num[1]0)||(num[2]0)||(num[3]0))
mode0
}
mode0
while(key5) display()
}
}
}
}
void display()
{ uc i
if(ok_flag0xff)
{ if(timing0)
{ for(i0i<4i++)
{ p00xff
p2index[i]
if(i2)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
}
}
else
{ if(set_shan0)
{ for(i0i<4i++)
{ p00xff
p2index[i]
p0tab[10]
delay(2) 修改参数修改刷新频率
}
}
else if(set_shan1)
{ for(i0i<4i++)
{ p00xff
p2index[i]
if(i2)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
}
}
}
}
else
{ if(set_shan0)
{ if(set_index0)
{ for(i0i<4i++)
{ if(i0)
{ p2index[0]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i]
if(i2)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
else if(set_index1)
{ for (i0i<4i++)
{ if(i1)
{ p2index[1]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i]
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
else if(set_index2)
{ for (i0i<4i++)
{ if(i2)
{ p2index[2]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i]
if(i2)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
else if(set_index3)
{ for (i0i<4i++)
{ if(i3)
{ p2index[3]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i]
if(i2)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
else if(set_index4)
{ for (i4i<8i++)
{ if(i4)
{ p2index[0]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i4]
if(i6)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
else if(set_index5)
{ for (i4i<8i++)
{ if(i5)
{ p2index[1]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i4]
if(i6)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
else if(set_index6)
{ for (i4i<8i++)
{ if(i6)
{ p2index[2]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i4]
if(i6)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
else if(set_index7)
{ for (i4i<8i++)
{ if(i7)
{ p2index[3]
p0tab[10]
delay(2) 修改参数修改刷新频率
p00xff
}
else
{ p2index[i4]
if(i6)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
}
else
{ if(set_index<4)
{ for (i0i<4i++)
{ p2index[i]
if(i2)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
else
{ for (i4i<8i++)
{ p2index[i4]
if(i6)
p0tab1[num[i]]
else
p0tab[num[i]]
delay(2) 修改参数修改刷新频率
p00xff
}
}
}
}
}
void alarm()
{ if((num[4]0)&&(num[5]0)&&(num[6]0)&&(num[7]0))
{timing0}
else
{
if((num[4]num[0])&&(num[6]num[2])&&(num[5]num[1])&&(num[7]num[3]))
{timing1tr00}
}
}
void main()函数
{ uc hgk
init()
clr()
while(1)
{ display() 刷屏显示数码
alarm()
if(key10) 开始暂停钮
{ delay(5)
if(key10)
{ tr0~tr0
while(key1) display()
}
}
if(key20) 记录钮
{ delay(5)
if(key20)
{ if(tr01)运行中记录键存储记录
{ for(g1g<10g++)
{
for(k0k<4k++)
{val[g1][k]val[g][k]}
}
for(h0h<4h++)
{ val[9][h]num[h]前时间存储 }
}else停止状态记录键查记录动次序列递减次查次记录
{ for(h0h<4h++)
num[h]val[val_index][h]前时间存储
val_index
if(val_index<0)
val_index9
}
while(key2) display()
}
}
if(key30) 复位钮
{ delay(5)
if(key30)
{ clr() while(key3) display()}
}
if((key40)&&(tr00)) 模式选择钮仅停止状态效
{ delay(5)
if(key40)
{ mode~mode
while(key4) display()}
}
if((key50)&&(tr00)) 时间设置仅停止状态效
{ delay(5)
if(key50)
{ while(key5)
display()
setup()}
}
}
}
void t0_time() interrupt 1
{ uc m
th00x4b 定时器定时时间50ms
tl00xff
m++
if(m20)
{ m0
if(mode1) 正计数
{ num[0]++
if(num[0]10)
{ num[0]0
num[1]++
if(num[1]6)
{ num[1]0
num[2]++
if(num[2]10)
{ num[2]0
num[3]++
if(num[3]10)
num[3]0}
}
}
}
else
{ num[0]
if(num[0]>9)
{ num[0]9
num[1]
if(num[1]>5)
{ num[1]5
num[2]
if(num[2]>9)
{ num[2]9
num[3]
if(num[3]>9)
{ num[3]0
tr00
fin_flag1
clr()}
}
}
}
}
}
}
void t1_time() interrupt 3
{ uc shanbeep_stop
th10x4b
tl10xff
shan++
if(shan10)
{ shan0
set_shan~set_shan
if((fin_flag)||(timing)) 反计数完成时 计时时间时
{ beep_stop++
beep~beep
if(beep_stop10)
{ fin_flag0
timing0
num[4]0num[5]0num[6]0num[7]0
beep_stop0
beep1}
}
}
}
24软件仿真
电子数字秒表实现单片机部存储器eeprom存储十组数数码前两位显示分钟两位显示秒正计时倒计时切换倒计时结束蜂鸣器报警倒计时时间设置设置闹钟查记录数暂停清零等功keil c51软件编辑c语言程序编译调试编写程序编译调试程中出现问题编写程序时候数码显示子程序中断漏写导致程序编译成功编写程序特殊符号弄错漏写编程时容易出现漏写弄错程序正常编译
25软硬件仿真
keil c51软件编辑c语言程序编写c语言程序编译成功生成hex代码供载器proteus isis绘制原理图keil c51proteus isis连接起调试进行仿真k1键时电子数字秒表开始计时果想时间进行调整通调整设置模块实现k2键时存储数次存储组数存储十组数想倒计时k5键调节倒计时秒数倒计时结束时蜂鸣器响五声停止想切换正计时k4键时k5键调闹钟
闹钟时间时蜂鸣器响五声数码闪五停止果想退出重新计时k6复位
结
整设计程中软件方面助渠道资料设计正计时程序倒计时程序 设置时间程序倒计时蜂鸣器提示程序lcd显示程序系统调试通块at89s51开发板助keilstc少许搭建外围电路实现程中分步调试时显示出正计时倒计时数存储倒计时蜂鸣器提示集中调试时没达预期效果电子数字秒表具读显示直观功样电路简洁成低廉等诸优点符合电子仪器仪表发展趋势具广阔市场前景
整设计程中学许没学知识电路焊接时然没什问题中知道焊接整作品中重性电路工程量心急慢慢急求成反达事半功倍效果电路设计布局先构思显电路板美观方程序编写中思路清晰开始时遇问题静心思考理清思路反心应手
次文设计中真正体会知识重性特理联系实际学理知识运实际生活中知识改变切
致 谢
历时两月时间终篇文写完文写作程中遇数困难障碍学老师帮助度尤强烈感谢文指导老师―邓明元老师
进行私指导帮助厌烦帮助进行文修改改进外校图书馆查找资料时候图书馆老师提供方面支持帮助帮助指导位老师表示中心感谢感谢篇文涉位学者文引数位学者研究文献果没位学者研究成果帮助启发难完成篇文写作感谢学朋友写文程中予素材
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档