单片机课程设计之多功能秒表

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机报告—————多功能秒表实验者:蒋晓婷班级:2008级电自9班学号:20080711304组员:丁秀香一、实验要求1.硬件电气原理图一张(含元器件清单一份;所有引脚标注清楚)2、软件程序清单一套(含主要程序流程图,全部源程序及详细的注释)3、使用功能说明书一份(含功能描述及操作指南和收获体会)4、软件在开发板上调试成功,并能成功表演,达到设计课题的要求二、实现要求秒表功能1、设计可以显示0.1—100s的秒表,最小单位为毫秒;2、通过按键控制秒表清零、暂停、继续、退出等功能;3、具有倒计时功能;4、秒表可以分组存储,批量显示;5、显示北京时间;6、可利用蜂鸣器添加提示音。附加功能1、利用实时钟芯片,显示年月日以及星期;2、选择蜂鸣器电路,实现闹钟设置和报警功能;3、可以通过按键调整日期、时间;4、可以设置两组闹钟,闹钟时间到,蜂鸣器响;5、利用蜂鸣器实现整点报时。三、硬件原理:1.ADUC848管脚图ADUC848管脚图如下图所示。Pin1~4:(P1.0~P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&=0xf0。若P2、P3、P0口要作为输入,则应往相应引脚写1。Pin5、6:AVDD、AGND,模拟电源输入。Pin7、8:外部参考电压接入,Pin7接AGND。片内DAC有2.5V内部参考,ADC有1.25V内部参考。Pin9、10:(P1.4、P1.5)两路AD输入,可做差分输入,需要设置ADC的寄存器。Pin11、12:(P1.6、P1.7)各200uA激励电流源,可配合RTD等做应用。Pin13:两路AD输入做普通输入时的电压参考端,AD输入电压不能低于此引脚电压。Pin14:片内DAC输出。Pin15:复位引脚。Pin16、17:单片机RS232接口的RXD(P3.0)TXD(P3.1)。Pin18:(P3.2)外部中断0,用于红外接收和PS/2接口。Pin19:(P3.3)LCD1602,LCD12864A的EN引脚,控制第一位数码管。Pin20、21:DVDD、DGND数字电源输入。Pin22:(P3.4)PS/2接口的data信号。Pin23:(P3.5)LCD1602和LCD12864A的RW。Pin24:(P3.6)LCD1602和LCD12864A的RS。Pin25:LCD12864A的CS1。Pin26:IIC接口时钟信号。Pin27:IIC接口data信号。Pin28:(P2.0)SPI接口时钟信号。Pin29:(P2.1)SPI接口MOSI信号、控制第6位数码管的位码。Pin30:(P2.2)SPI接口MISO信号、控制第7位数码管的位码。Pin31:(P2.3)SPI接口SS信号、控制第8位数码管的位码;P2.0~3也作为4X4矩阵式键盘的扫描输出信号、步进电机的控制信号、数码管第数码管第6、7、8位位码。但是SPI、4X4矩阵式键盘、步进电机、数码管第6、7、8位功能不能同时实现。Pin32、Pin33:接外部32.768KHz晶振。Pin34、Pin35:DVDD、DGND。Pin36:(P2.4)LCD12864A的CS2。Pin37:(P2.5)内部PWM模块输出,控制红外LED。Pin38:(P2.6)内部PWM模块输出,控制蜂鸣器。Pin39:(P2.7)内部PWM模块的外部时钟输入(也可以用内部时钟)。Pin40:EA,低电平有效,正常使用时拉低。Pin41:PSEN,在此引脚电平为低时按复位键进入debug模式,可以下载和调试程序。Pin42:ALE。Pin47、Pin48:DGND、DVDD。Pin43、44、45、46、49、50、51、52:P0口、LCD1602和LCD12864的数据总线,数码管的段码。2.电源模块电源模块原理图如图本学习板共有如下3种供电方式:(1)5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽)。将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第1、2脚(插针1下面两脚)接跳线帽,DVDD直接连接到电源适配器输入端,即为5V电源适配器供电模式。(2)7~12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽)将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第2、3脚(插针1上面两脚)接跳线帽,DVDD连接到稳压芯片7805的输出,而7805的输入端连接到电源适配器输入端,即为7~12V的电源适配器经7805给学习板供电的模式。(3)USB供电(开关往下拨)。将开关sw4第1、2脚接通(开关往下拨),电源网络DVDD连接到USB电源输入端。3.数码管该模块原理如图(1)DS0~7:数码管段码。(2)BIT0~7:数码管位码。(3)MOTORA~D:步进电机驱动信号。(4)DISCTRL0~4:显示控制信号,控制数码管低5位。(5)D0~8:单片机P0口。本设计采用共阴极数码管,段码由PNP三极管驱动,位码由NPN型三极管驱动。引脚复用:数码管低5位(板上为右边5位)的位码由DISCTRL0~4控制,可单独使用,高3位的位码控制信号与SPI信号,电机驱动信号,4X4矩阵式键盘复用,使用数码管高3位时参与复用的其他功能则不能使用。插针配置:(1)若要使用数码管第4~0位(板上为右边5位),可以接通插针8。(2)若要使用数码管第7~5位(板上为左边3位),可以分别接通插针5~7和9。4.RS232串口该模块中采用maxin公司的max232作电平转换,为方便调试硬件,对RXD,TXD信号设测试点和LED。5.8路LED该模块原理如图8个LED接P0口,低电平时LED亮,这样不会影响P0口逻辑电平。LED限流电阻取4.7K,通过LED电流约为0.8mA,在P0口驱动能力范围之内。插针配置:使用该模块,可以接通插针2,6.蜂鸣器该模块原理图如图1.10所示。本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制。PWM1和PWM0均为片内PWM模块的输出。蜂鸣器采用普通NPN三极管。插针配置:使用蜂鸣器,可以接通插针3。7.按键模块该模块原理如图由于P1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可。引脚复用:P2.0~P2.3为4X4矩阵式键盘列扫描信号,又复用作步进电机控制信号,SPI信号、P2.1~P2.3还复用为数码管第5、6、7位位码控制信号。参与复用的一项功能使用时,其他参与复用的功能则不能使用。插针配置:(1)插针10上面两脚接跳线帽,4X4矩阵式键盘输入,行扫描信号为P1.0~P1.3,列扫描信号为P2.0~2.3。(2)插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为P1.0~P1.3。这4个按键为4X4矩阵键盘的左边4个按键。8.复位与下载复位与下载电路如图进入下载或调试模式的步骤为:(1)按住BTN1(downordebug按键)不要放开;(2)按下BTN2(reset按键),然后放开BTN2(reset按键);(3)放开BTN1(downordebug按键)。这样单片机就进入了调试模式,可以下载或调试程序。四、流程图1、主程序:当前时间是否等于闹钟设置时间en=0x55?(无键)或en=0x88?(无效键)开始读取当前时间读取键值,键值为en开启闹钟YNYen=1?en=2?en=3?en=4?en=8?en=9?en=13?en=14?显示年月日星期显示时分秒秒表正计时子程序秒表倒计时子程序显示正计时的记录值设置北京时间关闹钟1设置闹钟en=0?设置闹钟2继续当前显示闹钟开?开闹钟1en=13?关闹钟2闹钟2开?开闹钟2YYYYYYYYYYYNNNNNNNNNNN主程序流程图2、秒表正计时子程序3、倒计时子程序正计时子程序启动定时器扫描键值,键值等于5?扫描键值,键值等于6?扫描键值,键值等于7?返回是否记录了十组值?记录当前时间显示当前时间YNYYYNNNY五、主程序miao_biao:#includeaduc848.h#includekeypp.h#includeiic.h#defineucharunsignedchar#defineuintunsignedintunsignedcharb[7]={50,59,10,3,22,6,11},clock[2]={2,11};//日期和时间初值codeunsignedchartab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x19,0x00};//共阴数码管0-9unsignedchartime[7];codeunsignedchartab2[]={0x39,0xff};//闹钟显示voiddelay(unsignedintcnt);unsignedchargetkey1();//读键盘voidtim(void);//中断voidKeyDelay(unsignedintKeyJsTime);//键盘扫描延时voiddisplay(ucharbit7,ucharbit6,ucharbit5,ucharbit4,ucharbit3,ucharbit2,ucharbit1,ucharbit0);//显示子程序秒表倒计时子程序输入时间初值启动定时器蜂鸣报警,关定时器返回扫描键值,键值等于5?当前时间等于0?YNYN显示当前时间voidReadTime(unsignedcharTIME[7]);//DS1307读时间voidSetTime(unsignedcharTIME[7]);//设置时间初值voidSwitchRTC(unsignedcharSWITCH);//秒最高位设置uchardis_num_h;//显示记录数据的组别十位uchardis_num_l;//显示记录数据的组别个位uchardis_min_h;//要显示的分的十位;uchardis_min_l;//要显示的分的个位;uchardis_sec_h;//要显示的秒的十位;uchardis_sec_l;//要显示的秒的个位;uchardis_dsec;//要显示的0.1秒;ucharmin=0x00;ucharsec=0x00;uchardsec=0x00;ucharen,i,clocken=0;main(){unsignedcharquzhi,xianzhi,symbol=0x55,set,set1=0x55,ce;unsignedcharc[30];unsignedcharnum,num1,j,k,stop=1;PLLCON&=0xf8;//设置频率为12.58MHzTMOD=0x01;//定时器工作模式设置TH0=0x3c;//初值TL0=0x00;IE=0x82;//中断控制,10000010,EA=1开总中断,ET0=1:定时器0中断允许I2CCON=0xE8;//开启iic通信;SetTime(b);//设定初始时间;SwitchRTC(1);while(1){ReadTime(time);if(((clock[0]==time[1])&&(clock[1]==time[2])&&(clocken==0)&&stop)){PWM0H=205;PWM1L=500;PWMCON=0x21;//蜂鸣器响KeyDelay(333);//延时PWM1H=0;PWM1L=0;PWMCON=0x00;KeyDelay(333);if(getkey1()!=0x55){stop=0;}}if(time[1]==clock[0]+1)stop=1;//闹钟响一分钟if((time[0]==0)&&(time[1]==0))//整点报时{i=1;while(i){PWM0H=50;PWM1L=100;PWMCON=0x21;//蜂鸣器响KeyDelay(333);//

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功