




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.5基于LCD的数字式转盘手表一、 实验目的学会使用图形库二、 实验设备计算机、LM3S9B92开发板、USB A型公口转 Mini B型 5Pin 数据线1 条三、 实验原理TI Stellaris系列Cortex-M3系列MCU的方便强大,StellarisWare软件库提供的快速软件开发解决方案功丌可没。作为TI StellarisWare软件包的一部分,StellarisWare图形库(Grlib)提供了一套比较完整的MCU图形显示方案,既可以进行基础的图形、文字绘制,也可以轻松实现PC机上常见的,基于消息的控件(Widget)。Stellaris图形库应用起来比较简单,可以从Ste
2、llaris图形库的基本结构来学习。Stellaris图形库可以分为3个功能次层:显示驱动层、图形原型层和控件层。四、 实验要求应用stellarisWare图形库在开发板的彩色LCD上绘制一个转盘表如windows系统内带的时钟表,要求能显示时、分、秒,并能够在设置时间的基础上,动态修改时间。五、 实验步骤1、 连接实验设备:使用USB mini B线缆的mini端与开发板ICDI口相连,另一端接到PC机的USB插口上。2、 根据实验要求编写、调试、运行程序。并要求在代码上附上相关的注释。3、 书写实验报告,并在报告内描述设计思路,要求附上程序流程图。#include "inc/h
3、w_types.h"#include "driverlib/interrupt.h"#include "driverlib/sysctl.h"#include "driverlib/rom.h"#include "grlib/grlib.h"#include "grlib/widget.h"#include "grlib/canvas.h"#include "grlib/pushbutton.h"#include "drivers/ki
4、tronix320x240x16_ssd2119_8bit.h"#include "drivers/touch.h"#include "drivers/set_pinout.h"#include "driverlib/systick.h"#include<math.h>/ main函数外声明驱动库中定义的tDisplay对象extern const tDisplay g_sKitronix320x240x16_SSD2119;/=/*/ 提前声明要使用到的控件。(后文为建立控件树可能会相互引用)/*extern
5、tCanvasWidget g_sBackground;extern tPushButtonWidget g_sPushBtn;/*/ 提前声明按钮按下时的处理凼数。/*void OnButtonPress(tWidget *pWidget);/*/ 创建并定义各控件。/ 包括3个画布控件(背景、标题、Hello World显示),一个按钮控件。/*/ 作为屏幕背景的画布控件Canvas(g_sBackground, WIDGET_ROOT, 0, &g_sPushBtn,&g_sKitronix320x240x16_SSD2119, 0, 0, 320, 40,CANVAS_
6、STYLE_FILL, ClrBlack, 0, 0, 0, 0, 0, 0);/ 用于点击,以显示“Hello World”的按钮控件RectangularButton(g_sPushBtn, &g_sBackground, 0, 0,&g_sKitronix320x240x16_SSD2119, 60, 0, 200, 40,(PB_STYLE_OUTLINE | PB_STYLE_TEXT_OPAQUE |PB_STYLE_TEXT | PB_STYLE_FILL | PB_STYLE_RELEASE_NOTIFY),ClrDarkBlue, ClrBlue, ClrWh
7、ite, ClrWhite,&g_sFontCmss22b, "start", 0, 0, 0, 0,OnButtonPress);/ 声明绘图上下文tContext sContext;/声明函数void drawstring(char*);void drawclock(int s,int m,int h);void clockinit(void);int h,m,s;/时分秒int time1=0;char a10;int flag=0;/标记是否开始计时double clocksin60;/记录sin cos值double clockcos60;int main
8、(void)int i;/ 设置系统时钟为50MHzSysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL |SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);/ 初始化显示驱动PinoutSet();Kitronix320x240x16_SSD2119Init();/ 初始化触摸驱动程序。TouchScreenInit();/ 设置触摸驱动凼数的回调凼数为图形库的处理凼数。TouchScreenCallbackSet(WidgetPointerMessage);/ 初始化StellarisWare图形库上下文GrContextI
9、nit(&sContext, &g_sKitronix320x240x16_SSD2119);SysTickPeriodSet(10000000); / 设置 SysTick 计数器的周期值 SysTickIntEnable( ); / 使能 SysTick 中断IntMasterEnable( ); / 使能处理器中断h=0;m=0;s=0;a9='0'a8=' 'a5=':'a2=':'time1=0;for(i=0;i<60;i+)/初始化sin cos值clocksini=sin(2*3.1415/6
10、0*i);clockcosi=cos(2*3.1415/60*i);clockinit();/ =/ 设置画笔为黄色GrContextForegroundSet(&sContext, ClrYellow);/ 设置字体为 Cm, 30 号,粗体GrContextFontSet(&sContext, &g_sFontCm30b);WidgetAdd(WIDGET_ROOT, (tWidget *)&g_sBackground);/ 绘制控件树中的所有控件。WidgetPaint(WIDGET_ROOT);while(1)/ 处理所有控件事件。WidgetMessa
11、geQueueProcess();void OnButtonPress(tWidget *pWidget)if(flag=0)flag=1;SysTickEnable( ); / 使能 SysTick 计数器PushButtonTextSet(&g_sPushBtn, "stop");elseflag=0;SysTickDisable( ); / 关闭 SysTick 计数器PushButtonTextSet(&g_sPushBtn, "start");WidgetPaint(WIDGET_ROOT);SysCtlDelay(1000 *
12、 (50000000 / 3000); / 延时约 10ms/ SysTick 计数器的中断服务函数void SysTick_ISR(void)time1+;if(time1=5)s+;time1=0;if(s=60)m+;s=0;if(m=60)h+;m=0;drawstring(a);drawclock(s,m,h);return;void drawstring(char* a)/显示数字时钟a7=s%10+'0'a6=(s-s%10)/10%10+'0'a4=m%10+'0'a3=(m-m%10)/10%10+'0'a1=h
13、%10+'0'a0=(h-h%10)/10%10+'0'GrContextForegroundSet(&sContext, ClrYellow);GrStringDraw(&sContext, a, 10, 100, 210, true);GrFlush(&sContext);void drawclock(int s,int m,int h)/画时钟秒针GrContextForegroundSet(&sContext, ClrBlack);if(s!=0)GrLineDraw(&sContext, 160, 120, 16
14、0+floor(60*clocksins-1), 120-floor(60*clockcoss-1);elseGrLineDraw(&sContext, 160, 120, 160+floor(60*clocksin59), 120-floor(60*clockcos59);if(m!=0)GrLineDraw(&sContext, 160, 120, 160+floor(50*clocksinm-1), 120-floor(50*clockcosm-1);elseGrLineDraw(&sContext, 160, 120, 160+floor(50*clocksin
15、59), 120-floor(50*clockcos59);if(h!=0)GrLineDraw(&sContext, 160, 120, 160+floor(40*clocksinh-1), 120-floor(40*clockcosh-1);elseGrLineDraw(&sContext, 160, 120, 160+floor(40*clocksin59), 120-floor(40*clockcos59);GrContextForegroundSet(&sContext, ClrYellow);GrLineDraw(&sContext, 160, 12
16、0, 160+floor(60*clocksins), 120-floor(60*clockcoss);GrContextForegroundSet(&sContext, ClrBlue);GrLineDraw(&sContext, 160, 120, 160+floor(50*clocksinm), 120-floor(50*clockcosm);GrContextForegroundSet(&sContext, ClrRed);GrLineDraw(&sContext, 160, 120, 160+floor(40*clocksinh), 120-floor(40*clockcosh);GrFlush(&sContext);void clockinit(void)/时钟表盘初始化int i;GrContextForegroundSet(&sContext, ClrYellow);GrCircleDraw(&sContext, 160, 120, 70);for(i=0;i<60;i+)if(i%5=0)GrLineDraw(&sContext, 160+floor(62*clocksini), 120-floor(62*clockcosi), 160+floor(70*clocks
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年室内装饰装修设计师职业技能知识考试题与答案
- 城乡低保政策培训资料
- 会计做账实操培训
- 城市交通规划合同管理软件咨询重点基础知识点
- 【培训课件】构建企业法律风险防控策略体系
- 车位抵押借款合同协议
- 海螺合作协议书
- 进购物店合同补充协议
- 转让成果协议书范本
- 正式分家协议书
- 北京2025年中国环境监测总站招聘(第二批)笔试历年参考题库附带答案详解
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 2021年妊娠期血压管理中国专家共识
- 一种基于STM32的智能门锁系统的设计-毕业论文
- 基于单片机的电话拨号系统的设计毕业论文
- 叉车产品数据表
- 交通工程设施设计设计报告
- 高填方、深挖路堑边坡和软基监测方案
- 机器人学导论(课堂PPT)
- Kappa量测能力测评及评价
- 机电设备维修与管理专业毕业论文30442
评论
0/150
提交评论