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

合集下载

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

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

课程设计报告题目嵌入式系统项目设计课程设计(报告)任务书(理工科类)Ⅰ、课程设计(报告)题目:基于LCD的电子时钟实验Ⅱ、课程设计(论文)工作内容学习LCD与ARM的LCD的控制器的接口原理,掌握内置LCD控制器驱动编写方法和RTC控制方法,在可行性分析的基础上实现以下功能:1、编写程序实现电子时钟功能,通过实验系统的LCD将时间显示出来;2、仿照给定图形在LCD上显示类似的时钟界面;3、动态显示当前的时间,包括:年、月、日、时、分、秒,时针,分针、秒针必须为动态实时指示当前的时间。

一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力;2、培养学生的编程能力、用计算机解决实际问题的能力。

3、培养学生遇到问题,解决问题的能力。

二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、实验设备有L-ARM-830教学实验箱,PentiumII以上的PC机,仿真器电缆;3、PC操作系统WIN98或WIN2000或WINXP,ARM SDT2.5或ADS1.2集成开发环境,仿真器驱动程序;4、本实验使用实验教学系统的CPU板,在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。

三、课程设计预期效果1、完成实验环境搭建;2、分模块调试和编译;3、组合并完善程序;4、联合仿真软件运行程序;5、液晶显示器显示时钟图样,时,分,秒能指向正确的时间。

学生姓名:严维锋专业年级:自动化2008级目录前言 (3)第一章系统设计 (4)第一节课题目标及总体方案 (4)第二节原理框图 (5)第三节程序和芯片的初始化 (5)第四节构建功能模块 (7)第五节 MAIN函数的局部原理分析 (8)第二章实验(测试)结果及讨论 (13)第一节 ADS1.2软件的编译,连接和运行 (13)第二节程序调试 (14)第三章结论 (14)心得体会 (15)参考文献 (16)附录 (17)源程序 (17)前言近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,其强大的控制能力和专业性在通讯、网络、工控、电子等领域发挥着越来越重要的作用。

基于LCD1602电子时钟

基于LCD1602电子时钟

信息与电子工程学院课程设计报告录目一、课程设计概述 (3)1.1 课程设计背景 (3)1.2 课程设计内容 (3)1.3 课程设计技术指标 (3)二、方案的选择及确定 (3)2.1 单片机芯片的选择 (3)2.2 显示模块的选择 (4)2.3 实时时间计算模块的选择.42.4 实时环境温度采集模块选择 (4)2.5 电路设计最终方案决定 (5)三、系统硬件设计 (5)3.1 主控模块 (5)3.2LCD显示模块设计 (6)3.3 时间计算模块设计 (6)3.4 实时环境温度检测模块 (7)3.5 报警模块 (7)3.6 设置模块 (8)3.7 电源接口部分 (8)四、系统软件设计 (8)4.1 主函数 (8)4.2 设置模块 (9)4.31602 液晶屏 (10)4.4 软件原理图 (11)五、系统调试过程 (11)5.1 软件调试 (11)5.2 硬件调试 (12)六、结论 ..................................12七、遇到的问题及解决方法和总结 (12)7.1 硬件方面 (12)7.2 软件方面 (13)7.3 总结 (13)1八、参考文献 (13)九、附录 (14)课程设计概述1.1 课程设计背景随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。

单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。

而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。

因为它有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。

而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。

1.2 课程设计内容利用单片机、时钟芯片DS1302温度传感器DS18B20 16O2液晶屏等实现日期、时间、温度的显示,即是一个电子时钟。

嵌入式实验报告_电子钟实验报告

嵌入式实验报告_电子钟实验报告

嵌⼊式实验报告_电⼦钟实验报告电⼦钟实验报告班级电⼦班学号******* 姓名**实验名称电⼦钟⼀、设计⽬标和要求:1、理解rtc模块的结构,并掌握rtc的配置和读写操作。

2、学习使⽤UC GUI。

3、对⽆操作系统的应⽤,设计任务的切换和协调运⾏。

4、完成考核要求:①驱动RTC模块,设置和读取RTC时间(在液晶上⽤⽂字显⽰当前时间,年⽉⽇、星期⼏、时分秒)。

②添加液晶绘图函数,在液晶上绘制电⼦表表盘。

③设计任务,添加ucos2操作系统。

添加任务1(时间设置、报警闹钟设置和绘图参数)和任务2(绘制表盘),并协调2个任务。

④通过UC GUI丰富图形界⾯(添加GUI任务,添加对应任务的图像窗⼝)。

⼆、实验环境:硬件:嵌⼊式开发平台、JTAG仿真器、PC机、嵌⼊式系统实验箱,串⼝线。

软件: WinXP、RVDS集成开发环境、仿真器驱动程序、超级终端通讯程序。

三、设计思路和实现步骤、内容:1、设计思路:(1)⽤函数画出⼀个时钟表盘,写出实时的时间。

⾸先,定义边⾓点坐标,确定屏幕范围;接着,⽤清屏函数清屏;然后,⽤ILI93××程序画图,定义⼀点作为中⼼坐标,画⼀个确定半径的为R的圆;最后画三条直线,分别为秒针、分针、时针(都是使⽤坐标来确定的)。

(2)实现对时间的更改功能,并可以将更改过的时间赋值给现实的时间。

STM32中RTC模块计数器,秒针每次+1,每次+1后,秒针指向下⼀个刻度的时候,上⼀个刻度的位置⽤清屏函数清掉,然后重新画好指针;(3)⽤时钟来控制⼀个闹钟时间,中断后让液晶做出相应的反应。

在源程序中加⼊UCOS2操作系统,在系统中进⾏时间设置,报警和闹钟等等功能。

2、程序流程图:3、具体实现程序:1、主程序int main(void){KEY_Init();Stm32_Clock_Init(9);//系统时钟设置delay_init(72); //延时初始化uart_init(72,9600); //串⼝1初始化LED_Init();LCD_Init();RTC_Init();EXTIX_Init();DrawClock();while(1){if(alarmflag==1)//闹钟标志Alarm(); //闹钟显⽰elseTimeshow(); //时间显⽰if(set==1) //设置时间标志{LCD_Clear(WHITE);Set_timeshow(); //设置时间}}}时钟、led、lcd、rtc初始化后,进⼊⼀个死循环,如果没有进⼊闹钟中断,就开始时钟显⽰,按下第⼀个使能按键后,进⼊第⼆个界⾯,开始时间更改,然后再返回更改值。

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

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

课程设计报告题目基于LCD的电子时钟课程设计(报告)任务书(理工科类)Ⅰ、课程设计(报告)题目:基于LCD的电子时钟实验Ⅱ、课程设计(论文)工作内容一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力;2、培养学生将理论知识与实际应用结合在一起;3、培养学生的自我学习能力和解决问题的能力;4、培养学生的协作意识和团队合作能力;5、培养学生的总结经验的能力。

二、研究方法及手段应用1、问题解决模块化,将任务分成若干模块,分模块调试和完成任务;2、查阅网上的相关素材,查阅相关论文资料,进行比较、研究;3、在独立思考的基础上,请教老师,和同组同学讨论、学习;4、反复调试、总结经验、排除差错;5、连接PC和EL-ARM-830实验箱,完成整个实验环境搭建;6、运用Code Warrior for ARM编译软件编译汇编语言和进行调试;7、使用H-JTAG下载至硬件进行观察、调试。

三、课程设计预期效果1、在液晶屏上显示表盘,和时间点和时、分、秒针;2、在液晶屏上显示时、分、秒、年、月、日;3、在液晶屏上实现指针的动态图像;4、可以实现自己设定的初始时间。

学生姓名:王宁专业年级:09电子信息工程目录前言 (4)第一章系统设计 (5)第一节课题目标及总体方案 (5)第二节相关组件说明 (5)第三节项目设计模块描述及流程图 (7)1.主函数模块 (8)2.时钟表盘的构建模块 (8)3. 表盘下日期的显示模块 (9)4.任务运行模块 (10)第二章结果与显示 (11)结果显示 (11)心得体会 (12)参考文献 (13)附录 (13)前言近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。

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

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

课程设计---基于LCD的电子时钟设计

课程设计---基于LCD的电子时钟设计

课程设计报告题目基于LCD的电子时钟设计专业、学号授课班号学生姓名指导教师完成时间课程设计(报告)任务书(理工科类)Ⅰ、课程设计(报告)题目:基于LCD的电子时钟设计Ⅱ、课程设计(论文)工作内容一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力;2、掌握嵌入式系统设计基本原理、培养嵌入式系统设计能力;二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、使用实验箱上的S3C44BOX芯片系统和LCD作为硬件基础;3、使用ADS1.2及H-JTAG对源程序进行编译、仿真、调试,下载到芯片中实现LCD电子时钟功能。

三、课程设计预期效果1、完成实验环境搭建:学习LCD与ARM的LCD的控制器的接口原理;掌握内置LCD控制器驱动编写方法;2、设计完成电子时钟源程序;3、源程序编译、调试通过,下载到实验箱中,实现电子时钟功能,并在LCD上显示类似的时钟界面,动态显示当前的时间,包括:年、月、日、时、分、秒,时针,分针、秒针必须为动态实时指示当前的时间。

学生姓名:专业年级:目录前言 (2)第一章系统设计 (3)第一节课题目标及总体方案 (3)第二节硬件平台简介 (3)一、 S3C44B0X简介 (3)二、S3C44B0X与LCD连接 (5)第二节软件系统设计 (5)一、μC/OS-II系统模块设计 (5)二、LCD初始化模块设计 (5)三、时钟应用系统模块设计 (5)第二章实验结果及讨论 (7)第一节ADS1.2集成开发环境简介 (7)第二节调试结果与分析 (9)第三章结论 (10)心得体会 (11)参考文献 (12)附录 (13)源程序 (13)前言随着科技的发展,嵌入式系统广泛应用于工业控制和商业管理领域,在多媒体手机、袖珍电脑、掌上电脑、车载导航器等方面的应用,更是极大地促进了嵌入式技术深入到生活和工作各个方面。

嵌入式系统主要由嵌入式处理器、相关支撑硬件及嵌入式软件系统组成;本文介绍基于ARM7的嵌入式微处理器S3C44BOX和LCD显示器的电子时钟的设计,实现电子时钟的功能,并在LCD 上显示类似的时钟界面;动态显示当前的时间,包括:年、月、日、时、分、秒,时针。

基于ARM和LCD的电子时钟设计课程设计报告

基于ARM和LCD的电子时钟设计课程设计报告

指导教师评定成绩:审定成绩:重庆邮电大学移通学院课程设计报告设计题目:基于LCD的电子时钟实验学校:重庆邮电大学移通学院学生姓名:曹相凯专业:电气工程与自动化班级: 05131004学号: 02指导教师:陈龙灿设计时刻:2021 年12 月重庆邮电大学移通学院前言时钟,自从它发明的那天起,就成为人类的朋友,但随着时刻的推移,科学技术的不断进展,人们对时刻计量的精度要求愈来愈高,应用愈来愈广。

如何让时钟更好的为人民效劳,如何让咱们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。

现今,高精度的计时工具大多数都利用了石英晶体振荡器,由于电子钟,石英表,石英钟都采纳了石英技术,因此走时精度高,稳固性好,利用方便,不需要常常调校,数字式电子钟用集成电路计不时,译码代替机械式传动,用LED 显示器代替显示器代替指针显示进而显示时刻,减小了计时误差,这种表具有时,分,秒显示时刻的功能,还能够进行时和分的校对,片选的灵活性好。

时钟电路在运算机系统中起着超级重要的作用,是保证系统正常工作的基础。

在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡按时信号,要紧由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定不时钟,即定不时刻,它通常有两种实现方式:一是用软件实现,即用单片机内部的可编程按时/计数器来实现,但误差专门大,要紧用在对时刻精度要求不高的场合;二是用专门的时钟芯片实现,在对时刻精度要求很高的情形下,通常采纳这种方式,典型的时钟芯片有:DS1302,DS12887,X1203等都能够知足高精度的要求。

本文要紧介绍用单片机内部的按时/计数器来实现电子时钟的方式,本设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,组成了一个单片机电子时钟。

系统设计课题目标及整体方案通过S3C44B0X处置器的学习,能够利用其内部的RTC单元和LCD操纵器,外接LCD模块、晶振和(后备)电源实现电子实不时钟的功能。

基于单片机的LCD电子时钟设计

基于单片机的LCD电子时钟设计

基于单片机的LCD电子时钟设计随着科技的不断发展,单片机已经成为现代电子设备中的重要组成部分。

其中,LCD电子时钟的设计与应用更是受到广泛。

基于单片机的LCD电子时钟设计具有精度高、稳定性好、体积小、耗电量低等优点,被广泛应用于家居、办公、交通运输等领域。

一、设计原理基于单片机的LCD电子时钟设计主要由单片机、时钟电路和LCD显示模块组成。

其中,单片机作为主控制器,负责读取时钟信号并控制LCD显示模块。

时钟电路则产生一个高精度的实时时钟信号,LCD显示模块则负责将时间信息显示出来。

二、硬件设计1、单片机选择:单片机是整个系统的核心,负责读取时钟信号、处理数据并控制LCD显示模块。

常见的单片机型号包括STM32、PIC、AVR等。

根据实际需求,选择合适的单片机型号。

2、时钟电路:时钟电路是整个系统的核心部分,它产生高精度的实时时钟信号。

常见的时钟电路包括石英晶体振荡器、GPS模块等。

根据实际需求,选择合适的时钟电路。

3、LCD显示模块:LCD显示模块负责将时间信息显示出来。

常见的LCD显示模块包括字符型LCD和图形型LCD。

根据实际需求,选择合适的LCD显示模块。

三、软件设计软件设计是整个系统的重要组成部分,它需要实现读取时钟信号、处理数据并控制LCD显示模块的功能。

具体的软件设计流程如下:1、初始化:初始化单片机、时钟电路和LCD显示模块。

2、读取时钟信号:通过时钟电路读取实时时钟信号。

3、处理数据:对读取的时钟信号进行处理,提取出年、月、日、时、分、秒等信息。

4、控制LCD显示模块:将处理后的时间信息通过LCD显示模块显示出来。

5、循环执行:重复执行上述步骤,实现LCD电子时钟的实时更新。

四、调试与优化完成硬件和软件设计后,需要对系统进行调试和优化。

具体的调试和优化步骤如下:1、通电测试:将系统通电,检查各部分是否正常工作。

2、精度测试:检查时钟电路的精度是否满足要求。

3、LCD显示测试:检查LCD显示模块是否能正确显示时间信息。

嵌入式课设报告-LCD,LED数码时钟显示修改解读

嵌入式课设报告-LCD,LED数码时钟显示修改解读

目录1.设计目的 (2)2.设计要求 (2)3.设计内容 (2)3.1.实验电路及说明 (2)3.2.程序流程及分析 (2)3.2.1.中断程序 (2)3.2.2.主函数程序 (3)3.3.程序清单 (4)3.3.1.头文件includes.h (4)3.3.2.中断程序 (5)3.3.3.主函数main.c (7)4.调试说明 (9)4.1.调试情况 (9)4.2.程序结果及分析 (11)4.2.1.调试过程中遇到的问题及解决方法 (11)4.2.2.对程序设计技巧的总结及分析 (12)5.设计总结及体会 (12)6.参考文献 (12)1.设计目的(1)理解点阵字符型LCD的显示原理。

(2)了解UART 通信基本概念、UART 通信基本原理。

(3)理解和掌握KL25 的UART 模块的基本编程方法。

2.设计要求(1)LCD数字钟能够正常的显示24小时时间的时分秒以及正常跳变。

(2)通过串口可以重新设置数字钟的时间3.设计内容3.1. 实验电路及说明(1)硬件说明:PC机,KL25*1,UART-USB数据线。

(2)电路说明:用数据线将PC机与试验箱连接即可。

3.2. 程序流程及分析3.2.1.中断程序(1)isr_uart1_re(void)变量:ch:接受字符,length:接受字符的长度,data[]存放字符数组,g_flag:标志位,说明data[]存放字符结束(补充说明:‘#’为结束符)程序:1.ch接受字符2.判断data[length]是否为‘#’是g_flag=1;否length+1功能:把接受的字符存到data[]中(2) tpm0_isr(void)变量:TPMCounter:计时器,LEDindex:位选口声明,kbv[32]="00:00:00":LCD显示缓冲区。

程序:1.设置TPMCounter计时器2.处理LED部分:用if (LEDindex>=4) LEDindex=0实现对4个led的刷新3.如果TPMCounter>1000,TPMCounter++(每1秒循环一次)对LEDDataBuffer[6]实现时钟现实的秒+14.把LEDDataBuffer[6]赋值给kbv[],显示LCD3.2.2.主函数程序程序:1.判断g_flag是否为1,为1跳到2,为0跳到1,g_flag清零2.switch(data[0])选择操作3.length清零3.3. 程序清单3.3.1.头文件includes.h#ifndef INCLUDES_H_#define INCLUDES_H_#include "common.h"#include "gpio.h"#include "light.h"#include "uart.h"#include "sysinit.h"#include "lcd.h"#include "kb.h"#include "tpm.h"#include "led.h"//定义小灯闪烁频率#define RUN_COUNTER_MAX 1500000ul//定义使用的调试号#define UART_TEST UART_1#define TEST_UART_BAUDRATE 9600UL#define bus_clk_khz 24000 //芯片总线时钟频率,Khz//定义全局变量uint_8 LEDDataBuffer[6];uint_8 ch;uint_8 Data[10];uint_16 Length;uint_8 g_Flag;#endif3.3.2.中断程序(1)isr.h(注册中断)#ifndef ISR_H //防止重复定义(ISR_H 开头)#define ISR_H//===============用户中断向量表注册表=====================//1注册TPM0中断向量#ifdef VECTOR_033#undef VECTOR_033extern void tpm0_isr(void);#define VECTOR_033 tpm0_isr#endif//2 注册串口1中断向量#ifdef VECTOR_029#undef VECTOR_029extern void isr_uart1_re(void);#define VECTOR_029 isr_uart1_re#endif#endif //防止重复定义(结尾)(2)isr.c#include "includes.h"void tpm0_isr(void){static uint_32 TPMCounter = 0; //计时器//static uint_8 value =0; //键盘变量static uint_8 LEDindex=0; //位选口声明//LED显示缓冲区uint_8 i;//LED缓冲区赋值//LCD显示缓冲区,其中.表示按下的数字uint_8 kbv[32]="00:00:00";if((TPM_SC_REG(TPM0_BASE_PTR) & TPM_SC_TOF_MASK) == TPM_SC_TOF_MASK){TPMCounter++;}BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR)); //中断置标志位写1清0//处理LED部分LEDindex++; //位选位+1if (LEDindex>=4) LEDindex=0; //大于4位选口置0i=LEDchangeCode(LEDDataBuffer[LEDindex]-'0'); //转码LEDshow1(LEDindex,i);//显示LEDif(TPMCounter>1000){TPMCounter = 0;if(LEDDataBuffer[3]=='9'){LEDDataBuffer[3]='0';LEDDataBuffer[2]++;}else LEDDataBuffer[3]++;if(LEDDataBuffer[2]=='6'&&LEDDataBuffer[1]!='9'){LEDDataBuffer[2]='0';LEDDataBuff er[1]++;}elseif(LEDDataBuffer[2]=='6'&&LEDDataBuffer[1]=='9'){LEDDataBuffer[2]='0';LE DDataBuffer[1]='0';LEDDataBuffer[0]++;}if(LEDDataBuffer[0]=='6'){LEDDataBuffer[0]='0';LEDDataBuffer[4]++;}if(LEDDataBuffer[4]=='4'){LEDDataBuffer[4]='0';LEDDataBuffer[5]++;}if(LEDDataBuffer[5]=='3'){LEDDataBuffer[5]='0';}kbv[0]= LEDDataBuffer[5];kbv[1]= LEDDataBuffer[4];kbv[3]= LEDDataBuffer[0];kbv[4]= LEDDataBuffer[1];kbv[6]= LEDDataBuffer[2];kbv[7]= LEDDataBuffer[3];LCDShow(kbv);}}//串口1接收中断服务例程void isr_uart1_re(void){uint_8 flag = 1;enter_critical();ch = uart_re1(UART_TEST, &flag);uart_send1(UART_1,ch);if (0 == flag){Data[Length]=ch;if(Data[Length]=='#'){g_Flag = 1;}Length++;}exit_critical();}3.3.3.主函数main.c#include "includes.h" //包涵总头文件int main(void){//1.声明主函数使用的局部变量LEDDataBuffer[0]='5';LEDDataBuffer[1]='8';LEDDataBuffer[2]='1';LEDDataBuffer[3]='1';LEDDataBuffer[4]='3';LEDDataBuffer[5]='2';uint_32 run_counter; //运行计数器g_Flag=0;//2.关总中断enter_critical();// 进入临界区//3.初始化底层模块LEDInit(); //LED初始化LCDInit(); //LCD初始化KBInit(); //键盘初始化tpm_init(TPM0,TPM_CLKSRC_PLL,1000); //初始化TPM 模块,1ms中断一次uart_init (UART_TEST, bus_clk_khz, 9600); //串口1初始化, 总线时钟24000Khz,波特率9600//4.缓冲区赋值//5.开中断tpm_enable_int(0);init_critical();uart_enable_re_int(UART_TEST);uart_send_string(UART_1,"Uart Initial\r\n");uart_send_string(UART_1,"SD-FSL Library Flash Test!\r\n\r\n");uart_send_string(UART_1,"Press ? to get help\r\n");//====================================================== =====================for(;;){run_counter++;if (run_counter > RUN_COUNTER_MAX){run_counter = 0;} // end_ifif(g_Flag==1)g_Flag=0;switch(Data[0]){case '?'://命令帮助uart_send_string(UART_1,"写入格式如下:\r\n");uart_send_string(UART_1," 写入W\r\n");break;case 'w'://写入操作case 'W':LEDDataBuffer[5]=Data[1];LEDDataBuffer[4]=Data[2];LEDDataBuffer[0]=Data[3];LEDDataBuffer[1]=Data[4];LEDDataBuffer[2]=Data[5];LEDDataBuffer[3]=Data[6];break;default:break;}Length=0;}}//====================================================== =====================return 0;}4.调试说明4.1. 调试情况(1)发送?#收到帮助命令LCD显示默认的时间23:58:11LED显示分钟和秒58:11(2)发送w+6位时间+#结束,设置时间LCD显示默认的时间12:34:56LED显示分钟和秒34:564.2. 程序结果及分析4.2.1.调试过程中遇到的问题及解决方法(1)问题:输入命令如?#,输出是帮助命令无限循环,应该帮助命令只出现一次。

嵌入式闹钟课程设计报告

嵌入式闹钟课程设计报告

嵌入式闹钟课程设计报告一、课程目标知识目标:1. 理解嵌入式闹钟的基本原理,掌握其核心组件的功能与作用。

2. 学会使用编程语言(如C语言)编写嵌入式闹钟程序,实现对时间的显示、设置和闹钟提醒功能。

3. 了解嵌入式系统的基本概念,掌握常见的输入输出接口及其应用。

技能目标:1. 能够运用所学知识设计和制作一个具有实际功能的嵌入式闹钟。

2. 培养学生的动手操作能力,学会使用相关工具和仪器进行硬件焊接、调试和程序下载。

3. 提高学生的团队协作能力,学会在项目过程中进行有效沟通和分工合作。

情感态度价值观目标:1. 培养学生对嵌入式系统的兴趣,激发学生学习编程和电子技术的热情。

2. 培养学生的创新精神和实践能力,鼓励学生勇于尝试、不断探索。

3. 增强学生的自信心和责任感,使学生在面对挑战时保持积极的态度。

课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,培养学生的动手能力和创新能力。

学生特点:初中生,具备一定的电子和编程基础,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:注重理论与实践相结合,强调学生的主动参与和动手实践,关注个体差异,提高学生的综合素质。

通过本课程的学习,使学生能够掌握嵌入式闹钟的制作方法,培养其创新意识和团队协作能力。

教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 嵌入式系统基本概念:介绍嵌入式系统的定义、组成及应用领域,使学生了解嵌入式系统的基本知识。

- 教材章节:第1章 嵌入式系统概述2. 嵌入式闹钟硬件设计:讲解闹钟所需的主要硬件组件,如微控制器、时钟芯片、显示屏、按键等,并介绍硬件电路的搭建方法。

- 教材章节:第2章 嵌入式系统硬件设计3. 嵌入式编程基础:教授C语言编程基础,包括变量、数据类型、运算符、控制语句等,为编写嵌入式闹钟程序打下基础。

- 教材章节:第3章 嵌入式编程基础4. 时间显示与设置:讲解时间的表示方法、时间设置与显示的实现,使学生掌握闹钟时间调整与显示功能的设计。

单片机课程设计—带有LCD的定时闹钟

单片机课程设计—带有LCD的定时闹钟

单片机的发展历程
1971年,Intel公司推出4004微处理器, 标志着单片机的诞生
1990年代,ARM公司推出ARM架构,成为现 代智能手机、平板电脑等设备的主流处理器
1976年,Intel公司推出8080微处理器, 成为第一个广泛使用的单片机
2000年代,RISC-V架构出现,成为开 源硬件领域的新宠
判断按键类型:根 据按键的状态,判 断按下的是哪个按 键
执行相应操作:根据按 键类型,执行相应的操 作,如设置闹钟时间、 调整闹钟音量等
更新显示内容:根据 按键操作,更新LCD 显示内容,如显示当 前时间、闹钟时间等
定时器和中断服务程序
定时器:用于定时触发中断服务程序 中断服务程序:用于处理定时器中断 定时器初始化:设置定时器参数,如定时器模式、定时器周期等 中断服务程序编写:编写中断服务程序,处理定时器中断,如更新LCD显示、控制闹钟等
通信设备:如手机、路由 器等
计算机外设:如打印机、 扫描仪等
定时闹钟的设计 思路
设计背景和意义
单片机课程设计:作为单片机课程的一部分,设计定时闹钟可以加深对单片机原理和应用的理解。 实际应用:定时闹钟在日常生活中具有广泛的应用,如提醒、定时等。 技术挑战:设计定时闹钟需要掌握单片机编程、电路设计、LCD显示等技术,具有一定挑战性。 创新性:设计带有LCD的定时闹钟,可以提高产品的用户体验,增加产品的市场竞争力。
功能:接收用 户按键输入, 控制闹钟功能
模块组成:按 键、电阻、电 容、单片机IO

工作原理:通过 按键按下,改变 电阻电容的电平, 从而改变单片机 IO口的电平,实
现按键输入
设计要点:按 键的布局、按 键的响应速度、 按键的防抖处

电子时钟lcd课程设计

电子时钟lcd课程设计

电子时钟lcd课程设计一、课程目标知识目标:1. 学生能理解电子时钟的基本原理,掌握LCD显示技术的基本概念。

2. 学生能够解释电子时钟中LCD显示部分的电路组成及其功能。

3. 学生能够描述电子时钟中时间计算和处理的方法。

技能目标:1. 学生能够运用所学知识,设计并搭建一个简单的电子时钟LCD显示系统。

2. 学生通过实际操作,掌握电路连接、程序编写和调试的基本技能。

3. 学生能够运用问题解决策略,对LCD显示系统进行故障排查和优化。

情感态度价值观目标:1. 学生培养对电子技术和编程的兴趣,激发创新意识和探索精神。

2. 学生通过团队合作,学会交流、分享和协作,培养集体荣誉感。

3. 学生意识到科技发展对生活的影响,提高对科学技术的尊重和责任感。

课程性质:本课程为实践性强的信息技术课程,注重学生动手操作和问题解决能力的培养。

学生特点:六年级学生具备一定的逻辑思维和动手能力,对电子技术和编程感兴趣,但需进一步培养实际操作和团队协作能力。

教学要求:结合学生特点,注重理论与实践相结合,强调在实践中学习,培养学生解决问题的能力和团队协作精神。

通过本课程的学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。

二、教学内容本课程教学内容主要包括以下几部分:1. 电子时钟原理:介绍电子时钟的基本工作原理,包括时钟芯片、晶振、LCD 显示等组成部分。

- 教材章节:第二章“电子时钟的原理与设计”- 内容列举:时钟芯片的工作原理、晶振的作用、LCD显示原理。

2. LCD显示技术:讲解LCD显示技术的基本概念,以及电子时钟中LCD显示部分的电路组成和功能。

- 教材章节:第三章“LCD显示技术”- 内容列举:LCD显示原理、电子时钟LCD电路组成、显示驱动程序编写。

3. 电路设计与搭建:教授如何设计并搭建一个简单的电子时钟LCD显示系统。

- 教材章节:第四章“电子时钟设计与制作”- 内容列举:电路设计方法、元器件选型、电路搭建与调试。

2019年基于LCD602电子时钟课程设计报告.doc

2019年基于LCD602电子时钟课程设计报告.doc

信息与电子工程学院课程设计报告目录一、课程设计概述 (2)1.1课程设计背景 (2)1.2课程设计内容 (2)1.3课程设计技术指标 (2)二、方案的选择及确定 (2)2.1单片机芯片的选择 (2)2.2显示模块的选择 (3)2.3实时时间计算模块的选择 (3)2.4实时环境温度采集模块选择 (3)2.5电路设计最终方案决定 (4)三、系统硬件设计 (4)3.1主控模块 (4)3.2LCD显示模块设计 (5)3.3时间计算模块设计 (5)3.4实时环境温度检测模块 (6)3.5报警模块 (6)3.6设置模块 (7)3.7电源接口部分 (7)四、系统软件设计 (7)4.1主函数 (7)4.2设置模块 (8)4.31602液晶屏 (9)4.4软件原理图 (10)五、系统调试过程 (10)5.1软件调试 (10)5.2硬件调试 (11)六、结论 (11)七、遇到的问题及解决方法和总结 (11)7.1硬件方面 (11)7.2软件方面 (12)7.3总结 (12)八、参考文献 (12)九、附录 (13)一、课程设计概述1.1 课程设计背景随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。

单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。

而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。

因为它有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。

而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。

1.2 课程设计内容利用单片机、时钟芯片DS1302、温度传感器DS18B20、1602液晶屏等实现日期、时间、温度的显示,即是一个电子时钟。

课程设计(论文)基于lcd液晶显示的多功能数字钟的设计(附pcb图及电路原理图)

课程设计(论文)基于lcd液晶显示的多功能数字钟的设计(附pcb图及电路原理图)

目录1前言 (1)2总体方案设计 (2)2.1设计内容 (2)2.2设计内容 (2)2.3方案论证 (3)2.4方案选择 (4)3单元模块设计 (5)3.1各单元模块功能介绍及电路设计 (5)3.1.1 温度采集电路 (5)3.1.2 DS1302时钟电路 (5)3.1.3 串行通信接口电路 (6)3.1.4 USB连接电路 (6)3.1.5 按键电路 (7)3.1.6液晶显示显示电路 (7)3.2特殊器件介绍 (7)3.2.1 STC89C52单片机芯片 (7)3.2.2 DS1302介绍 (8)3.2.3 温度传感器DS18B20 (9)3.2.4 液晶显示LCD1602 (9)4软件设计 (10)4.1软件选择 (10)4.2软件设计流程 (10)4.2.1 温度采集流程 (11)4.2.2 日期数据处理流程 (12)5系统的仿真及调试 (13)5.1系统仿真 (13)5.2硬件调试 (13)5.3软件调试 (14)6结论 (16)7总结与体会 (17)7.1设计小结 (17)7.2设计收获及改进 (17)7.3致谢 (17)8参考文献 (18)附录: (19)1前言单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

单片机也被称为微控制器(Microcontroller),它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

概括的讲:一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。

STC单片机完全兼容51单片机,并有其独到之处,其抗干扰性强,加密性强,超低功耗,可以远程升级,内部有专用复位电路,价格也较便宜,由于这些特点使得 STC 系列单片机的应用日趋广泛。

基于嵌入式系统的LCD电子时钟设计

基于嵌入式系统的LCD电子时钟设计

基于嵌入式系统的LCD电子时钟设计————————————————————————————————作者:————————————————————————————————日期:基于嵌入式系统的LCD电子时钟设计院系: 物理工程学院年级: 2009级专业:测控技术与仪器学号: 20092240111姓名:雷亚东指导老师: 田增国目录前言 (1)第一章课题目标及总体方案 (2)第二章系统设计 (3)1、系统结构原理 (3)2、硬件组成与设计 (4)3、软件组成与设计 (4)第三章实验结果 (5)心得体会 (5)参考文献 (5)附录 (6)前言嵌入式系统反映了当代最新的技术水平.嵌入式系统不仅和一般的PC机上的应用系统不同,就是针对不同的具体应用而设计的嵌入式系统之间差别也很大。

嵌入式系统一般功能单一,简单而且兼容性方面要求不高,但是在大小和成本方面限制较多。

在本实验中以arm7处理器S3C44B0X和液晶显示屏LRH9J515XA STN/BW为基础,设计实现了带农历的实时时钟电路。

当有外部中断产生时,串口与S3C44B0X进行通信,实现更改时钟时间,且应用公历转农历的算法,实现将农历时间实时显示在LCD上。

另外还具有闹铃、星期提示功能,基本上能够满足人们的需求。

关键字:arm7 S3C44B0X LCD 农历串口第一章课题目标及总体方案一、目的●了解实时时钟的硬件控制原理及设计方法。

●掌握S3C44B0X处理器的RTC模块程序设计方法.●初步掌握液晶显示屏的使用及其电路设计方法。

●掌握S3C44B0X处理器的LCD控制器的使用。

●通过实验掌握液晶显示文本和图形的方法以及程序设计的方法.二、设备1。

硬件:Embest EDUKIT —Ⅱ/Ⅲ实验平台,Embest ARM标准/增强型仿真器套件,PC机。

2. 软件:Embest IDE Pro 2004集成开发环境,Windows98/2000/NT/XP操作系统。

基于LCD1206的电子时钟

基于LCD1206的电子时钟

课程设计课程名称单片机原理及应用课题名称基于LCD1206的电子时钟专业自动化班级1403学号201401020305姓名贺天佑指导老师汪超2017年6月2日电气信息学院课程设计任务书课题名称基于CLD1206的电子时钟姓名贺天佑专业自动化班级1403学号05指导老师汪超课程设计时间2017年5月22日-2017年6月2日(13、14周)教研室意见意见:审核人:一、任务及要求1、设计任务:本课题要求以MCS-51系列单片机为核心,设计一个简易电子时钟。

(1)采用液晶显示模块LCD1602进行显示;(2)显示年/月/日/时/分/秒;(3)具备调时功能、闹钟功能、秒表功能;(4)其它功能。

2、设计要求:(1)确定系统设计方案;(2)进行系统的硬件设计;(3)完成应用程序设计;(4) 应用系统的硬件和软件的调试。

二、进度安排第一周:周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。

周二~周三:完成硬件设计和电路连接。

周四~周日:完成软件设计。

第二周:周一~周三:程序调试。

周四~周五:设计报告撰写。

周五进行答辩和设计结果检查。

三、参考资料1、王迎旭等.单片机原理及及应用[M]. 2版.机械工业出版社,2011.2、胡汉才.单片机原理及其接口技术[M].3版.清华大学出版社,2010.目录第1章系统概述1.1系统简介 (1)1.2任务与要求 (1)1.2.1设计任务: (1)1.2.2设计要求: (1)第2章系统方案设计2.1 设计方案 (1)2.2 设计思路及系统框架图 (1)第3章系统硬件设计3.1 单片机STC89C52 (2)3.2 矩阵键盘电路 (3)3.3 蜂鸣器电路 (4)3.4 LCD数码管显示电路 (5)第4章系统软件设计4.1 系统主程序 (5)4.2 矩阵键盘功能程序 (6)4.3 定时功能程序 (7)第5章系统调试5.1调试方法 (7)5.2调试结果 (7)设计总结 (9)参考文献 (9)附录A 实物图 (10)附录B 仿真图 (10)附录C 程序清单 (10)第1章系统概述1.1系统简介电子时钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。

带有LCD的电子闹钟课程设计

带有LCD的电子闹钟课程设计

带有LCD的电子闹钟课程设计一、课程目标知识目标:1. 学生能理解电子闹钟的基本工作原理,掌握LCD显示原理。

2. 学生能掌握闹钟设置、时间调整等基本操作,了解电子闹钟的功能特点。

3. 学生能了解电子闹钟中涉及的电子元件及其作用。

技能目标:1. 学生能运用所学知识,正确组装带有LCD的电子闹钟。

2. 学生能通过实际操作,掌握电子闹钟的调试与故障排除方法。

3. 学生能运用创新思维,对电子闹钟进行改进设计。

情感态度价值观目标:1. 学生通过动手实践,培养对电子技术的兴趣和热情。

2. 学生在合作学习中,培养团队协作能力和沟通表达能力。

3. 学生在学习过程中,增强对科技产品的理解和尊重,树立正确的科技价值观。

课程性质:本课程为实践性较强的课程,结合理论知识与动手操作,培养学生电子技术的实际应用能力。

学生特点:学生在本年级已具备一定的电子技术基础知识,具有较强的动手能力和探究精神。

教学要求:教师需引导学生将理论知识与实际操作相结合,注重培养学生的动手实践能力和创新思维。

通过课程学习,使学生在掌握基本技能的同时,提升情感态度价值观。

将课程目标分解为具体学习成果,以便进行教学设计和评估。

二、教学内容本课程教学内容主要包括以下几部分:1. 电子闹钟基本原理:介绍电子闹钟的工作原理,LCD显示原理,以及闹钟中涉及的电子元件及其作用。

2. 闹钟组装与调试:讲解闹钟的组装过程,包括电路连接、LCD显示、按键设置等,以及闹钟的调试方法与故障排除。

3. 闹钟功能特点:分析电子闹钟的功能特点,如闹铃设置、时间调整、背光显示等,并介绍相关操作方法。

4. 创新设计与改进:引导学生运用所学知识,对电子闹钟进行创新设计,提高闹钟的实用性和趣味性。

教学内容安排如下:第一课时:电子闹钟基本原理学习,了解LCD显示原理及闹钟中的电子元件。

第二课时:闹钟组装与调试,学生动手实践,掌握组装与调试方法。

第三课时:学习闹钟的功能特点,进行实际操作,熟悉各项功能。

嵌入式电子闹钟()时钟课程设计

嵌入式电子闹钟()时钟课程设计

#include<reg52.h> //头文件#include<intrins.h>#define uchar unsigned char //宏定义#define uint unsigned int//位定义sbit rs=P2^5; //液晶位定义sbit lcden=P2^7;sbit s1=P2^0; //时间功能切换按键sbit s2=P2^1; //按键加sbit s3=P2^3; //按键减sbit s4=P2^4; //闹钟功能切换键sbit rst=P1^5; //ds1302引脚定义sbit io=P1^6;sbit sclk=P1^7;sbit beep=P3^0; //蜂鸣器uchar num,count,shi,fen,miao,s1num,s2num,year,month,day,week,flag,flag1,year1,month1,day1,week1,shi1,fen1,miao1,year2,month2,day2,week2,shi2,fen2,miao2,year5,month5,day5,week5,shi5,fen5,miao5,wk,ashi,afen; //参数定义uchar code table[]="20 - - "; //液晶固定显示uchar code table1[]=" : : 00:00";/*uchar time_dat[7]={12,1,6,6,12,59,59}; //年周月日时分秒uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};*/void write_com(uchar com); //液晶写指令函数void write_data(uchar date); //液晶写数据函数void write_ds1302(uchar add,uchar dat); //ds1302芯片写指令函数void set_rtc(); //ds1302时间设置函数void time_pros(); //ds1302进制转换函数void read_rtc(); //ds1302读时间函数void alarm(); //闹钟函数void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void init() //初始化{lcden=0;flag=0;flag1=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80); //液晶固定显示,第一行 for(num=0;num<14;num++){write_data(table[num]);delay(5);}write_com(0x80+0x40); //液晶显示第二行for(num=0;num<20;num++){write_data(table1[num]);delay(5);}}void write_com(uchar com)//1602液晶写指令{rs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date)//1602液晶写写数据{rs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void write_sfm(uchar add,uchar date)//时分秒{uchar shi3,ge;shi3=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi3);write_data(0x30+ge);}void write_nyr(uchar ad,uchar date)//年月日{uchar shi4,ge2;shi4=date/10;ge2=date%10;write_com(0x80+ad);write_data(0x30+shi4);write_data(0x30+ge2);}void write_week(uchar wk) //星期按西方星期设置星期天为第一天{write_com(0x80+11);switch(wk){case 1: write_data('S');delay(5);write_data('U');delay(5);write_data('N');break;case 2: write_data('M');delay(5);write_data('O');delay(5);write_data('N');break;case 3: write_data('T');delay(5);write_data('U'); delay(5);write_data('E'); break;case 4: write_data('W'); delay(5);write_data('E'); delay(5);write_data('D'); break;case 5: write_data('T'); delay(5);write_data('H'); delay(5);write_data('U'); break;case 6: write_data('F'); delay(5);write_data('R'); delay(5);write_data('T'); break;case 7: write_data('S'); delay(5);write_data('A'); delay(5);write_data('T'); break;}}void keyscan() //按键函数{if(s1==0){delay(5);if(s1==0){write_com(0x0f);s1num++; //记录按键次数flag=1;flag1=1;while(!s1);switch(s1num)//光标闪烁点定位{case 1:write_com(0x80+0x40+6); //秒break;case 2:write_com(0x80+0x40+3); //分break;case 3:write_com(0x80+0x40+0); //时break;case 4:write_com(0x80+11); //星期break;case 5:write_com(0x80+8); //日break;case 6:write_com(0x80+5); //月break;case 7:write_com(0x80+2); //年break;case 8:s1num=0;write_com(0x0c);//设置开显示光标不显示关闭时间设置set_rtc();flag=0;break;}}}if(s1num!=0) //按键加减{if(s2==0) //加按键函数{delay(10);if(s2==0){while(!s2);switch(s1num) //根据功能键相应次数做出调节{case 1: miao++; //秒加if(miao==60)miao=0;write_sfm(6,miao);write_com(0x80+0x40+6);break;case 2: fen++; //分加if(fen==60)fen=0;write_sfm(3,fen);write_com(0x80+0x40+3);break;case 3: shi++; //时加if(shi==24)shi=0;write_sfm(0,shi);write_com(0x80+0x40+0);break;case 4: week++; //星期加 if(week==8)week=1;write_week(week);write_com(0x80+11);break;case 5: day++; //日加if(day==32)day=1;write_nyr(8,day);write_com(0x80+8);break;case 6: month++; //月加if(month==13)month=1;write_nyr(5,month);write_com(0x80+5);break;case 7: year++; //年加 if(year==100)year=0;write_nyr(2,year);write_com(0x80+2);break;}}}if(s3==0) //减按键函数同上 {delay(10);if(s3==0){while(!s3);switch(s1num) //根据功能键相应次数做出调节{case 1: miao--;if(miao==-1)miao=59;write_sfm(6,miao);write_com(0x80+0x40+6);break;case 2: fen--;if(fen==-1)fen=59;write_sfm(3,fen);write_com(0x80+0x40+3);break;case 3: shi--;if(shi==-1)shi=23;write_sfm(0,shi);write_com(0x80+0x40+0); break;case 4: week--;if(week==-1)week=7;write_week(week);write_com(0x80+11);break;case 5: day--;if(day==-1)day=31;write_nyr(8,day);write_com(0x80+8);break;case 6: month--;if(month==-1)month=12;write_nyr(5,month);write_com(0x80+5);break;case 7: year--;if(year==-1)year=99;write_nyr(2,year);write_com(0x80+2);break;}}}}if(s4==0) //闹钟按键{delay(5);if(s4==0){write_com(0x0f); //光标闪烁s2num++; //记录按键次数flag=1;while(!s4);switch(s2num)//光标闪烁点定位{case 1:write_com(0x80+0x40+13); //分break;case 2:write_com(0x80+0x40+10); //时break;case 3:write_com(0x0c); //关闭闹钟设置 flag=0;s2num=0;break;}}}if(s2num!=0) //闹钟设置{if(s2==0) //闹钟加{delay(10);if(s2==0){while(!s2);switch(s2num) //根据功能键相应次数做出调节{case 1: afen++;if(afen==60)afen=0;write_sfm(13,afen);write_com(0x80+0x40+13);break;case 2: ashi++;if(ashi==24)ashi=0;write_sfm(10,ashi);write_com(0x80+0x40+10); break;}}}if(s3==0) //闹钟减{delay(10);if(s3==0){while(!s3);switch(s2num) //根据功能键相应次数做出调节 {case 1: afen--;if(afen==-1)afen=59;write_sfm(13,afen);write_com(0x80+0x40+13); break;case 2: ashi--;if(ashi==-1)ashi=23;write_sfm(10,ashi);write_com(0x80+0x40+10); break;}}}}}void wirte_ds1302_byte(uchar dat) //ds1302字节写{uchar i;for(i=0;i<8;i++){sclk=0;io=dat&0x01;dat=dat>>1;sclk=1;}}void write_ds1302(uchar add,uchar dat) //ds1302写函数{rst=0;_nop_();// 空操作sclk=0;_nop_();rst=1;_nop_();wirte_ds1302_byte(add);wirte_ds1302_byte(dat);rst=0;io=1;sclk=1;}uchar read_ds1302(uchar add) //ds1302读函数{uchar i,value;rst=0;_nop_();// 空操作sclk=0;_nop_();rst=1;_nop_();wirte_ds1302_byte(add);for(i=0;i<8;i++){value=value>>1;sclk=0;if(io){value=value|0x80;}sclk=1;}rst=0;_nop_();// 空操作sclk=0;_nop_();io=1;return value;}void set_rtc() //ds1302时间设置{write_ds1302(0x8e,0x00); //关写保护year1=year/10; //转换为十六进制year=year%10;year=year+year1*16;write_ds1302(0x8c,year);week1=week/10;week=week%10;week=week+week1*16;write_ds1302(0x8a,week);month1=month/10;month=month%10;month=month+month1*16;write_ds1302(0x88,month);day1=day/10;day=day%10;day=day+day1*16;write_ds1302(0x86,day);shi1=shi/10;shi=shi%10;shi=shi+shi1*16;write_ds1302(0x84,shi);fen1=fen/10;fen=fen%10;fen=fen+fen1*16;write_ds1302(0x82,fen);miao1=miao/10;miao=miao%10;miao=miao+miao1*16;write_ds1302(0x80,miao);write_ds1302(0x8e,0x80); //开写保护}void read_rtc() //从ds1302中读时间{year2=read_ds1302(0x8d);week2=read_ds1302(0x8b);month2=read_ds1302(0x89);day2=read_ds1302(0x87);shi2=read_ds1302(0x85);fen2=read_ds1302(0x83);miao2=read_ds1302(0x81);}void time_pros() //从ds1302中读出的时间转换为十进制{year5=year2/16;year2=year2%16;year2=year2+year5*10;month5=month2/16;month2=month2%16;month2=month2+month5*10;day5=day2/16;day2=day2%16;day2=day2+day5*10;shi5=shi2/16;shi2=shi2%16;shi2=shi2+shi5*10;fen5=fen2/16;fen2=fen2%16;fen2=fen2+fen5*10;miao5=miao2/16;miao2=miao2%16;miao2=miao2+miao5*10;}void display() //显示函数{write_sfm(6,miao2);write_com(0x80+0x40+6);write_sfm(3,fen2);write_com(0x80+0x40+3);write_sfm(0,shi2);write_com(0x80+0x40+0);write_week(week2);write_com(0x80+11);write_nyr(8,day2);write_com(0x80+8);write_nyr(5,month2);write_com(0x80+5);write_nyr(2,year2);write_com(0x80+2);if((ashi==shi2)&&(afen==fen2)){alarm();}}void alarm() // 闹钟{beep=0;delay(1000);beep=1;}void main() //主函数{init(); //初始化 while(1){keyscan(); //按键函数if(flag==0){keyscan();read_rtc();time_pros();display();}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告题目基于LCD的电子时钟课程设计(报告)任务书(理工科类)Ⅰ、课程设计(报告)题目:基于LCD的电子时钟实验Ⅱ、课程设计(论文)工作内容一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力;2、培养学生将理论知识与实际应用结合在一起;3、培养学生的自我学习能力和解决问题的能力;4、培养学生的协作意识和团队合作能力;5、培养学生的总结经验的能力。

二、研究方法及手段应用1、问题解决模块化,将任务分成若干模块,分模块调试和完成任务;2、查阅网上的相关素材,查阅相关论文资料,进行比较、研究;3、在独立思考的基础上,请教老师,和同组同学讨论、学习;4、反复调试、总结经验、排除差错;5、连接PC和EL-ARM-830实验箱,完成整个实验环境搭建;6、运用Code Warrior for ARM编译软件编译汇编语言和进行调试;7、使用H-JTAG下载至硬件进行观察、调试。

三、课程设计预期效果1、在液晶屏上显示表盘,和时间点和时、分、秒针;2、在液晶屏上显示时、分、秒、年、月、日;3、在液晶屏上实现指针的动态图像;4、可以实现自己设定的初始时间。

学生姓名:王宁专业年级:09电子信息工程目录前言 (4)第一章系统设计 (5)第一节课题目标及总体方案 (5)第二节相关组件说明 (5)第三节项目设计模块描述及流程图 (7)1.主函数模块 (8)2.时钟表盘的构建模块 (8)3. 表盘下日期的显示模块 (9)4.任务运行模块 (10)第二章结果与显示 (11)结果显示 (11)心得体会 (12)参考文献 (13)附录 (13)前言近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。

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

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

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

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

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

关键字:嵌入式系统、实时时钟RTC第一章系统设计第一节课题目标及总体方案随着嵌入式技术的发展,我们身边充斥着各类各样的嵌入式电子产品。

实时时钟(RTC)就是一种在现代电子设备中应用非常普遍,可以帮助人们实时、准确的掌握时间的器件,如手机、PDA及一些智能仪表都提供了时钟显示。

我们本次课题的目标就是要基于S3C44BOX芯片设计出一个实时时钟,编写汇编语言可以通过Code Warrior for ARM软件调试,然后下载至实验箱内进行观察。

在试验箱中的LCD液晶屏幕上显示出时钟的圆盘和动态的指针,并在时钟下方显示出当前的年份和日期。

另外,我们将要实现的系统分为几个模块实现,每个模块间相对独立而又相互联系,在主函数中进行调用。

第二节相关组件说明一、LCD显示原理S3C44B0X 中具有内置的LCD 控制器,它能将显示缓存(在SDRAM存储器中)中的LCD图像数据传输到外部的LCD驱动电路上的逻辑功能。

它支持单色、4级、16级灰度LCD显示,以及256彩色LCD显示。

在显示灰度时,它采用时间抖动算法(time-based dithering algorithm)和帧率控制 (Frame Rate Control)方法,在显示彩色时,它采用RGB的格式,即RED、GREEN、BLUE,三色混合调色。

通过软件编程,可以实现233或332的RGB调色的格式。

对于不同尺寸的LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对LCD 控制器中的相应寄存器写入不同的值,来配置不同的LCD 显示板。

本次课设的显示模式设置为8bit单扫描模式。

二、项目文件说明本实验使用实验教学系统的CPU板,液晶显示器(LCD),在LCD下方,有一个可调电阻,标号为VR2,它用来调整LCD的对比度及亮度。

在LCD的右下方,有一个黄头的按键,它用来开关LCD,它的标号为LCD_ON/OFF。

该项目添加了包含LCD驱动程序的文件夹Gui,其中,包括四个文件夹,Font中存放的是字体文件,Glib中存放绘图的中层和上层的函数,上层函数是直接供用户调用的API,Init中存放GUI初始化的函数,Lcddriver中存放的是LCD的底层驱动函数。

以及对LCD控制器的初始化函数。

把LCD驱动程序加入的过程,也就是把整个GUI文件夹加入该项目里,同时,还要在Application\INC目录下的config.h文件中,加入GUI程序的头文件,#include "..\..\Gui\Glib\Glib.h",这是为了在应用中方便调用画图的API函数。

如果,要在LCD上显示英文或汉字,还要在Application\SRC\Main.c中声明引用的是extern GUI_FONT CHINESE_FONT12;等外部定义过的字体。

图1第三节项目设计模块描述及流程图1.模块描述:我先进行了整个系统的规划,将整个系统分为四大模块:第一,主函数模块;第二,时钟表盘的构建模块,包括:设置液晶全屏背景色、绘制时钟表盘形状并着色、绘制表盘内12个点的形状并着色以及绘制表盘内指针的形状并着色;第三,表盘下日期的显示模块,包括:定位表盘下时间和日期的坐标和日期显示函数的编写;第四,任务运行模块。

2.流程图:一、主函数模块二、时钟表盘的构建模块(1)绘制时钟表盘形状并着色(2)绘制表盘内12个点的形状并着色(3)绘制表盘内指针的形状并着色(以秒针为例)三、表盘下日期的显示模块(1)定位表盘下时间和日期的坐标(仍以秒计时为例)(2)日期显示函数的编写四、任务运行模块第二章结果与显示结果显示1.经过多次的调试和排查,以及总结,使用编译器编译,编译器提示编译文件正确,没有出现任何错误,没有出现任何警告,而且编译出文件容量很小,下载迅速,符合软件设计要求。

2.下面的图片是从实验箱上的LCD屏幕上显示的图像拍下来的,也就是我本次课程设计的成果。

从图片显示上可以看出,所有预计实现的功能和界面都实现了。

表盘显示在相对中央的地方,整个屏幕以白色为基调,表盘底色为灰色,指针为红、绿、黄三种颜色,点数为绿色,表盘下方显示当前时间、日期,同时界面很漂亮,色彩对比很鲜明。

图2 效果显示图心得体会说实话,刚开始拿到课设题目的时候感觉毫无头绪,即使在查阅了大量相关资料的基础上。

后来,手上有了一份参考程序,打开一看,顿时懵了。

当时想如果纯粹靠我自己或者和同学讨论,恐怕很难完成这次课设吧。

于是,实验室刚开放,我就立刻去调试程序,通过观察试验箱上显示的结果来理解程序。

一个模块一个模块对应的理解下去之后,思路开始清晰起来。

每当遇到一行程序不懂或者有疑问时,比如这行程序起什么作用、可不可以删掉或者可不可以换个位置,我都通过程序的相关改动结合实验结果的观察将这些疑问解决掉了。

同时,同学的帮助也给了我很多的启发,非常感谢他们。

但不得不承认,关于μC/OS-II操作系统方面理解的很不透彻。

验收时,我只是把时钟界面的构建部分理解了,没有过多的加深对操作系统μC/OS-II 的学习,所以验收时对于老师的提问也是磕磕绊绊。

因而,在编写这份报告前,我又认真地上网搜索了μC/OS-II操作系统的简介,尤其是它的优点和任务调度方面。

在写这份报告时,我也许还没能完全弄懂μC/OS-II操作系统,但我相信,只要努力过,总会有收获。

参考文献1.吴学智,《基于ARM的嵌入式系统设计与开发》……人民邮电出版社,2007 2.金建设,《嵌入式系统基础实验》…………………大连理工大学出版社,20093.王晓薇,《嵌入式硬件基础实验与习题解答》…………电子工业出版社,2009附录1.软件清单:1)Code Warrior for ARM编译软件;2)AXD Debugger 调试软件;3)H-JTAG软件;2.硬件:PC和EL-ARM-830实验箱;3.程序清单:#include "..\inc\config.h"#define x_line 160#define y_line 80extern GUI_FONT CHINESE_FONT12;extern GUI_FONT CHINESE_FONT16;extern GUI_FONT GUI_Font8x16;I8 Hour[3],Min[3],Sec[3];I8 hour = 9, min = 0, sec = 0,ms;I8 YEA1[3],YEA2[3],MON[3],DAY[3];int yea1 = 20,yea2=12, mon = 5, day = 18;I8 XH1[3],XH2[3],XH3[3],XH4[3],XH5[3],XH6[3],XH7[3];int xh1=9,xh2=62,xh3=61;int xh4=02,xh5=19,xh6=22,xh7=23;//SpaceXS[61]、SpacYS[61]分别表示秒针的横坐标、纵坐标//SpaceXM[61]、SpaceXM[61]分别表示分针的横坐标、纵坐标//SpaceXH[13]、SpacYH[13] 分别表示时针的横坐标、纵坐标int SpaceXS[61]={160,165,170,175,180,185,189,193,197,201,205,206,207,208,209,210,209,208,207,206,205,201,197,193,189,185,180,175,170,165,160,155,150,145,140,135,131,127,123,119,115,114,113,112,111,110,111,112,113,114,115,119,123,127,131,135,140,145,150,155,160,},SpaceYS[61]={30,31,32,33,34,35,39,43,47,51,55,60,65,70,75,80,85,90,95,100,105,109,113,117,121,125,126,127,128,129,130,129,128,127,126,125,121,117,113,109,105,100,95,90,85,80,75,70,65,60,55,51,47,43,39,35,34,33,32,31,30},SpaceXM[61]={160,164,168,172,176,180,183,186,189,192,195,196,197,198,199,200,199,198,197,196,195,192,189,186,183,180,176,172,168,164,160,156,152,148,144,140,137,134,131,128,125,124,123,122,121,120,121,122,123,124,125,128,131,134,137,140,144,148,152,156,160},SpaceYM[61]={40,41,42,43,44,45,48,51,54,57,60,64,68,72,76,80,84,88,92,96,100,103,106,109,112,115,116,117,118,119,120,119,118,117,116,115,112,109,106,103,100,96,92,88,84,80,76,72,68,64,60,57,54,51,48,45,44,43,42,41,40},SpaceXH[13]={160,175,185,190,185,175,160,145,135,130,135,145,160},SpaceYH[13]={50,55,65,80,95,105,110,105,95,80,65,55,50},//当前要显示的时间的3个指针的坐标取地址。

相关文档
最新文档