ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:358.78KB ,
资源ID:6221462      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6221462.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于SPCE061A单片机的数字钟设计Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于SPCE061A单片机的数字钟设计Word文档下载推荐.docx

1、(2)控制按扭,时钟以秒为单位开始计时。(3)按键调整时间。图1 实现时钟计时功能图22 系统设计根据设计题目的要求分析,并考虑到题目的可扩展性,系统分成两大部分:(1)时间的产生和显示。(2)按键调整时间。根据系统的功能现选择61板作为单片机控制处理部分,利用一片4位LED和一片2位LED 作为显示部分,如图2所示。图2 61板实现系统功能图按键调整时间部分, 单片机外扩六个直接式按键分别接到 SPCE061A 的 IOA0IOA5, 各个按键的控制功能分配见下表。表1 各按键控制功能分配表按键功能描述Key1时间加1Key4分钟减1Key2时间减1Key5秒钟加1Key3分钟加1Key6秒

2、钟减13硬件原理31LED显示原理:半导体数码管是由七个条状发光二极管按图4排列而成,可实现0-9 的显示。比较常见的为“条形七段式”和“单片集成多位数字式”。图3 半导体数码管图用单片机驱动 LED 数码管有很多方法,按显示方式可分静态显示和动态(扫描) 显示;按译码方式可分硬件译码和软件译码。静态显示就是显示驱动电路具有输出锁存功能单片机将所要显示的数据送出后就不再管,直到下一次显示数据更新时才会显示新的数据。静态显示数据稳定,占用很少的CPU时间。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。这两种显示方式各有利弊,静态显示虽然数据稳定,占用很少的C

3、PU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。LED 数码管的外围电路一般需要一个限流电阻和加大驱动电流的晶体管。常用的连接方式如图5所示。图4 数码管外围电路连接方式图LED数码管是由发光二级管显示字段组成的显示器,有“8”字段和“米”字段之分,这种显示器有共阳极和共阴极两种。 所谓共阳方式是指笔画显示器各段发光管的阳极(即 P 区)是公共的,而阴极互相隔离。所谓共阴方式是笔画显示器各段发光管的阴极(即N区)是公共的,而阳极是互相隔离的。图5 共阳极与共阴极图LED显示器中每个发光二极管要通过5m

4、A20mA电流才能达到正常亮度,SPCE061A 的输入电流可达到12mA,输出可达5mA,实际上不用驱动电路即可达到正常亮度,为了可靠性设计可采用晶体管构成驱动电路。整个显示过程中采用动态显示,即4位显示器逐一轮流显示,每位持续1ms,10ms或20ms之内循环一遍,当然可以适当进行更改,但刷新速度不要小于每秒三十桢。这样,由于视觉暂留现象,我们看到的便是4只显示器同时在显示。32 LED数码管连接方式时、分、秒的显示采用的是一个 4位共阴极 LED 数码管(LG5641AH )和一个2位 LED 数码管(LG5621AH ),连接方法是 SPCE061A 的 IOB8-IOB14接LED

5、焊接板的 A-G ,小数点显示部分可以省略不要;IOB0-IOB5分别接 LED 焊接板的位选 COM1 、COM2COM6 ,电路原理图如图;下表为LED与SPCE061A的引脚连接表。图6 LED与SPCE061A的引脚连接图表2 LED 与 SPCE061A 的引脚连接表SPCE061ALed模块IOB8ACOM1BCOM2CCOM3DCOM4ECOM5FCOM6G4软件流程图41主程序流程图当程序运行时,时、分、秒的初始值为 0,开2Hz 中断,作为秒的计数。计数到2次的 时候,就是1S,120次中断就是1分钟,依此类推。显示部分放到主程序中动态扫描 完成。为了没有闪烁的视觉,所以主程

6、序整个循环不超过2ms 。图7 主程序流程图42 2Hz中断服务程序如下图所示,在中断中完成秒的计数和分的自加,每进两次2Hz中断,秒自动加1,实现时钟计数。图8 2Hz中断服务程序图5系统连接采用凌阳大学计划的 LED 键盘模组和61板搭配可以很容易的完成这个课程设计的题目。它的连结图如下图所示,IOB的低八位输出段码(待显示数字对应的段信息),高八位输出片选信号(控制点亮哪一个数码管)。按键状态跳线选最右边的两根跳线短接,选中1*8按键,按键通过IOA读入。图9 LED 键盘模组和61板搭配连接图6总结通过本次设计,系统的了解了数字时钟的设计流程,尤其是硬、软件的设计方法,掌握了显示电路的

7、基本功能及编程方法,掌握了数字电路和显示电路的一般原理,也进一步掌握了LED显示和中断处理器程序的编程方法。开拓了思路,提高了分析问题、解决问题的能力,达到了本次设计的目的参 考 文 献1.李建忠编著,单片机原理及应用M,西安电子科技大学出版,20022.张俊谟编著,单片机中级教程M,北京航空航天大学出版,20003.张培仁,孙占辉,张欣著,基于C语言编程MCS单片机原理及应用M,清华大学出版社 ,20064.李光飞,楼然庙,胡佳文著单片机课程设计-实例指导M,北京北京航空航天大学出版社,20075.苏家健,曹柏荣,汪志锋等编著,单片机原理及应用技术M,北京高等教育出版社,20046.赵亮,侯

8、国锐等编著,单片机C语言编程与实例M,北京人民邮电出版社,20027.何文才,杜鹏,基于VBNET的PC机和MCS 51单片机之间的串行通信J,北京电子科技学院学报,2006.58.郭增欣,张武坤,LCM2004B液晶显示器在单片机系统中的应用J,石家庄职业技术学院学报,2006.69.张春峰,邹新杰,余张国.基于ATMEGA16 的智能控制器的开发研制J.微计算机信息,2007,23 10.张震宇,王华.基于凌阳单片机的语音识别技术及应用J.微计算机信息,2007,8The Design of Digital Clock Based SPCE061A MCU CHEN Qing-haiAbs

9、tract:The system design circuit to Sunplus MCU SPCE061A as the controller. Mainly by the display circuit, control circuit, sensor circuit, the voltage conversion circuit, control circuit of five parts. Absorbed the ideas of hardware and software, most of the functionality through software to achieve

10、, to make the circuit simple, significantly improving system stability. The system not only achieved the success of the basic functions required to play parts are fully realized, but also some innovative features.Key words: SPCE061A SCM; LCD; digital clock附录:主程序:#define ClearWDog (*(volatile unsigne

11、d char *) 0x7012)=1unsigned int uiSecond=0,uiMinute=0,uiHour=0,uiShow6;main() int i=0,j=0,k=0,iBit=2,iNum,iKey=0; F_IrqInti(); while(1) k+; ClearWDog; if(uiMinute=60) uiMinute=0;uiHour+; /确定分、时 if(uiHour=24) uiHour=0; uiShow0=uiHour/10; /计算要显示的值 uiShow1=uiHour%10; uiShow2=uiMinute/10; uiShow3=uiMinu

12、te%10; uiShow4=uiSecond/10; uiShow5=uiSecond%10; for(i=0;i=100) /满足条件进入时间调整 k=0; iKey=F_Key_Ctrl(); /取得键值 switch(iKey) case 0x00ef: /按键5秒加 uiSecond+; if(uiSecond=60) uiSecond=0; break; case 0x00df: /按键6秒减 uiSecond-; if(uiSecond=0) uiSecond=60; case 0x00fb: /按键3分加 uiMinute+; if(uiMinute=60) uiMinute=

13、0; case 0x00f7: /按键4分减 uiMinute-; if(uiMinute=0) uiMinute=60; case 0x00fe: /按键1时加 uiHour+; case 0x00fd: /按键2时减 uiHour-; if(uiHour=0) uiHour=24; default: ISR.c/描述:建立中断服务程序#define P_INT_Clear (volatile unsigned int *)0x7011#define P_INT_Ctrl (volatile unsigned int *)0x7010 /_asm(.external F_FIQ_Servic

14、e_SACM_S480);.external F_FIQ_Service_SACM_A2000/#include s480.hA2000.hextern uiSecond,uiMinute;#include hardware.hunsigned int secondflag=0;/extern PlayFlag;void BREAK(void) _attribute_ (ISR);void BREAK(void)void FIQ(void) _attribute_ (ISR);void FIQ(void)void IRQ0(void) _attribute_ (ISR);void IRQ0(v

15、oid)void IRQ1(void) _attribute_ (ISR);void IRQ1(void)void IRQ2(void) _attribute_ (ISR);void IRQ2(void)void IRQ3(void) _attribute_ (ISR);void IRQ3(void)void IRQ4(void) _attribute_ (ISR);void IRQ4(void)void IRQ5(void) _attribute_ (ISR);void IRQ5(void) if(secondflag=1) secondflag=0; else secondflag+; i

16、f(uiSecond=60) uiSecond=0,uiMinute+; *P_INT_Clear=0x0004;void IRQ6(void) _attribute_ (ISR);void IRQ6(void)void IRQ7(void) _attribute_ (ISR);void IRQ7(void)/文件名称:key.c建立数码管显示模块int F_Key_Ctrl() int i=0,j=0,k3,key;/ for(i=0;200; k0=*P_IOA_Dir; k1=*P_IOA_Attrib; k2=*P_IOA_Buffer; *P_IOA_Dir=0x00ff|*P_IO

17、A_Dir; *P_IOA_Attrib=0x00ff|*P_IOA_Attrib; *P_IOA_Data=0x00FF|*P_IOA_Buffer;10; key=*P_IOA_Data&0x00ff; *P_IOA_Dir=k0; *P_IOA_Attrib=k1; *P_IOA_Data=k2; return key;numLED.c#define P_IOA_Data (volatile unsigned int *)0x7000 #define P_IOA_Buffer (volatile unsigned int *)0x7001#define P_IOA_Dir (volati

18、le unsigned int *)0x7002#define P_IOA_Attrib (volatile unsigned int *)0x7003#define P_IOA_Latch (volatile unsigned int *)0x7004#define P_IOB_Data (volatile unsigned int *)0x7005 #define P_IOB_Buffer (volatile unsigned int *)0x7006 #define P_IOB_Dir (volatile unsigned int *)0x7007 #define P_IOB_Attri

19、b (volatile unsigned int *)0x7008 #define bitset(var,bitno) (var)|=(1(bitno)#define bitclr(var,bitno) (var)&=(1bitno)0xffff) const int ciNum10=0x3f00,0x0600,0x5b00,0x4f00, 0x6600,0x6d00,0x7c00,0x0700,0x7f00,0x6f00;/ const int ciNum10=0x003f,0x0086,0x00db,0x00cf, 0x00e6,0x00ed,0x00fc,0x0087,0x00ff,0x

20、00ef;/函数名称 : F_numLED_Ctrl(int iBit,int iNum)/描述 : 控制数码管显示void F_numLED_Ctrl(int iBit,int iNum) int i,j,k=0; *P_IOB_Dir=0x00ff|*P_IOB_Dir; *P_IOB_Attrib=0x00ff|*P_IOB_Attrib; *P_IOB_Data=0xFF00&*P_IOB_Data; *P_IOB_Data=0; *P_IOB_Data=(0x1iBit); *P_IOB_Dir=0xff00|*P_IOB_Dir; *P_IOB_Attrib=0xff00|*P_IOB_Attrib; *P_IOB_Data=0x00ff& *P_IOB_Data=ciNumiNum|*P_IOB_Buffer;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2