- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课程设计报告---电子跑表系统
单 片 机 课 程 设 计 说 明 书
题目: 电子跑表系统
课程设计(论文)任务书
院(系): 基层教学单位:
学 号 学生姓名 专业(班级) 设计题目 电子跑表系统 设
计
技
术
参
数
设
计
要
求 基本要求:
基于单片机试验板设计一个电子跑表系统,用按钮启动和停止,能够实现最多59分59秒的跑表,在数码管上显示当前的跑表时间值;
扩展要求:
充分配合按钮和显示,实现正向跑表,反向跑表,设置跑表初值,跑表跑到预定值通过蜂鸣器提示。
工
作
量 2周 工
作
计
划 先根据设计题目,搜集相关资料;
再对设计题目整体把握,利用所学知识,整理所需内容;
最后编写程序,调试,优化程序。 参
考
资
料 C语言设计;PIC单片机技术应用电路设计与仿真C语言高级程序设计 陈天洲编著 说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
年 月 日
课程设计评审意见表
指导教师评语:
成绩:
指导教师:
年 月 日
答辩小组评语:
成绩:
评阅人:
年 月 日 课程设计总成绩: 答辩小组成员签字:
年 月 日 设计要求
电子跑表系统
基本要求:
基于单片机试验板设计一个电子跑表系统,用按钮启动和停止,能够实现最多59分59秒的跑表,在数码管上显示当前的跑表时间值;
扩展要求:
充分配合按钮和显示,实现正向跑表,反向跑表,设置跑表初值,跑表跑到预定值通过蜂鸣器提示。
设计方案
1. 数码管扫描
(数组leddisplaycode:显示数字译码 )(显示函数SEG 功能:输入四位数据并显示(扫描方式))
定义全局变量 主函数中始终对此变量进行扫描显示
2. P.2/3/4/5口作通用i/o口 按键情况通过getkey()扫描录入,并通过keydispose()函数处理。(只加了四种情况,未使用组合键)
(所有操作的目标函数都是全局变量)
3 .其中 1号键 按一下为正向跑表,再按反向跑表。
2号键 按一下为切换到设置模式,同时停止计数。此模式和正常跑表数据互不影响,通过time的第二行存储。
3号键 按一下为当前数组数据+1
4号键 按一下为当前数组数据-1
4. 当 设置的时间和跑表时间相等时,buzzer开始响。
系统工作原理
主要硬件电路图如下
键盘控制, 该设计需要控制跑表开始和停止,当按下启动按钮跑表开始计时,按下停止按钮停止计时,当按下复位按钮跑表回零。4个数码管均是共阳极的。当发光二极管导通时,它就会发光。每个二极管就是一个笔划,若干个二极管发光时,就构成了一个显示字符。将单片机的I/O口控制相应的芯片与数码管的a-g相连,高电平的位对应的发光二极管亮,这样,由I/O口输出不同的代码,就可以控制数码管显示不同的字符。
SST89F58
程序设计
1.总体框架结构
本设计中秒表采用定时器T0中断完成。主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。
用定时器T0中断服务程序。定时溢出中断周期设为50ms,中断进入后先进行定时中断初值校正,当中断累计20次(即50*20=1s)时,对秒计时单元进行加1操作。时钟计数单元地址分别在70H~71H(秒)、76H~77H(分)中,最大计时值为59分59秒。7AH单元内存放“熄灭符”数据,用于时间调整的闪烁功能。在计数单元中,采用十进制BCD码计数,满10进位。
2.主程序流程图
unsigned char code leddisplaycode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
unsigned char time[][4] = {0,0,0,0,
0,0,0,0}; //*数码管当前显示数据 第一行为计时时间,第二行为预设时间
unsigned char i; //SEG()变量
unsigned char mode = 0; //正、反计数模式 (0 正 1 反)
unsigned char flag = 0; //实现单个键的开始暂停功能
unsigned char m=0,n=0;
unsigned char status=
文档评论(0)