1前言 1
2整体设计方案 2
3硬件设计方案 2
31 复位电路 2
32 晶振电路 3
33 LED显示电路 4
34 键输入电路 4
35 蜂鸣器电路 5
4软件设计方案 6
41 软件设计方法 6
42 系统软件设计思想 6
43 系统程序 7
44 中断子程序 7
441 定时器T0中断程序设计 8
442 定时器T1中断程序设计 8
45 键扫描子程序 10
46 调时分秒子程序 10
47 调节闹钟子程序 11
5调试功说明 12
51 硬盘调试 13
52 系统性测试功说明 13
53 系统时钟误差分析 13
54 软件调试问题解决 13
6设计总结 13
参考文献 14
附录1:功电子时钟原理图 15
附录2:C语言源程序 16
1前言
20世纪末电子技术获飞速发展推动现代电子产品渗透社会领域力推动社会生产力发展社会信息化程度提高时现代电子产品性进步提高产品更新换代节奏越越快 时间说总宝贵工作忙碌性繁杂性容易忘记前时间忘记做事情事情重时候种遗忘伤雅旦重事情时耽误酿成祸
目前单片机正着高性品种方发展趋势进步着CMOS化低功耗体积容量高性低价格外围电路装化等方面发展面单片机发展趋势单片机应重意义根改变传统控制系统设计思想设计方法前必须模拟电路数字电路实现部分功现已单片机通软件方法实现种软件代硬件控制技术称微控制技术传统控制技术次革命
单片机模块中常见数字钟数字钟种数字电路技术实现时分秒计时装置机械式时钟相具更高准确性直观性机械装置具更更长寿命广泛
数字钟采数字电路实现时分秒数字显示计时装置广泛家庭车站 码头办公室等公场成日常生活中少必需品数字集成电路发展石英晶体振荡器广泛应数字钟精度远远超老式钟表 钟表数字化生产生活带极方便扩展钟表原先报时功诸定时动报警时动铃时间程序动控制定时广播动起闭路灯定时开关烘箱通断动力设备甚种定时电气动启等钟表数字化基础研究数字钟扩应着非常现实意义
数字钟已成日常生活中:必少必需品广泛家庭车站码头剧场办公室等公场生活学工作娱乐带极方便数字集成电路技术发展采先进石英技术数字钟具走时准确性稳定携带方便等优点计时动报时动控制等领域
2整体设计方案
功电子时钟功电路具实现显示时分秒(24时)计时方式功具快速校准时分秒功秒表时钟功转换具整点报时功实现时间调整单片机复位时钟电路晶振LED数码键蜂鸣器组成
复位电路
时钟电路
电源电路
AT89C51
LED数码显示电路
键输入电路
蜂鸣器电路
图1 时钟电路框图
3硬件设计方案
31 复位电路
单片机复位电路电脑重启部分电脑中出现死机重启钮电脑部程序头开始执行单片机样单片机系统运行中受环境干扰出现程序跑飞时候复位钮部程序动头开始执行
单片机启动时需复位CPU系统部件处确定初始状态初态开始工作89系列单片机复位信号RST引脚输入芯片施密特触发器中系统处正常工作状态时振荡器稳定果RST引脚高电维持2机器周期(24振荡周期)CPU响应系统复位
单片机系统复位方式:手动钮复位电复位课程设计采手动键复位
手动钮复位需复位输入端RST加入高电(图(3))般采办法RST端正电源Vcc间接钮钮时Vcc+5V电会直接加RST端手动钮复位电路图示动作快会钮保持接通达数十毫秒完全够满足复位时间求
图2 复位电路
32 晶振电路
51单片机系统晶振Y1采6MHz者110592MHz正常工作情况采更高频率晶振51单片机系统晶振振荡频率直接影响单片机处理速度频率越处理速度越快
单片机系统里晶振单片机系统里晶振作非常全程晶体振荡器结合单片机部电路产生单片机需时钟频率单片机晶振提供时钟频率越高单片机运行速度越快单片接切指令执行建立单片机晶振提供时钟频率
单片机晶振作系统提供基时钟信号通常系统晶振便部分保持步通讯系统基频射频晶振通电子调整频率方法保持步
图3 晶振电路
33 LED显示电路
LED显示器工作方式两种:静态显示方式动态显示方式静态显示特点数码段选必须接8位数线保持显示字形码送入次字形码显示字形直保持直送入新字形码止种方法优点占CPU时间少显示便监测控制缺点硬件电路较复杂成较高动态显示特点位数码段选线联起位选线控制位数码效选亮数码采动态扫描显示谓动态扫描显示轮流位数码送出字形码相应位选利发光余辉眼视觉暂留作感觉位数码时显示动态显示亮度静态显示差选择限流电阻时应略静态显示电路中
八段数码称位数码列起构成位数码段选线连起公端称位选线显示时段选线送入字符编码选中位选线数码便会点亮
图4 LED显示电路
34 键输入电路
独立式键采键单独占IO口结构简单键盘输入设计释放键时输入IO口端电样单片机程序根端口电变化判断否键键独立式键盘原理简单键电路独立占条数线种接法占硬盘资源适合该课程设计电子时钟电路
图5 独立键
35 蜂鸣器电路
蜂鸣器种体化结构电子讯响器采直流电压供电广泛应计算机印机复印机报警器电子玩具汽车电子设备电话机定时器等电子产品中作发声器件蜂鸣器分压电式蜂鸣器电磁式蜂鸣器两种类型
压电式蜂鸣器 压电式蜂鸣器谐振荡器压电蜂鸣片阻抗匹配器鸣箱外壳等组成压电式蜂鸣器外壳装发光二极谐振荡器晶体集成电路构成接通电源(15~15V直流工作电压)谐振荡器起振输出15~25kHZ音频信号阻抗匹配器推动压电蜂鸣片发声
压电蜂鸣片锆钛酸铅铌镁酸铅压电陶瓷材料制成陶瓷片两面镀银电极极化老化处理黄铜片锈钢片粘起电磁式蜂鸣器振荡器电磁线圈磁铁振动膜片外壳等组成接通电源振荡器产生音频信号电流通电磁线圈电磁线圈产生磁场振动膜片电磁线圈磁铁相互作周期性振动发声
图6 蜂鸣器电路
4软件设计方案
41 软件设计方法
系统软件设计工具系统功设计单片机软件设计包括执行软件设计监控软件设计单片机软件设计通常考虑方面问题:
l 根软件功求系统软件划分干相独立部分设计出合理总体结构软件开发清晰简洁流程合理
l 培养良编程风格考虑结构化程序设计实行模块化子程序化便调试链接便移植修改
l 建立正确数学模型通仿真提高系统性选取合适参数
l 绘制程序流程图
l 合理分配系统资源
l 程序加入注释提高读性实施软件工程
l 注意软件抗干扰设计提高系统性
42 系统软件设计思想
系软件设计中利单片机定时器设计时间计时处理采单片机部T0定时器溢出中断实现工作T0方式定时250微妙连续中断4000次秒需时间单位
该设计C51编写程序汇编语言移植性较差C语言较灵活许子函数直接移植程序中函数外包含许子函数延时函数键扫描函数初始化函数时间显示函数设定闹钟显示函数调时分秒函数功切换函数秒表功函数
43 系统程序
控程序循环中工作扫描否键健做相应功处理时扫描显示器显示时间数检查设置时间否时间计时处理程序等1s更新时间数新时分秒数转换数字数显示八段数码
开始
蜂鸣器初始化
数码显示初始化
键输入初始化
定时器T0T1初始化
开中断开关允许T0T1中断
调时钟显示程序
调键扫描程序
等中断
启动T0T1
定义计数变量状态变量
图7 系统程序流程图
44 中断子程序
中断子程序功:提供时间基准快速键调时功
441 定时器T0中断程序设计
定时器T0中断提供时间基准T0连续中断4000次时秒时秒加秒值60时分钟加时秒清零分钟值60时时加时分钟值清零时24时时清零
计数变量清零
秒加1
分加1
秒清零
时加1分清零
时清零
计数4000否
秒 >60 否
分 >60 否
时>24否
开始
Y
N
Y
Y
Y
N
N
N
返回
计数变量加1
图8 T0中断程序流程图
442 定时器T1中断程序设计
T1中断500次时检测次选择键S3果键检测时间加减键应键执行应操作选择键选择调时调分调秒时间加减键失效四种功样达迅速校准时间作
计数变量1加1
延时抖动
状态变量m加1
m1
m2
m3
m4
调秒程序
调分程序
调时程序
变量清零
计数变量1清零
键S3否
键S3否
计数500否
N
N
N
Y
Y
Y
计数变量2加1
秒表低位加1计数变量2清零
秒表高位加1
低位清零
秒表高位清零
计数400否
低位>9999否
高位>9999否
N
N
N
Y
Y
Y
开始
Y
flag 1否
中断返回
N
图9 T1中断程序流程图
45 键扫描子程序
键扫描子程序程序计中相重部分键扫描子程序功:扫描S4键否S4键执行相应功标志变量flag初值设1S4键时标志变量flag值加1应切换设置功具体切换务:flag值1时显示时钟时间进行校准flag值2时切换秒表功flag值3时切换闹钟设置功flag值4时flag值返回1回时钟显示调时
开始
N
S4键否?
Y
返回
延时抖动
S4键否?
Y
N
状态变量flag加1
图10 键扫描程序流程图
46 调时分秒子程序
选择键状态选择调秒时相应S2秒进行加1运算秒加60时秒清零S1秒进行减1运算减零时秒等59选择键切换时应键调分时调分调时子程序调秒子程序类似
开始
Y
延时抖动
S2键否
S2键否
延时抖动
Y
N
N
秒加1
Y
秒减1
Y
秒 >60
秒清零
Y
秒 <0
秒59
Y
N
N
N
N
S1键否
S1键否
返回
图11 调秒程序流程图
47 调节闹钟子程序
标志变量flag值3时切换调节闹钟功检测调节选择键S3否果状态变量n加1然根状态变量值调相应调时分秒子程序实现闹钟调节
延时抖动
状态变量n加1
键S3否
键S3否
N
Y
Y
n2
n3
n4
调分程序
调时程序
变量清零
n1
调秒程序
flag 3否
N
返回
开始
Y
N
图12 调节闹钟程序流程图
5调试功说明
单片机应系统调试包括硬件软件两部分完全分开般方法排明显硬件障进行综合调试排软硬件障
51 硬盘调试
电路板首先检查加工质量确保没方面错误短路断路尤避免电源短路元器件安装前逐检查万表测数值否相完成焊接应先空载电(芯片座插芯片)检查引脚电位否正确切正常方断电情况芯片插入次检查引脚电位逻辑关系万表探针放单片机接电源引脚检测否符合求
52 系统性测试功说明
走时:默认走时状态24时制分显示时时分分秒秒2动态显示时间会实际时间秒少单位变化
走时调整:检测次选择键S3果键检测时间加减键应键执行应操作选择键选择调时调分调秒时间加减键失效四种功样达迅速校准时间作
53 系统时钟误差分析
时间基物理量具连续动流逝重复等特性国时间基准国家授时中心日常时钟定精度该基准保持步结合时间概念误差理定义电子钟走时误差SS1S2S1表示程序实际运行计算秒S2表示客观时间标准秒S>0时表示电子钟秒单元数值刷新滞走时误差慢反S<0表示秒单元数值刷新超前走时误差快
次设计单片机电子钟系统中误差源包括晶体频率误差定时器溢出误差延迟误差晶体频率产生震荡容易产生走时误差定时器溢出时间误差应秒溢出秒溢出造成走时误差延迟时间长短会造成基准时间产生偏差造成走时误差
54 软件调试问题解决
软件程序调试般重点放分模块调试统调环软件调试采取离线调试线调试两种方式次课题Keil软件调试程序通模块程序单步踪调试程序逐渐趋正确统调程序
6设计总结
次单片机系统设计程中受益匪浅通学二年时间里学知识回顾充分发挥学知识理解课程设计思考书面表达力进步深化学积累定宝贵验撰写报告程专业知识学程运已专业基础知识进行设计分析解决理问题实际问题知识转化力实际训练培养运学知识解决实际问题力
通次课程设计发现理水提高够课知识实践相整合理知识服务教学实践增强动手力实验十分意义 获深刻验通次课程设计知道理实际距离知道理实际想结合重性中知书法知知识
学立足书解决理实际教学中实际问题目实践相结合理问题实践课题解决问题课程研究学生专家通手解决问题脑子解决问题更加深刻学应该采取理实践结合方式理问题实践性课题种做法助完成理知识巩固助带动实践解决实际问题加强动手力解决问题力
参考文献
[1] 李群芳肖张士军.单片机微型计算机技术接口.电子工业出版社199712125133
[2] 彭黄科雷道仲.单片机典型系统设计实例讲解.电子工业出版社2002125133
[3] 立民.MCS51单片机应系统设计.北京航空航天学出版社199599112
[4] 杨刚周群.电子系统设计实践.电子工业出版社199879102
[5] 张毅刚.单片机原理应.高等教育出版社1999125143
[6] 张毅刚.MCS51单片机应设计.哈尔滨工业学出版社1994125133
[7] 张富.CC++程序设计(第3版).民邮电出版社199879112
[8] 李华.MCS51系列单片机接口技术.北京航空航天学出版社20057115123
[9] 李广弟.单片机基础.北京航空航天学出版社199895123
附录1:功电子时钟原理图
附录2:C语言源程序
#include
#define uchar unsigned char
#define uint unsigned int
#define key P3
uchar code wei[]{0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe}
uchar code duan[]{0xc00xf90xa40xb00x990x920x820xf80x800x900xbf}
uchar num1[] {0010001000}
uchar num2[] {00000000}
uchar sec55min59hou23
uchar sec_1 0min_1 1hou_1 0
uint sec1 0sec2 0
int count1 0count20cnt 0cnt2 0
uchar flag 1flag2 0
uchar m
void delay(uint x)
{uint ab
for(a0a
void display1(char _hou char _min char _sec)
{ num1[0] _sec10
num1[1] _sec10
num1[3] _min10
num1[4] _min10
num1[6] _hou10
num1[7] _hou10 }
void display2(uint xuint y)
{ num2[0] ((x1000)100)10
num2[1] ((x1000)100)10
num2[2] (x1000)100
num2[3] x1000
num2[4] ((y1000)100)10
num2[5] ((y1000)100)10
num2[6] (y1000)100
num2[7] y1000 }
void switch_(void)
{ switch(flag)
{case 1display1(houminsec)break
case 2display2(sec1sec2)break
case 3display1(hou_1min_1sec_1)break
case 4flag 1break
defaultbreak }}
void key_scan1()
{if((key 0xfb) && (flag 1)) {m++}
if(m 1)
{if(key 0xfd)
{sec++
if(sec > 60)
{ sec 0} }
if(key 0xfe)
{ if(sec 0)
{sec 60}sec}}
if(m 2)
{ if(key 0xfd)
{ min++
if(min > 60)
{min 0hou++
if(hou>24)
{ hou 0}}}
if(key 0xfe)
{ if(min 0 )
{min 60}min}}
if(m 3)
{ if(key 0xfd)
{hou++
if(hou > 24)
{ hou 0 } }
if(key 0xfe)
{ if(hou 0)
{hou 24}hou} }
if(m 4)
{ m0}}
void key_scan2()
{uchar x if(P3_3 0)
{delay(10)if(P3_3 0)
{flag++TR1 0sec10sec20}}
while(P3_3 0)
{for(x 0x < 8x++)
{switch_()P0 0xffP2 wei[x]
if((flag 1) || (flag 3))
{P0 duan[num1[x]]}
else {P0 duan[num2[x]]}delay(1)}}}
void key_tran2()
{if(flag 1) {TR1 1}
if((key 0xfb) && (flag 2))
{delay(10)
if(key 0xfb)
{cnt2++}while(key 0xfb)
switch(cnt2)
{case 1TR1 1break
case 2TR1 0break
case 3cnt2 0sec1 0sec2 0break
defaultbreak}}}
void key_scan3()
{if((key 0xfb) && (flag 3))
{ flag2++}while((key 0xfb) && (flag 3))
if(flag2 1)
{ if(key 0xfd)
{sec_1++
if(sec_1 > 60)
{sec_1 0}
}while(key 0xfd)
if(key 0xfe)
{if(sec_1 0)
{ sec_1 60 }sec_1 }while(key 0xfe)}
if(flag2 2)
{ if(key 0xfd)
{ min_1++
if(min_1 > 60)
{min_1 0hou_1++
if(hou_1>24)
{ hou_1 0}}}while(key 0xfd)
if(key 0xfe)
{ if(min_1 0 )
{ min_1 60}
min_1 }while(key 0xfe) }
if(flag2 3)
{if(key 0xfd)
{ hou_1++
if(hou_1 > 24)
{ hou_1 0}}
while(key 0xfd)
if(key 0xfe)
{ if(hou_1 0)
{ hou_1 24}
hou_1}
while(key 0xfe) }
if(flag2 4)
{ flag20}}
void fmq()
{if((sec sec_1) && (min min_1) && (hou hou_1))
{P1_0 0delay(5000)P1_0 1}
if((min 0)&&(sec 0))
{P1_0 0delay(1000)P1_0 1}}
void main()
{uchar x P1_0 1 P0 0xffP2 0xff
P3 0xffTMOD 0x22TL0 6
TH0 TL0TL1 6TH1 TL1
EA 1ET0 1ET1 1TR0 1 TR1 1
while(1)
{for(x 0x < 8x++)
{switch_()P0 0xffP2 wei[x]
if((flag 1) || (flag 3))
{P0 duan[num1[x]]}
else
{P0 duan[num2[x]]}
delay(1)}
key_scan2()key_tran2()key_scan3()fmq()}}
void T0way2(void) interrupt 1
{count1++
if(count1 4000)
{count1 0sec++
if(sec > 60)
{sec 0 min++
if(min > 60)
{min 0 hou++
if(hou > 24)
{hou 0}}}}}
void T1way2(void) interrupt 3
{cnt++count2++
if(cnt 500)
{key_scan1() cnt 0}
if(count2400)
{sec1++
if(sec1>9999)
{sec2++
if(sec2>9999)
{sec20}}
count20}}
四川师范学成学院电子工程学院课程设计报告
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档