凌阳61单片机C语言秒表设计.doc

上传人:大米 文档编号:557869382 上传时间:2023-07-21 格式:DOC 页数:6 大小:97KB
返回 下载 相关 举报
凌阳61单片机C语言秒表设计.doc_第1页
第1页 / 共6页
凌阳61单片机C语言秒表设计.doc_第2页
第2页 / 共6页
凌阳61单片机C语言秒表设计.doc_第3页
第3页 / 共6页
凌阳61单片机C语言秒表设计.doc_第4页
第4页 / 共6页
凌阳61单片机C语言秒表设计.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《凌阳61单片机C语言秒表设计.doc》由会员分享,可在线阅读,更多相关《凌阳61单片机C语言秒表设计.doc(6页珍藏版)》请在金锄头文库上搜索。

1、辽宁工业大学汽车学院微机原理结课论文课程名称:微机原理 题目名称:单片机秒表设计专业班级:2010级研究生学生姓名:张洋 刘钊宾 朱孟恒 指导教师:石晶一、系统功能方案 1.本设计功能概述秒表系统设计用凌阳SPCE061单片机设计一个3位LED数码显示“秒表”,显示时间为00.059.9秒,每毫秒自动加一,每十毫秒自动加一秒。同时增加按键功能:一个“复位00.0”按键KEY3(即清零),一个“暂停”按键KEY2(停止计数)和“开始”按键KEY1(开始计数)。2.本设计难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器;二是如何实现LED的动态扫描显示及掌握数码管的段选、位选;三是如何

2、对键盘输入进行编程。二、系统电路设计 1.硬件电路图1 数码管显示原理 图2 1*8键盘电路图 图3 电源指示灯、睡眠指示灯图4 电源电路原理图2. 软件流程开始设置IOA0IOA7为带同相的低电平输出设置IOA8IOA10为带上拉的低电平输入设置IOB0IOB2为同相的低电平输出数码管显示选择while按键的扫描三系统软件设计1.源程序及注释#include#define KEY_ALL 0xff00static int Address10 = 0x00bf, 0x0086, 0x00db, 0x00cf, 0x00e6, 0x00ed, 0x00fd, 0x0087, 0x00ff, 0x

3、00ef;static int b10 = 0x003f, 0x0006, 0x005b, 0x004f, 0x0066, 0x006d, 0x007d, 0x0007, 0x007f, 0x006f;int temp,bai,shi,ge,key;unsigned int GetKey(void);void display( int bai, int shi, int ge);void delay( int z);void keyscan(void);main()*P_IOA_Attrib = 0x00ff; /设置A口低8位为同向低输出,控制数码管的显示状态 *P_IOA_Dir = 0x

4、00ff; /设置A口高8位为同向高输入,获取按键的状态值 *P_IOA_Data = 0xff00; *P_IOB_Attrib = 0x00ff; /初始化IOB0IOB2端口为同向低输出,控制数码管的位选 *P_IOB_Dir = 0x00ff; *P_IOB_Data = 0x0000; *P_TimerA_Ctrl=C_SourceA_8192Hz+C_SourceB_1; /设置定时器TimerA:8192Hz *P_TimerA_Data=0xfccc; /定时时间为0.1s *P_INT_Ctrl=C_IRQ1_TMA; temp=0; while(1) if(GetKey()

5、=0x0100) /获取键盘值 delay(10); if(GetKey()=0x0100) _asm(INT IRQ); /安装定时 else if(GetKey()=0x0200) asm(INT OFF); /关闭定时器 else if(GetKey()=0x0400) temp=0; bai=temp/100; /给三位数码管赋值 shi=temp%100/10; ge=temp%10; if(temp=600) / 累加到600后清零 temp=0; display(bai,shi,ge); /显示三位数值 *P_Watchdog_Clear = C_WDTCLR; void dis

6、play( bai, shi, ge) /三数码管的位选,片选状态 *P_IOA_Data = bbai; *P_IOB_Data =0x0001;delay(5);*P_IOA_Data =Addressshi;*P_IOB_Data =0x0002;delay(5);*P_IOA_Data =bge;*P_IOB_Data =0x0004;delay(1);void delay( z) /延时函数int x,y;for(x=z;x0;x-)for(y=10;y0;y-);#include SPCE061A.Hvoid IRQ1(void) _attribute_ (ISR); /中断函数v

7、oid IRQ1(void) temp+; *P_INT_Clear=C_IRQ1_TMA; /清除中断标志控制单元unsigned int GetKey(void) /使用IOA8IOA15作为键盘输入口unsigned int keyvalue;unsigned int i=0;unsigned int k=0; *P_IOA_Dir &= KEY_ALL; /初始化IOA的相应端口为上拉输入*P_IOA_Attrib &= KEY_ALL;*P_IOA_Data |= KEY_ALL; i=(*P_IOA_Data & KEY_ALL)KEY_ALL; /获取按键值 delay(5); /停留片刻,判断是否为干扰 k=(*P_IOA_Data & KEY_ALL)KEY_ALL; /再获取一次 if(i=k) /如果两次值相同,输出该值 keyvalue=k; else keyvalue=0;四、系统测试试验1. 硬件连接:IOA0IOA7端口经分流电阻后接LED段选AG,IOB0、IOB1、IOB2端口接DIP1、DIP2、DIP3共阴公共端,控制数码管的位选。IOA8IOA10端口接S1,S2,S3控制键值输入。 2.试验现象按KEY1则开始计数;按KEY2停止计数,并显示当前数;按KEY3则复位,显示00.0。 2011-7-15

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号