(参考)基于ARM的倒计时秒表.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
桂林电子科技大学信息科技学院 基于ARM的倒计时秒表实训报告 学 号 姓 名 指导教师:韩桂明 张 琨 赵志鹏 2012年 11月 3 日 实训题目:倒计时秒表 一、整体设计 1.题目要求 1.1硬件要求: (1) 两位数码管显示,使用74LS164控制(连接到PA); (2) 两个独立按键,带指示灯(连接到PE6、PE7)。 1.2软件要求: (1) 实现99秒倒计时,并通过数码管显示; (2) 两个按键,一个“运行/暂停”按键,一个“调整计时”按键。 (3) 倒计时为0时,指示灯闪烁。 (4) 在实验箱屏幕上绘图显示秒表及其他功能 1.3发挥部分 通过编码器(如74LS148)扩展出4个按键(使用4位拨码开关)连接到PE6、PE7。 ? 加入蜂鸣器,可作声音报警使用。 ? 使用SIO发送数据到74LS164。 2.性能指标 ① 能正确使用数码管数字,亮度清晰且不闪烁。 ② 倒计时时间准确。 ③ 实现倒计时。 ④ “运行/暂停”按键,“调整计时”按键。 ⑤ 实现指示灯闪烁,可扩展蜂鸣器鸣响报警。 二、方案设计 1、方案论证 本次实训可以使用查询和中断两种方法来做,由于本人对中断不太熟悉所以决定采用查询方法。利用定时器的计数观察寄存器TCNTOn,来判断倒计时是否到0,然后对初始值-1来实现间隔为1s的倒计时。 2、工作原理 ①硬件部分: 我采用了,一块74ls148,两块74ls164芯片来实现总体功能。148芯片具有优先编码功能,可以对拨码开关进行编码,将信号送进实验箱的PE6和PE7口从而实现输入。两块164芯片进行串联,可以通过移位的方式来显示实验箱输出的数字。 ②软件部分: 对定时器3设置一秒定时,观察TCNTO3的数值,当计数到0时 对初始值减一,重新更新启动定时器。判断输入动作,做出暂停,运行,时间调整等相应动作。同时对输出数据进行倒序,逐位输入到164芯片中进行显示。 图形界面方面,利用四边形函数画出数字制作字库,同时使用pe6作为数据发送,pe7模拟时钟脉冲。同时使用相关事件监视触摸屏。 3、原理图,PCB图 ①电源部分,通过电容对输入进行滤波,得到更稳定的电压 ②输入电路,利用148芯片对拨码开关进行优先编码 ③数码管显示电路:通过两个164芯片串联实现2位数字显示 ④蜂鸣器报警电路 ⑤PCB图 三、软件设计 ①数码管显示模块;将段码逐位输入164芯片中,两个数码管需要16位 #include 44B.H void smg(unsigned int data_buf) { unsigned char i; unsigned int tp,tt; i=16; tp=data_buf; do { rPDATA=rPDATA0x3df; //CLK = 0,11 1101 1111 tt=tp0x01; //DATA,除数据第一位,其他屏蔽 rPDATA=tt3; //rDATA,PA3输出 rPDATA=rPDATA|0x20; //CLK = 1,00 0010 0000输出高电平,PA5 tp=tp1; //数据下一位 } while(--i!=0); //16次,移至最后一个数码管 } ②按键判断模块 #include 44B.H #define PE_67 ((rPDATE 6) 0X3) extern int TIME3_R_S; extern int NUM; void KEY(void) { if (PE_67 == 0X0) //pe6=0,pe7=0,复位模块 { delay(100); if (PE_67 == 0X0) ALL_INIT(); while (PE_67 == 0X2);//判断拨码开关复位 } if (PE_67 == 0X1) //pe6=1,pe7=0 { delay(100); if (PE_67 == 0X1) { TIME3_R_S = -TIME3_R_S; while (PE_67 == 0X1); } } if (NUM == 0) TIME3_R_S = -1; //设置标志位,-1为暂停状态 if (PE_67 == 0X2 TIME3_R_S == -1) //pe6=0,pe7=1,且暂停,时间调整模块 { delay(100); if (PE

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档