嵌入式课程设计基于LCD的电子时钟分解.docx
《嵌入式课程设计基于LCD的电子时钟分解.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计基于LCD的电子时钟分解.docx(82页珍藏版)》请在冰点文库上搜索。
![嵌入式课程设计基于LCD的电子时钟分解.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/7e072107-1dcf-4467-a511-592ee75c96b3/7e072107-1dcf-4467-a511-592ee75c96b31.gif)
嵌入式课程设计基于LCD的电子时钟分解
课程设计报告
题目基于LCD的电子时钟实验
专业
授课班号
学生姓名
指导教师
完成时间
课程设计(报告)任务书
(理工科类)
Ⅰ、课程设计(报告)题目:
基于LCD的电子时钟实验
Ⅱ、课程设计(论文)工作内容
一、课程设计目标
1、培养综合运用知识和独立开展实践创新的能力;
2、培养学生的编程能力、用计算机解决实际问题的能力。
3、将课上学习到的东西在课设中运用于实践,加深认识和理解。
4、学习LCD与ARM的LCD的控制器的接口原理;
5、掌握内置LCD控制器驱动编写方法;
6、RTC控制方法。
二、研究方法及手段应用
1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;
2、使用RTC控制方法;
3、利用lpc2104芯片和LCD显示器,通过汇编和C语言编译,完成实时时钟的显示。
三、课程设计预期效果
1、完成实验环境搭建,分模块调试和编译,组合并完善程序;
2、仿照计算机中的时钟显示,在LCD上显示类似的时钟界面;
3、动态显示当前的时间,包括:
年、月、日、时、分、秒,时针,分针、秒针必须为动态实时指示当前的时间。
学生姓名:
专业年级:
前言3
摘要4
第一章系统设计6
1.1课题目标及总体方案6
1.2实时时钟系统简介6
1.2.1功能简介6
1.2.2各个功能构建6
1、初始化模块6
(1)系统初始化6
(2)键盘初始化7
(3)LCD初始化8
2、功能模块9
(1)校徽9
(2)图形时钟和数字时钟9
第二章 实验(测试)结果与讨论13
2.1总流程图13
2.2编译程序14
2.3调试过程遇见的问题和结决办法14
2.4实验结果15
第三章结论16
心得体会16
参考文献18
附录19
前言
近年来,随着计算机技术及集成电路技术的发展嵌入式技术日渐普及在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。
嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。
嵌入式控制器的应用几乎无处不在:
移动电话、家用电器、汽车……无不有它的踪影。
嵌入控制器因其体积小、可靠性高、功能强、灵活方便等许多优点,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化化进程、提高生产率等方面起到了极其重要的推动作用。
嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机的外部设备中就包含了5-10个嵌入式微处理器。
在制造工业、过程控制、网络、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。
嵌入式系统工业是专用计算机工业,其目的就是要把一切变得更简单、更方便、更普遍、更适用;通用计算机的发展变为功能电脑,普遍进入社会,嵌入式计算机发展的目标是专用电脑,实现“普遍化计算”,因此可以称嵌入式智能芯片是构成未来世界的“数字基因”。
摘要
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。
通常,嵌入式系统是一个存储在ROM中的嵌入式处理器控制板中的控制程序。
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。
通常我们常用的LCD显示模块,有两种,一是带有驱动电路的LCD显示模块,一是不带驱动电路的LCD显示屏。
大部分ARM处理器中都集成了LCD的控制器,所以,针对ARM芯片,一般不使用带驱动电路的LCD显示模块。
实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。
RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。
随着集成电路技术的不断发展,RTC器件的新品也不断推出。
这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统
关键词:
嵌入式系统LCD显示ARM处理器实时时钟(RTC)
Abstract
Anembeddedsystemisaspecialcomputersystem,asanapparatusorapartoftheequipment.Typically,theembeddedsystemisastoredintheROMembeddedprocessorinacontrolprogrampanel.Infact,allwithadigitalinterfacedevicessuchaswatches,microwaves,VCRs,cars,etc.,alluseembeddedsystems,someembeddedsystemsalsocontainstheoperatingsystem,butmostembeddedsystemsareimplementedbyasingleprogramtheentirecontrollogic.
UsuallyweusedLCDdisplaymodule,therearetwo,onewiththedrivecircuitoftheLCDdisplaymodule,onewithoutadrivecircuitoftheLCDdisplay.MostARMprocessorareintegratedintheLCDcontroller,sotheARMchip,generallydonotuseadrivecircuitoftheLCDdisplaymodule.
Real-timeclock(RTC)providesdeviceisacalendar/clock,datastorageandotherfunctionsofASIC,commonlyusedforavarietyofcomputersystems,theclocksourceandparametersettingsarestoredcircuits.RTChasatimingaccuracy,lowpowerconsumptionandsmallsizeandothercharacteristics,especiallyforembeddedsystemsinavarietyofrecordingtimeoftheincidentandrelatedinformation,especiallyincommunicationengineering,electricalautomation,industrialcontrolandotherareasofhigherdegreeofautomationunattendedenvironments.WithICtechnologycontinuestoevolve,RTCdevicesalsocontinuetointroducenewproducts.ThesenewproductsnotonlyhaveaccurateRTC,thereisalarge-capacitymemory,temperaturesensorandA/Ddataacquisitionchannels,etc.,hasbecomeasetRTC,datacollectionandstorageinanintegratedfunctionaldevices,especiallyforthemicro-controllerembeddedsystem
Keywords:
EmbeddedSystems;LCDdisplay;ARMprocessorreal-timeclock(RTC)
第一章系统设计
1.1课题目标及总体方案
本次课程设计的目标为:
通过本次课程设计,培养综合运用知识和独立开展实践创新的能力;培养学生的编程能力、用计算机解决实际问题的能力。
将课上学习到的嵌入式系统的基础知识在课程设计中运用于实践,加深认识和理解,同时学习LCD与ARM的LCD的控制器的接口原理,并掌握内置LCD控制器驱动编写方法和RTC控制方法。
本次课程设计是要通过编写程序,设计出一个基于ARM处理器的实时时钟,综合性较强,涉及到RTC外部中断,C语言编程,接口编写等知识。
需使用到中断,涉及对外部中断进行数值修改,即对时间进行调整,并在其中有规定优先级,中断触发方式,中断地址分配。
采用液晶模块LCD显示实时时间,同样要对它进行初始化,包括检查总线忙与闲,传送地址,传送数据及显示函数的编程。
1.2实时时钟系统简介
1.2.1功能简介
进入实时时钟操作系统之前,首先进入系统界面,在此界面需要输入密码才能进入实时时钟操作系统。
实时时钟操作系统由河海校徽,圆盘时钟,实时时间显示,制作人姓名学号,指导老师等文字显示组成。
在实时时钟操作系统可以通过键盘对实时时钟显示时间进行调整,圆盘时钟会同时进行调整。
1.2.2各个功能构建
1、初始化模块
(1)系统初始化
该模块的功能是对整个系统的硬件进行配置,包括堆栈的定义、存储空间的分配、I/O口的相关配置,还包括一些系统函数的定义。
如图一所示是该模块的具体内容:
图一
(2)键盘初始化
本系统使用的是4×4的矩阵键盘。
键盘和7段数码管的控制实验,是通过键盘的控制芯片HD7279A来完成的。
它的信号线及控制线连接到S3C44B0上,驱动线直接连到8位共阴的7段数码管上。
由于其芯片的接口电压是5V的,而S3C44B0的接口电压是3.3V,所以,HD7279A的信号、控制线经过CPLD把电压转换到3.3V,然后送入CPU中。
HD7279是一片具有串行接口的可同时驱动8位共阴式数码管或独立的LED的智能显示驱动芯片。
该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示键盘接口的全部功能。
内部含有译码器可直接接受BCD码或16进制码并同时具有两种译码方式。
此外还具有多种控制指令如消隐、闪烁、左移、右移、段寻址等,具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。
HD7279在与S3C44B0接口中,它使用了4根接口线。
片选信号#CS(低电平有效),时钟信号CLK,数据收发信号DATA,中断信号#KEY(低电平送出),EL-ARM-830实验箱与其的接口中,使用了三个通用I/O接口,和一个外部中断,实现了与HD7279A的连接,S3C44B0的外部中断接HD7279的中断#KEY,三个I/O口分别与HD7279A的其他控制、数据信号线相连。
HD7279的其他管脚分别接4X4按键和8位数码管。
当程序运行时,按下按键,平时为高电平的HD7279A的#KEY就会产生一个低电平,送给S3C44B0的外部中断5请求脚,在CPU中断请求位打开的状态下,CPU会立即响应外部中断5的请求,PC指针就跳入中断异常向量地址处,进而跳入中断服务子程序中,由于外部中断4/5/6/7使用同一个中断控制器,所以,还必须判断一个状态寄存器,判断是否是外部中断5的中断请求,当判断出是外部中断5的中断请求,则程序继续执行,CPU这时,通过发送#CS片选信号选中HD7279A,再发送时钟CLK信号和通过DATA线发送控制指令信号给HD7279A,HD7279A得到CPU发送的命令后,识别出该命令,然后,扫描按键,把得到键值回送给CPU,同时,在8位数码管上显示相关的指令内容,CPU在得到按键后,有时,程序还会给此键值一定的意义,然后再通过识别此按键的意义,进而进行相应的程序处理。
该初始化模块的功能是对7279A进行相关的配置。
如图二所示是该模块的具体内容:
图二
(3)LCD初始化
通常我们常用的LCD显示模块,有两种,一是带有驱动电路的LCD显示模块,一是不带驱动电路的LCD显示屏。
大部分ARM处理器中都集成了LCD的控制器,所以,针对ARM芯片,一般不使用带驱动电路的LCD显示模块。
S3C44B0X中具有内置的LCD控制器,它能将显示缓存(在SDRAM存储器中)中的LCD图像数据传输到外部的LCD驱动电路上的逻辑功能。
它支持单色、4级、16级灰度LCD显示,以及256彩色LCD显示。
在显示灰度时,它采用时间抖动算法(time-basedditheringalgorithm)和帧率控制(FrameRateControl)方法,在显示彩色时,它采用RGB的格式,即RED、GREEN、BLUE,三色混合调色。
通过软件编程,可以实现233或332的RGB调色的格式。
对于不同尺寸的LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对LCD控制器中的相应寄存器写入不同的值,来配置不同的LCD显示板。
该初始化模块的功能是对LCD控制器进行相关的配置。
如图三所示是该模块的具体内容:
图三
2、功能模块
(1)校徽
本系统使用的256色RGB格式的LCD。
首先对如图四所示的BMP格式的校徽图片进行扫描,获得每个点的模值。
然后在LCD上进行逐行扫描,从而达到显示图片的功能。
程序代码如下所示:
(2)图形时钟和数字时钟
通过Do……while循环和If……else循环方式来将以上时分秒的变化联系起来,从而实现时钟的计时,实现程序。
具体程序如下所示:
do
{
Delay(1200);
sec++;
Shows();//表盘上秒针的显示
Shouw_Cricle();//整点显示
if(sec>=60)
{
sec=0;//当计时至60时秒清零
min++;//分针开始计时
Showm();//表盘上分针的显示
if(min>=60)
{
min=0;//当计时至60时清零
hour++;//时针开始计时
Showh();//表盘上时针的显示
if(hour>=24)
{
hour=0;
day++;//天计时
if(day>=32)
{
day=1;
mon++;//月计时
if(mon>=13)
{
mon=1;
yea1++;//年份
}
}
}
}
}
Set_Font(&GUI_Font8x16);//字体设置
Display_Time(130,160);//时间日期(数字同步显示)
}while
(1);
我们可以看到其中有一个delay函数,这个函数的自变量为1200,即为delay(1200),它实现了一个一秒的延时,一秒以后sec加一,从而实现一秒的计时。
当为60秒时,分针指向下一分钟,擦除上一分钟,也就是调用上面的三个显示与擦除函数。
(3)时间的更改
为达到能够及时改变时间的功能,在该模块中调用了中断(5号中断)。
当程序运行时,按下按键,平时为高电平的HD7279A的#KEY就会产生一个低电平,送给S3C44B0的外部中断5请求脚,在CPU中断请求位打开的状态下,CPU会立即响应外部中断5的请求,PC指针就跳入中断异常向量地址处,进而跳入中断服务子程序
该模块的功能由三部分组成,分别为:
键值的判断、时间的更改、时间的显示(需要图形时钟要跟数字时钟同时更改的效果)。
具体操作为,进入界面后,如果需要修改时间,先按下键盘上的数字5键,然后通过按下左、右键(即数字9、1键)来决定选择修改内容,再按下上、下键(即数字6、4键)来增加或减小显示的数字。
(4)系统入口
程序代码如下
(5)Mainfunction
主函数的功能是调用初始化子程序,从而完成对系统软硬件进行初始化的功能,为系统功能的实现提供基础。
程序代码如下:
既然是实时时钟,那么程序是如何实现指针的偏转的,线面这段程序给出了很好地解释。
voidShows()
{
Set_Color(GUI_GRAY);//擦除上一秒的
Draw_Line(x_line,y_line,*Placex,*Placey);
Placex=Placex+1;
Placey=Placey+1;
Set_Color(GUI_YELLOW);//显示下一秒的
Draw_Line(x_line,y_line,*Placex,*Placey);
Set_Color(GUI_WHITE);//显示下一分的
Draw_Line(x_line,y_line,*Placexm,*Placeym);
Set_Color(GUI_GREEN);//显示下一时的
Draw_Line(x_line,y_line,*Placexh,*Placeyh);
if(Placex==&SpaceXS[60]&&Placey==&SpaceYS[60])
{
Placex=&SpaceXS[0];
Placey=&SpaceYS[0];
}
}
可以看到,程序中有擦除上一面的程序。
之所以能靠一个设定颜色的程序来将其擦除是因为,之前已经将底色设定为该指针擦除时的颜色。
既然该指针与底色有一样的颜色,所以观察者就看不到之前的指针了,所以就达到了擦除的目的,当显示下一秒时,只要将指针的颜色设定为与底色不同,即达到了显示的效果。
上述程序是,秒针的显示方法,同理可得分针和时针。
第二章 实验(测试)结果与讨论
2.1总流程图
2.2编译程序
本次课程设计,使用的是ADS1.2软件,通过这个软件进行程序的编译,程序与实验箱连接和程序的运行。
构建完整的程序,中断处理汇编程序段,初始化函数和主函数。
/************************主函数*****************************************/
voidMain(void)
{
intm,n;
Target_Init();//ARMII实验系统的初始化,包括CPU板
图1所有文件图2编译Make生成Hex文件
2.3调试过程遇见的问题和结决办法
在实验过程中,我们开始的时候还是遇到了比较多的问题,在修改程序编译通过后,在与硬件实验箱连接时,遇到了连接不上以及打不开文件的问题,在我们向实验室的同学请教后,解决了这个问题。
2.4实验结果
综合效果图,连接芯片与LCD端口,运行程序,观察效果。
进入系统时的界面:
按下按键0后的界面为
第三章结论
综上所述,本系统可以完成实时时间的显示和更改的功能。
基于LCD的电子时钟可以准确的将动态时钟进行显示,并且能过通过图像时钟形式和数字时钟形式多种形式表现出来仿照计算机中的时钟显示,在LCD上成功地显示出了类似的时钟界面;并且满足动态显示当前的时间,包括:
年、月、日、时、分、秒,时针,分针、秒针必须为动态实时指示当前的时间的设计要求。
满足实验要求。
心得体会
在这次为期一周的嵌入式课程设计中,虽然时间短暂,但我从感性和理性上都学到了很多东西,使我更深刻地了解到了作为工科学生,实践的重要性。
使我深知,只具有理论知识是不行的,更要有动手能力。
通过嵌入式课程设计我更加体会到“学以致用”这句话中蕴涵的深刻理。
在本次课程设计中,我们延续本学期的嵌入式基础教学课程,使用软件编程,加深了对软件的理解,和使用熟练程度。
系统而又详细的复习和运用了所学的嵌入式基础知识和编写程序的方法,加深了我对作为一个编程者所应有素质和基础知识的重要性,还有程序的规范性对于程序的重要性,这些在平时我们忽略的问题,其实有时候关乎着我们编程的成功率。
通过此次实时时钟的设计,C语言的编程,我们开始了ARM的实际应用的学习,一方面,是我们养成了遵循ARM的嵌入式系统项目开发步骤的习惯;另一方面,使我们能够利用所学的ARM的知识设计出一些简单的东西,为以后进行更深层次的学习打下基础。
这次的课程设计就是对我们的一次考核,也可以说是一次考验,在平时做题目比较简单,而这次课程设计综合考核了我们的学习结果。
通过课程设计,培养了我们综合运用所学知识,发现,提出,分析和解决实际问题的能力,是锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。
通过此次课程设计,使我深知理论与实践是有很大区别的,许多事情需要自己去想,只有付出了,才会得到,有思考,就有收获,就意味着有提高,就增强了实践能力和思维能力。
通过这一个周的嵌入式课程设计,我得到了很大的收获,这些都是平时在课堂理论学习中无法学到的通过实践,深化了一些课本上的知识,获得了许多实践经验,另外也认识到了自己部分知识的缺乏和浅显,激励自己以后更好的学习,并把握好方向。
嵌入式课程设计成功地将基本技能训练,基本知识理论和创新启蒙有机结合,培养我的实践能力和创新精神。
作为信息时代的大学生,作为国家重点培育的高技能人才,仅会操作鼠标是不够的,基本的创新能力是一切工作和创造的基础和必要条件。
而且,现在严峻的就业形势让我认识到,只有不断增加自身能力,具有十分丰富的知识才能不会在将来的竞争中被淘汰。
总而言之,这次嵌入式课程设计使我很好地锻炼了自己,为自己人生的道路上增添了不少新鲜的活力!
我会一如既往,将自己的全部心血倾注于学习上。
我们的学习是需要有积极的热情和一丝不苟的科学作风的。
这次的嵌入式课程设计很好的为我将来的学习和工作打下了良好的基础。
参考文献
[1]吴国伟等.嵌入式系统原理与设计.北京:
机械工业出版社,2009.10.
[2]EL-ARM-830实验指导书,北京精仪达盛科技有限公司/研发部/ARM开发小组,2004.
附录
源程序:
#include"..\inc\config.h"
#definex_line160
#definey_line80
externGUI_FONTCHINESE_FONT12;
externGUI_FONTCHINESE_FONT16;
externGUI_FONTGUI_Font8x16;
I8Hour[3],Min[3],Sec[3];
I8hour=10,min=0,sec=0;
I8YEA1[3],YEA2[3],MON[3],DAY[3];
intyea1=20,yea2=13,mon=7,day=5;
intflag=0;
int