




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深圳职业技术学院Shenzhen Polytechnic嵌入式 C 语言课程设计报告课题: 学院: 班级: 姓名: C51 液晶时钟设计报告 水漾天蓝目录一、设计方案 .11、功能简介 .12、开发测试环境选择 .1二、液晶时钟程序设计 .11、功能状态转换图 .12、主要功能模块 .22.1 主显示模块 .22.2 功能选择模块 .22.3 时间修改模块 .32.4 闹铃修改模块 .32.6 其他辅助模块函数以及变量 .4三、小结 .4四、附录 .51、使用说明 .52、参考文献资料 .53、附表 1 .6C51 液晶时钟设计报告 水漾天蓝1一、设计方案1、功能简介本文所设计的简易电子时钟可输出当前时间以及闹铃时间,并可通过机械按键来实现修改当前时间、修改闹铃时间、退出修改以及控制闹铃的打开和关闭,并通过 1602 型号的液晶屏显示出不同操作时的不同界面。本程序共设计按键 5 个,按键及功能分别是 1 键:选择功能界面下选择时间修改、时间和闹铃修改状态下的增加“1”计数;2 键:选择功能界面下选择闹铃修改、时间和闹铃修改状态下的减少“1”计数;3 键:主显示界面下进入选择功能界面、时间和闹铃修改状态下切换修改项目、修改完成退回主显示界面;4 键:时间和闹铃修改状态下直接退回主显示界面;5 键:主显示界面下控制闹铃的开关。2、开发测试环境选择开发软件选择了 ARM 公司的 KeiluVision4,仿真软件选择了英国 Labcenter electronics 公司的 proteus7 professional,测试硬件选择了普中的 HC6800 开发箱。首先在 KeiluVision4 下进行程序设计,编译通过后用 proteus7 professional 进行仿真并尝试下载到开发箱中进行操作,最后下载到开发箱中进行操作演示。二、液晶时钟程序设计1、功能状态转换图C51 液晶时钟设计报告 水漾天蓝22、主要功能模块注:本文中提到的函数均见附表 1 的液晶时钟源程序中,本次使用的是 1602 液晶。2.1 主显示模块主显示模块包含了时间显示模块 void TimeDisplay(void)函数,其运行过程为首先读取初始值,再通过定时器中断 TO 的中断服务函数 void T0_int () interrupt 1 来进行秒计时并通过 void TimeRunning(void)函数进行时间的加计数和进位运算;闹铃显示模块void AlarmDisplay(void),其运行过程为首先读取初始值,再通过 void AlarmRunning(void)来进行比较,如果预设时间与当前时间相等就将响铃标记变量SoundFlage_1 置为 1,进而引发主函数中的响铃事件。在闹铃显示模块还包含了闹铃开关控制模块,用于控制闹铃是否开启,若闹铃开启会,闹铃时间后就会显示“P”字母。主显示界面仿真结果如图 2:2.2 功能选择模块功能选择模块包含了 void Menu_display (void)函数,其运行过程为当按键 3 时间触发,切换到功能选择界面是显示时间修改及闹铃修改的提示,并等待按键 1(时间修改)事件或者按键 2(闹铃修改)事件。功能选择界面仿真结果如图 3:C51 液晶时钟设计报告 水漾天蓝32.3 时间修改模块时间修改模块主要通过调用时间显示函数和按键响应函数:按键读值 uchar GetKey(void)和响应 void QueryKeyboard(void),并通过时间设置标记变量 SetTimeFlage的值来判断是否执行时间修改。时间修改模式下计时会暂停,按键 1、按键 2、按键 3 以及按键 4 会响应,实现时间的加减、项目切换及退回主界面的操作。进行时间加减时,计数会循环变化,如:当时间为 23:59:59 时,时加会变为 00,分加会变为 00 并且时会加 1,秒同理;当时间为 00:00:00 时,时减会变为 23,分减会变为 59 并且时会减 1,秒同理。同时,当进入时间修改界面后三盏指示 LED 灯就会分别点亮,第一盏点亮表示时修改,第二盏点亮表示分修改,第三盏点亮表示秒修改(初始为时修改,可按按键 3 进行切换) 。时间修改界面仿真结果如图 4:2.4 闹铃修改模块闹铃修改模块与时间修改模块结构类似,通过调用闹铃显示函数和按键响应函数,并通过闹铃设置标记变量 SetAlarmFlage 的值来判断是否执行闹铃修改。闹铃修改模式下,计时不会暂停但闹铃不会响应,按键 1、按键 2、按键 3 以及按键 4 会响应,实现时间的加减、项目切换及退回主界面的操作。进行时间加减时,计数会循环变化,如:当闹铃时间为 23:59:59 时,时加会变为 00,分加会变为 00 并且时会加 1,秒同理;当时间为C51 液晶时钟设计报告 水漾天蓝400:00:00 时,时减会变为 23,分减会变为 59 并且时会减 1,秒同理。同时,当进入闹铃修改界面后三盏指示 LED 灯就会分别点亮,第一盏点亮表示时修改,第二盏点亮表示分修改,第三盏点亮表示秒修改(初始为时修改,可按按键 3 进行切换) 。闹铃修改界面仿真结果如图 5(见下一页):2.5.液晶使用模块本模块包含了,void init_lcd1602 (void) 1602 液晶初始化函数,void lcd_w_dat ( uchar dat )对 1602 液晶写数据函数 void lcd_w_cmd ( uchar com )对 1602 液晶写指令函数,void delay_us ( uchar t )延时函数,均为 1602 型液晶必须函数。2.6 其他辅助模块函数以及变量除了以上介绍的模块以外,本程序还编写了其他的辅助模块函数以及变量。如前面提到的 GetKey(void)读按键值函数,void QueryKeyboard(void)查询按键函数,还有SetTimeFlage 设置时间标志,DisplayFlage=0 显示标志,用于防止在发生中断时,切断当前的显示,防止造成显示乱码,SetAlarmFlage 设置闹钟标志,SetFlage 设置标志位,用于在设置选择时,防止在液晶第二行显示闹钟的时间,SoundFlage_1 用于控制的闹钟的开和关的标志位,SoundFlage_2 用于计算响铃的秒数,Alarm_ON 闹铃开关 point_dis、ring用于标志 0.5S,mes 用于定时器计时标志。三、小结本次设计是采用液晶显示,若仅是在液晶上显示时钟且无其他功能,程序的编写非常简单,但若加上可调闹铃、可调时间,那么程序设计上就要花费点功夫。编程调试时主要遇到如下问题:1、闹铃的响应,如果将整个模块放到 WHILE 中,可能会造成响铃时其他操作无法响应;2、时间和闹铃调节时液晶的响应与按键的关系,如果将整个调节进程放到显C51 液晶时钟设计报告 水漾天蓝5示函数中,由于液晶的特性就导致了按键按下却无响应的情况;3、设置时的显示提示,由于时间的调节需要调节时分秒三个项目,且切换到某个项目却无提示是没有意义的,但是实现时分秒的闪烁比较麻烦。解决方法:1、2:通过编写自定义函数,并设置对应的标记变量,用标记变量来控制对应函数的运行,进而解决了响应问题;3、通过外接 3 个 LED 灯,在设置时分秒时点亮对应的灯进行提示。四、附录1、使用说明本程序下载到 HC6800 单片机开发箱的使用方法如下:a. 连接:用短路帽将 MCU 的 P1.5 脚与蜂鸣器连接,用连接线(排线或者杜邦线)分别将 P30、P31、P32、P33 连接到独立按键的 K1、K2、K3、K4、K5;分别将 P10、P11、P12 连接到 8*1 的 LED 等的 D1、D2、D3,再在相应的位置插上 1602 型液晶屏。b. 操作方法:主界面下:按键 3(设置) 、按键 5(闹铃开关)有效,按下按键 3 可进入功能选择界面,按键 5 可实现闹钟的开和关。功能选择界面下:按键 1、按键 2 有效,按下按键 1 可进入时间修改界面,按下按键 2 可进入闹铃修改界面。时间修改界面:按键 1、按键 2、按键 3、按键 4、LED1(对应时) 、LED2(对应分) 、LED3(对应秒)有效。按键 1 能进行加 1 计数,按键 2 能进行减 1 计数,按键 3 能进行 LED13 的顺序切换(LED3 时再按一次则会回到主界面) ,按键 4可直接退回主界面。闹铃修改界面:与时间修改界面相同。2、参考文献资料a.单片机应用技术:C 语言版/王静霞主编.北京:电子工业出版社,2009.5C51 液晶时钟设计报告 水漾天蓝6b.百度文库。C51 液晶时钟设计报告 水漾天蓝3、附表 1液晶时钟源程序#include #define uchar unsigned char#define RingingTime 30 /定义闹钟响铃时间char Hour=23,Minute=59,Second=45; /定义时间的初始值char AHour=23,AMinute=59,ASecond=50; /定义闹钟的初始值sbit rs = P26; /设定液晶的相关管脚sbit rw = P25; sbit e = P27; sbit one_add = P30; /设定控制按键的 IO 口sbit two_lower= P31; sbit set_sel = P32;sbit quit = P33;sbit alarm_on = P34; sbit Sound = P15; /设定的蜂鸣器的 IO 口sbit LED1 = P10; /设定三盏 LED 的 IO 口,用于显示当前处于设置的时分秒sbit LED2 = P11;sbit LED3 = P12;uchar SetTimeFlage=0, /定义设置时间标志位DisplayFlage=0, /定义显示标志位,用于防止在发生中断时,切断当前的显示,防止造成显示乱码SetAlarmFlage=0, /定义设置闹钟标志位SetFlage=0, /定义设置标志位,用于在设置选择时,防止在液晶第二行显示闹钟的时间SoundFlage_1=0, /用于控制的闹钟的开和关的标志位SoundFlage_2=0, /用于计算响铃的秒数Alarm_ON=1; /闹铃开关point_dis=0,ring=0, /用于标志 0.5Smes=0;uchar table=“0123456789: “; /定义用于液晶显示的字符串数组uchar Display2=“1:Time 2:Alarm “; /定义显示选择菜单的内容uchar Display3=“Time :“; /定义显示时间 T 和闹钟 A 的内容uchar Display4=“Alarm:“;void init_lcd1602 (void); /声明 1602 液晶初始化函数void lcd_w_dat ( uchar dat ); /声明对 1602 液晶写数据函数void lcd_w_cmd ( uchar com ); /声明对 1602 液晶写指令函数void delay_us ( uchar t ); /声明延时函数C51 液晶时钟设计报告 水漾天蓝uchar GetKey(void); /声明读按键值函数void QueryKeyboard(void); /声明查询按键函数void SetTime(void); /声明设置时间函数void SetAlarm(void); /声明设置闹钟函数void Menu_display(void); /声明主菜单显示函数void Display(void); /声明显示函数void TimeDisplay(void); /声明时间显示void AlarmDisplay(void); /声明闹钟显示函数void TimeRunning(void); /声明时钟运行函数void AlarmRunning(void); /声明闹钟运行函数/*定时中断服务函数*/void T0_int () interrupt 1 /定时器 0 的中断入口函数TH0=15536/256; /读定时器 0 进行重新装载初始值TL0=15536%256;mes+; /计算定时器进入中断的次数,也用于计算秒if(mes5)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 量子力学原理入门:大学物理实验课程教案
- 高纯石英砂生产线项目可行性研究报告(参考范文)
- 2025年心理学中级职称考试试题及答案
- 2025年行政职业能力测验试题及答案
- 2025年天文学基础知识测试试卷及答案
- 2025年胜任力与职业发展考试试题及答案
- 2025年农业推广师职业考试试卷及答案
- 2025年经济政策分析与评估测试卷及答案
- 2025年国际关系理论相关考试试题及答案
- 2025年公共卫生政策与管理考试试题及答案
- GB/T 8923.2-2008涂覆涂料前钢材表面处理表面清洁度的目视评定第2部分:已涂覆过的钢材表面局部清除原有涂层后的处理等级
- 思想道德与法律修养案例
- 核辐射物理学基础知识课件
- 陶瓷装饰基础模拟题参考答案 中国地质大学
- 分词作定语的用法课件
- 中小企业管理成长诊断课件
- 《学术英语(综合)》课后答案
- 计算材料学:第一性原理计算及其应用课件
- 部编一年级《咕咚》课本剧
- 天津市新版就业、劳动合同登记名册
- 水电工程投标文件(技术标书)
评论
0/150
提交评论