资源描述:
《可调节的数时钟.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、微机原理实验报告实验名称:可调节的数字时钟院系:物理与机电工程学院专业班级:学号:学生姓名:指导教师:完成时间:报告成绩:评阅意见:评阅教师日期可调实时时钟一、实验目的1进一步熟悉EasyARM2131开发板硬件结构。2熟悉ADS1.2集成开发环境。3熟练掌握RTC的寄存器的操作及其使用。4掌握如何用按键进行时钟调节。二、实验原理特性RTC功能结构如下图所示一、实验设备1计算机2EasyARM2131开发板二、实验流程图实验流程图如图所示结束引脚设置主程序开始是否有按键按下UART初始化RTC初始化延时消抖
2、YN键盘扫描显示时钟状态显示设置状态执行相应代码开始是否有按键按下YN发送数据发送数据结束模式判断模式不等于0模式等于0三、实验程序代码本次实验通过调节KEY1KEY2KEY3来调节时钟,其中KEY1用来选择要调节的位置,KEY2用来加一,KEY2用来减一,每次按键蜂鸣器都会蜂鸣一声,对应的LED灯会闪一下提醒按键有效。调时间时RTC会停走。RTC内容是通过串口发送到上位机软件上显示。/*RTC万年历实验**功能:运行RTC进行计时,将时间值通过串口向上位机发送。**上位机使用EasyARM软件,在仿真的万
3、年历显示器显示结果。可通过按键调整时钟**说明:通讯波特率115200,8位数据位,1位停止位,无校验。*/#include"config.h"constuint32key1=1<<16;constuint32key2=1<<17;constuint32key3=1<<18;constuint32beep=1<<7;constuint32LEDS8=(0xFF<<18);constuint32LED1=(1<<18);constuint32LED2=(1<<19);constuint32LED3=(1<<2
4、0);uint8moshi;typedefstructUartMode//定义串口模式设置的数据结构{uint8datab;//字长度5/6/7/8uint8stopb;//停止位1/2uint8parity;//奇偶校验0-无校验,1-奇校验,2-偶校验}UARTMODE;/*函数名称:DelayNS()**函数功能:长软件延时**入口参数:dly延时参数,值越大,延时越久**出口参数:无*/voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--)for(i=0;i
5、<4200;i++);}/*函数名称:UART0_Init()**函数功能:初始化串口:设置工作模式和波特率。**入口参数:baud波特率**set模式设置(UARTMODE数据结构)**出口参数:返回1表示成功,0表示参数出错。*/uint8UART0_Init(uint32baud,UARTMODEset){uint32bak;//参数过滤if((0==baud)
6、
7、(baud>115200))return(0);if((set.datab<5)
8、
9、(set.datab>8))return(0);if(
10、(0==set.stopb)
11、
12、(set.stopb>2))return(0);if(set.parity>4)return(0);//设置串口波特率U0LCR=0x80;//DLAB=1bak=(Fpclk>>4)/baud;U0DLM=bak>>8;U0DLL=bak&0xff;//设置串口模式bak=set.datab-5;if(2==set.stopb)bak
13、=0x04;if(0!=set.parity){set.parity=set.parity-1;bak
14、=0x08;}bak
15、=set.pa
16、rity<<4;U0LCR=bak;return(0);}/*函数名称:SendByte()**函数功能:向串口UART0发送字节数据,并等待发送完毕。**入口参数:data要发送的数据**出口参数:无*/voidSendByte(uint8data){U0THR=data;while((U0LSR&0X20)==0);//等待数据发送}/*函数名称:PC_DispChar()**函数功能:向PC机发送显示字符。**入口参数:no显示位置**char显示的字符,不能为ff**出口参数:无*/voidPC_D
17、ispChar(uint8no,uint8chr){SendByte(0xff);SendByte(0x81);SendByte(no);SendByte(chr);SendByte(0x00);}uint8constSHOWTABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*函数名称:SendTimeRtc()**函数功能:读取RTC的