- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可调节的数字时钟.doc
微机原理实验报告
实验名称: 可调节的数字时钟
院 系:物理与机电工程学院
专业班级:
学 号:
学生姓名:
指导教师:
完成时间:
报告成绩:
可调实时时钟
实验目的
1 进一步熟悉EasyARM2131开发板EasyARM2131开发板
实验程序代码
本次实验通过调节KEY1 KEY2 KEY3来调节时钟,其中KEY1用来选择要调节的位置,KEY2用来加一,KEY2用来减一,每次按键蜂鸣器都会蜂鸣一声,对应的LED灯会闪一下提醒按键有效。调时间时RTC会停走。RTC内容是通过串口发送到上位机软件上显示。
/*RTC万年历实验
** 功能 :运行RTC进行计时,将时间值通过串口向上位机发送。
** 上位机使用EasyARM软件,在仿真的万年历显示器显示结果。可通过按键调整时钟
** 说明 :通讯波特率115200,8位数据位,1位停止位,无校验。*/
#include config.h
const uint32 key1=116;
const uint32 key2=117;
const uint32 key3=118;
const uint32 beep=17;
const uint32 LEDS8 = (0xFF 18);
const uint32 LED1 = (1 18);
const uint32 LED2 = (1 19);
const uint32 LED3 = (1 20);
uint8 moshi;
typedef struct UartMode // 定义串口模式设置的数据结构
{
uint8 datab; // 字长度 5/6/7/8
uint8 stopb; // 停止位 1/2
uint8 parity; // 奇偶校验 0-无校验, 1-奇校验, 2-偶校验
}UARTMODE;
/* 函数名称 :DelayNS()
** 函数功能 :长软件延时
** 入口参数 :dly 延时参数,值越大,延时越久
** 出口参数 :无*/
void DelayNS (uint32 dly)
{
uint32 i;
for ( ; dly0; dly--)
for (i=0; i4200; i++);
}
/* 函数名称 :UART0_Init()
** 函数功能 :初始化串口:设置工作模式和波特率。
** 入口参数 : baud 波特率
** set 模式设置(UARTMODE数据结构)
** 出口参数 :返回1表示成功,0表示参数出错。*/
uint8 UART0_Init (uint32 baud, UARTMODE set)
{
uint32 bak;
// 参数过滤
if ((0 == baud) || (baud 115200)) return (0);
if ((set.datab 5) || (set.datab 8)) return (0);
if ((0 == set.stopb) || (set.stopb 2)) return (0);
if (set.parity 4) return (0);
// 设置串口波特率
U0LCR = 0x80; // DLAB=1
bak = (Fpclk 4) / baud;
U0DLM = bak 8;
U0DLL = bak 0xff;
// 设置串口模式
bak = set.datab - 5;
if (2 == set.stopb) bak |= 0x04;
if (0 != set.parity)
{
set.parity = set.parity - 1;
bak |= 0x08;
}
bak |= set.parity 4;
U0LCR = bak;
return (0);
}
/*函数名称 :SendByte()
** 函数功能 :向串口UART0发送字节数据,并等待发送完毕。
** 入口参数 :data 要发送的数据
** 出口参数 :无*/
void SendByte (uint8 data)
{
U0THR = data;
while ((U0LSR 0X20) == 0); // 等待数据发送
}
/*函数名称 :PC_DispC
文档评论(0)