基于LCD的电子时钟实验 嵌入式课程设计报告.docx

上传人:b****0 文档编号:9188070 上传时间:2023-05-17 格式:DOCX 页数:16 大小:386.19KB
下载 相关 举报
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第1页
第1页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第2页
第2页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第3页
第3页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第4页
第4页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第5页
第5页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第6页
第6页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第7页
第7页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第8页
第8页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第9页
第9页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第10页
第10页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第11页
第11页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第12页
第12页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第13页
第13页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第14页
第14页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第15页
第15页 / 共16页
基于LCD的电子时钟实验 嵌入式课程设计报告.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于LCD的电子时钟实验 嵌入式课程设计报告.docx

《基于LCD的电子时钟实验 嵌入式课程设计报告.docx》由会员分享,可在线阅读,更多相关《基于LCD的电子时钟实验 嵌入式课程设计报告.docx(16页珍藏版)》请在冰点文库上搜索。

基于LCD的电子时钟实验 嵌入式课程设计报告.docx

基于LCD的电子时钟实验嵌入式课程设计报告

河海大学计算机及信息工程学院(常州)

课程设计报告

 

题目嵌入式系统项目设计

专业、学号电信

授课班号

学生姓名

指导教师

完成时间2010/1/15

课程设计(报告)任务书

(理工科类)

Ⅰ、课程设计(报告)题目:

基于LCD的电子时钟实验

Ⅱ、课程设计(论文)工作内容

一、课程设计目标

1、培养综合运用知识和独立开展实践创新的能力;

2、培养学生的编程能力、用计算机解决实际问题的能力。

二、研究方法及手段应用

1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;

2、使用ads1.2编译汇编语言和C语言,连接生成Hex文件。

3、联合protues7.4仿真,选用arm7lpc2104芯片,导入Hex文件,实现模拟电

子时钟。

三、课程设计预期效果

1、完成实验环境搭建;

2、分模块调试和编译;

3、组合并完善程序。

4、联合仿真软件运行程序。

 

学生姓名:

专业年级:

 

 

前言………………………………………………………………………………………………3

第一章系统设计…………………………………………………………………………………4

第一节课题目标及总体方案…………………………………………………………………..4

第二节元器件的选择和连线…………………………………………………………………..4

第三节程序和芯片的初始化…………………………………………………………………..5

第四节构建功能模块…………………………………………………………………………..6

第五节实现信息的传递…………………………………………………………………..……7

第二章实验(测试)结果及讨论……….……………………………………………………….8

第一节ads1.2软件的编译,连接和运行……………………………………………………..8

第二节protues7.4仿真软件的联合调试……………………………………………………...9

第三章结论………………………………………………………………………………………10

心得体会……………………………………………………………………………………………11

参考文献…………………………………………………………………………………………12

附录…………………………………………………………………………………………13

源程序………………………………………………………………………………………13

前言

近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。

嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。

实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。

RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。

随着集成电路技术的不断发展,RTC器件的新品也不断推出。

这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。

 

第一章系统设计

第一节课题目标及总体方案

利用lpc2104芯片和LCD显示器,通过汇编和C语言编译,完成实时时钟的显示。

第二节元器件的选择和连线

选用嵌入式arm7系列的lpc2104芯片和Lcdpg160128a显示器:

根据使用的需要配置端口连线:

 

第三节程序和芯片的初始化

程序中包括:

Lcd的初始化:

中断向量的初始化:

RTC的初始化:

芯片Lpc2104基础配置:

中间使用了上接正电源配合

电容的交流特性,为芯片提供电

源和复位功能。

其他引脚根据芯片要求配置

连接。

 

 

第四节构建功能模块

Lcd显示的时钟界面包括:

静止不动的圆形钟面和一直在走动的时钟指针。

所以需要构建两个重要的函数实现画圆和画直线。

以下为画圆函数:

该算法是通过X变量的自增,补偿1修正正方形控制Y变量自减,找到距中心恒定距离的点,其中rs=45,X自0加1增至45。

和原点坐标运算,可以在第一象限找到一点,再通过折叠对称找到其他象限的三个点,通过画点函数描绘出。

再画他的45度镜像就好了。

画线函数:

voidline(unsignedintx1,unsignedinty1,unsignedintx2,unsignedinty2,unsignedchardraw)

以中心的坐标为起点,使用while函数与指针最外圈的点比较,不断延长直至相等,所以事先计算出时针,分针和秒针三个同心圆最外圈点的坐标,以便带入函数。

也同圆类似,要考虑不同象限点的情况,根据不同的位置带参数到画点函数中描绘。

第五节实现信息的传递

画点函数:

数据传递函数:

与通用可编程输入输出口(GeneralProgramableInputOutput)相连,把计算的数据传递给Lcd显示。

 

第二章实验(测试)结果及讨论

第一节ads1.2软件的编译,连接和运行

构建完整的程序:

添加头文件,中断处理汇编程序段,初始化函数和主函数:

编译

所有的文件:

编译器提示:

成功生成所需Hex文件,将得到的Hex文件导入仿真芯片

Lpc2104中,观察实时时钟。

第二节protues7.4仿真软件的联合调试

为Lpc2104芯片选择Hex文件路径:

连接芯片与LCD端口,运行程序,观察效果。

显示如下时钟界面:

动态显示当前的时间,包括:

年、月、日、时、分、秒,时针、分针和秒针为动态实时指示当前的时间。

 

第三章结论

综合效果图:

以上为protues部分设计的,ads程序见附录。

 

心得体会

回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,在整整半个月的日子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。

在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。

 

附录

一、源程序:

voidc_init()

{

wr_circle(123,79,1,1);

wr_circle(123,79,2,1);

wr_circle(63,139,1,1);

wr_circle(63,139,2,1);

wr_circle(3,79,1,1);

wr_circle(3,79,2,1);

wr_circle(63,19,1,1);

wr_circle(63,19,2,1);

wr_circle(115,109,1,1);

wr_circle(93,131,1,1);

wr_circle(33,131,1,1);

wr_circle(11,109,1,1);

wr_circle(11,49,1,1);

wr_circle(33,27,1,1);

wr_circle(93,27,1,1);

wr_circle(115,49,1,1);

wr_point(c_ox,c_oy,1);

wr_circle(c_ox,c_oy,2,1);

wr_circle(c_ox,c_oy,62,1);

}

voidmove(unsignedcharn)

{

line(c_ox,c_oy,sec[2*n],sec[2*n+1],1);

}

#definefpclk2764800

unsignedcharmin_n;

unsignedinthou_n;

voidrtc_init()

{

PREINT=fpclk/32768-1;

PREFRAC=fpclk-(fpclk/32768)*32768;

YEAR=2010;

MONTH=1;

DOM=15;

HOUR=11;

MIN=1;

SEC=36;

CIIR=0x01;

ILR=0x01;

CCR=0x01;

}

void__irqrtc_int()

{

ILR=0x01;

wr_char(9,6,0x10+HOUR/10);

wr_char(9,7,0x10+HOUR%10);

wr_char(9,8,0x1a);

wr_char(9,9,0x10+MIN/10);

wr_char(9,10,0x10+MIN%10);

wr_char(9,11,0x1a);

wr_char(9,12,0x10+SEC/10);

wr_char(9,13,0x10+SEC%10);

wr_char(11,5,0x10+YEAR/1000);

wr_char(11,6,0x10+YEAR%1000/100);

wr_char(11,7,0x10+YEAR%100/10);

wr_char(11,8,0x10+YEAR%10);

wr_char(11,9,0xf);

wr_char(11,10,0x10+MONTH/10);

wr_char(11,11,0x10+MONTH%10);

wr_char(11,12,0xf);

wr_char(11,13,0x10+DOM/10);

wr_char(11,14,0x10+DOM%10);

if(SEC==0)

{

line(c_ox,c_oy,sec[59*2],sec[59*2+1],0);

line(c_ox,c_oy,sec[0],sec[1],1);

}

else

{

line(c_ox,c_oy,sec[SEC*2-2],sec[SEC*2-1],0);

line(c_ox,c_oy,sec[SEC*2],sec[SEC*2+1],1);

}

if(MIN==0)

{

line(c_ox,c_oy,min[59*2],min[59*2+1],0);

line(c_ox,c_oy,min[0],min[1],1);

}

else

{

line(c_ox,c_oy,min[MIN*2-2],min[MIN*2-1],0);

line(c_ox,c_oy,min[MIN*2],min[MIN*2+1],1);

}

if(HOUR>11)

hou_n=((HOUR-12)*60+MIN)/12;

else

hou_n=(HOUR*60+MIN)/12;

if(hou_n==0)

{

line(c_ox,c_oy,hou[59*2],hou[59*2+1],0);

line(c_ox,c_oy,hou[0],hou[1],1);

}

else

{

line(c_ox,c_oy,hou[hou_n*2-2],hou[hou_n*2-1],0);

line(c_ox,c_oy,hou[hou_n*2],hou[hou_n*2+1],1);

}

wr_circle(c_ox,c_oy,2,1);

}

voidint_init()//中断向量初始化

{

VICIntSelect=0;//设置所有中断为irq中断

VICIntEnable=0x00002000;//中断使能位

VICVectCntl0=0x2d;//中断优先级设置

VICVectAddr0=(int)rtc_int;//中断向量设置

}

intmain(void)

{

lcd_init();

c_init();

int_init();

rtc_init();

enable_irq();

//move

(2);

//line(c_ox,c_oy,min[2],min[3],1);

//line(c_ox,c_oy,hou[0],hou[1],1);

while

(1);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

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

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