版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、院 系: 计算机科学学院 专 业: 年 级: 学 号: 姓 名: 指导教师: 年 月 日年级班级学号专业姓名 题目名称实验一、GPIO实验实验设计要求1、首先双击工程文件,编译下载程序,观察实验现象,分析原因2、修改源代码,使得四个灯依次循环点亮,或两个一组循环点亮(使用两种方式控制LED灯,一种通过对寄存器赋值方式,另一种通过固件函数调用方式) 3、解释主函数中TimingDelay_Decrement的作用,delay()函数是一个死循环,程序通过什么方式从这个死循环中跳出来。 4、在自己的U盘上新建工程添加各类文件,使得自己新建的工程文件能够正常编译(若不能正常编译找出原因),下载后验证
2、实验现象与原始工程是否相同。实验设计思路(1) 硬件电路设计在EduKit-M3实验平台上,LED1、LED2、LED3、LED4分别与PC6、PC7、PC8、PC9相连,按键Key与PB9相连。(2) 软件程序设计 方法一:直接通过寄存器控制管脚的高低电平 1.通过设置GPIOB-ODR中第八位和第九位来控制PC8和PC9。 2.通过设置GPIOF-ODR中第七位和第六位来控制PC6和PC7。 3.用delay()来设置灯亮的长短。方法二:通过C函数控制管脚的高低电平 1.直接用GPIO_SetBits()和GPIO_ResetBits()两个函数来直接设置四个位为0或1,从而控制四个灯的亮
3、和灭。2.通过设置delay()中的值来控制灯亮的长短。实验步骤与结果分析1.在编译下载成功之后可以看到LED和LED2两个灯依次闪烁,LED3和LED4两个依次闪烁。2.通过修改左边的代码,结果为右边的代码 GPIOB-ODR = 0xfffffef;Delay(80);GPIOB-ODR = 0xfffffdff;Delay(80);GPIOB-ODR = 0xfffffcff;GPIOF-ODR = 0xffffffbf;Delay(80);GPIOF-ODR = 0xffffff7f;Delay(80);GPIOF-ODR = 0xffffff3f;GPIOB-ODR = 0xffff
4、feff;Delay(80);GPIOB-ODR = 0xfffffdff;Delay(80);GPIOF-ODR = 0xffffffbf;Delay(80);GPIOF-ODR = 0xffffff7f;Delay(80); temp=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8);if(temp=1)/GPIO_SetBits(GPIOB,GPIO_Pin_8); /Delay(80);/GPIO_ResetBits(GPIOB,GPIO_Pin_9);/Delay(80);else/GPIO_ResetBits(GPIOB,GPIO_Pin_8);/De
5、lay(80);/GPIO_SetBits(GPIOB,GPIO_Pin_9);/Delay(80); GPIO_SetBits(GPIOB,GPIO_Pin_9); Delay(80); GPIO_ResetBits(GPIOB,GPIO_Pin_9); GPIO_SetBits(GPIOB,GPIO_Pin_8); Delay(80); GPIO_ResetBits(GPIOB,GPIO_Pin_8); GPIO_ResetBits(GPIOB,GPIO_Pin_9); GPIO_SetBits(GPIOB,GPIO_Pin_7); Delay(80); GPIO_ResetBits(GP
6、IOB,GPIO_Pin_7); GPIO_SetBits(GPIOB,GPIO_Pin_6); Delay(80); GPIO_ResetBits(GPIOB,GPIO_Pin_6); GPIO_ResetBits(GPIOB,GPIO_Pin_7);或者为之后编译、下载都能观察到四个灯依次循环点亮。3. TimingDelay_Decrement是为了作为延时用的函数,通过中断可以退出。4.在自己U盘上重新建立工程时,编译等方面会出现很多的错误,最后发现是由于在建立工程时没有配置好,才导致后面的错误。实验结果分析: 通过本次实验达到了我们熟悉MDK开发平台的使用方法,学会新建、编译、调试和
7、下载工程。理解GPIO通用IO端口的配置和编程方法。理解IO端口高低电平与LED灯亮灭之间的关系的实验目的。主要程序代码分析1.初始化函数GPIO_InitStructure.GPIO_Pin =GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed = GPIO_Spe
8、ed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPI
9、OF, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化四灯为全亮 GPIO_SetBits(GPIOB,GPIO_Pin_8);GPIO_SetBits
10、(GPIOB,GPIO_Pin_9);GPIO_SetBits(GPIOF,GPIO_Pin_6);GPIO_SetBits(GPIOF,GPIO_Pin_7);2.Delay延时函数void Delay(uint32_t nTime)TimingDelay = nTime;while(TimingDelay != 0);通过中断来实现延时void TimingDelay_Decrement(void)if (TimingDelay != 0x00) TimingDelay-; 3.设置PC6PC9函数方法一: GPIOB-ODR = 0xfffffeff; /Delay(80);GPIOB-
11、ODR = 0xfffffdff;Delay(80);GPIOB-ODR = 0xfffffcff;GPIOF-ODR = 0xffffffbf;Delay(80);GPIOF-ODR = 0xffffff7f;Delay(80);GPIOF-ODR = 0xffffff3f; 方法二: GPIO_SetBits(GPIOB,GPIO_Pin_9); Delay(80); GPIO_ResetBits(GPIOB,GPIO_Pin_9); GPIO_SetBits(GPIOB,GPIO_Pin_8);Delay(80); GPIO_ResetBits(GPIOB,GPIO_Pin_8); GP
12、IO_ResetBits(GPIOB,GPIO_Pin_9); GPIO_SetBits(GPIOB,GPIO_Pin_7); Delay(80); GPIO_ResetBits(GPIOB,GPIO_Pin_7); GPIO_SetBits(GPIOB,GPIO_Pin_6); Delay(80); GPIO_ResetBits(GPIOB,GPIO_Pin_6); GPIO_ResetBits(GPIOB,GPIO_Pin_7); 心得体会成绩评定教师签名: 年 月 日年级班级学号专业姓名题目名称实验二、TIMERx定时器实验实验设计要求了解TIMER定时器的配置方法,理解预分频系数Pre
13、scaler与计数时钟频率之间的关系,能分析出计数初值与计数时钟频率以及更新频率之间的关系。实验设计思路仿真软件程序设计 1.通过配置TIMER定时器来实现刷新的频率,并且通过公式: T看门狗=1 / (MCLK / (预分频值+1) / 分频除法系数 )来实现想要的刷新频率。 2.因为的到的是刷新频率,所以最后的公式应用上有一点变化,如果想要的到一个1K的频率,那么刷新频率必须设置为2K。 3.那么左后只要通过设置分频除法系数就能得到我们想要的频率。实验步骤与结果分析1.通过编译、下载、仿真可以看到我们想要的结果 图 2-1 2.得到一个1K的仿真频率 2.1 因为得到的是更新频率,所以根据
14、公式: 计数初值 CCRx_Val = TIM2计数时钟频率 / 更新频率 所以有 CCRx_Val = 0X1700 2.2 在工程中将对应的CCRx_Val值改为0X1770,然后编译、仿真、测频率,如图所示:图 2-2实验结果分析:通过本次实验达到了开始的实验目的和要求,加强对TIMERx定时器的理解和使用,以及在仿真过程中学会了怎样应对出现的问题。主要程序代码分析1. CCRx_Val 的设置TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;vu16 CCR1_Val
15、= 0x1770; / CCRx_Val = TIM2计数时钟频率 / 更新频率vu16 CCR2_Val = 0x4000;vu16 CCR3_Val = 0x2000;vu16 CCR4_Val = 0x1000;ErrorStatus HSEStartUpStatus;2. 计数时钟基础设置/* -TIM2 Configuration: Output Compare Toggle Mode:TIM2CLK = 36 MHz, Prescaler = 0x2, TIM2 counter clock = 12 MHzCC1 update rate = TIM2 counter clock /
16、 CCR1_Val = 2K HzCC2 update rate = TIM2 counter clock / CCR2_Val = 732.4 HzCC3 update rate = TIM2 counter clock / CCR3_Val = 1464.8 HzCC4 update rate = TIM2 counter clock / CCR4_Val = 2929.6 Hz- */* Time base configuration */TIM_TimeBaseStructure.TIM_Period = 0xFFFF;TIM_TimeBaseStructure.TIM_Prescal
17、er = 0x02;TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);3. 仿真管脚设置#define TIM_IT_Update (u16)0x0001)#define TIM_IT_CC1 (u16)0x0002)#define TIM_IT_CC2 (u16)0x0004)#define TIM_IT_CC3 (u16)0x0008)#d
18、efine TIM_IT_CC4 (u16)0x0010) #define TIM_IT_COM (u16)0x0020)#define TIM_IT_Trigger (u16)0x0040) #define TIM_IT_Break (u16)0x0080) 在仿真的logic Analyzer中的setup中将要观察的管脚设置成相应的值。4.更新画图 if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) TIM_ClearITPendingBit(TIM2, TIM_IT_CC1 );/开中断capture1 = TIM_GetCapture1(T
19、IM2);/capture1 = TIMx-CCR1;/TIM_GetCapture1获得输入捕获的值/TIMx-CCR1TIM_SetCompare1(TIM2, capture1+CCR1_Val ); /TIMx-CCR1 = TIMx-CCR1;/TIM_SetCompare1设置比较捕获寄存器值/TIMx-CCR1 = Compare1 获取输入捕获的值,比较现在的值,相等时则输出依次更新。心得体会成绩评定教师签名: 年 月 日年级班级学号专业姓名 题目名称实验三、LCD显示实验实验设计要求了解LCD屏的显示机理,学会使用字模软件生成不同字体和大小的点阵编码,理解不同字体的显示方式和
20、技巧。学会LCD的初始化操作。实验设计思路(1) 硬件电路设计 加入一块LCD显示屏,根据电路板将显示屏插入相应的位置。(2) 软件程序设计 1.通过字模软件获取的到我们想要的字模对应的点阵。 2.将得到的字模对应的点阵拷贝到工程相应的位置。 3.在修改过后,也相应修改相应的代码。 4.显示和排版想要在LCD上显示的文字。实验步骤与结果分析1.在编译、下载之后,会在LCD上显示相应的英文字母和数字。2.通过修改显示学号和名字,如图所示:图3-1实验结果分析:通过本次实验,达到了实验预期的效果,学会了用怎样实现在LCD上显示中文名,和学号等功能。主要程序代码分析1.初始化和排版显示学号姓名lcd
21、_init(); cd_init(); TOUCH_init(); /显示 蓝良贵 lcd_display_string( , BLACK, GREEN, 0, 1 ); /lcd_display_string( WAVESHARE , BLACK, GREEN, 0, 2 ); lcd_display_GB2312(0,BLACK, GREEN, 0, 3); lcd_display_GB2312(1,BLACK, GREEN, 1, 3); lcd_display_GB2312(2,BLACK, GREEN, 2, 3); /显示 杨岸 lcd_display_string( , BLAC
22、K, GREEN, 0, 4 ); /lcd_display_string( WAVESHARE , BLACK, GREEN, 0, 2 ); lcd_display_GB2312(3,BLACK, GREEN, 0, 5); lcd_display_GB2312(4,BLACK, GREEN, 1, 5); /显示 盖一宁 lcd_display_string( , BLACK, GREEN, 0, 6 ); /lcd_display_string( WAVESHARE , BLACK, GREEN, 0, 2 ); lcd_display_GB2312(5,BLACK, GREEN, 0
23、, 7); lcd_display_GB2312(6,BLACK, GREEN, 1, 7); lcd_display_GB2312(7,BLACK, GREEN, 2, 7);2.字模点阵extern const unsigned int color;extern const unsigned char ascii;extern const unsigned char GB2312175;/定义const unsigned char GB2312175=/修改一个字有175个16进制数/蓝/*- 宋体26; 此字体下对应的点阵为:宽x高=35x35 -*/*- 宽度不是8的倍数,现调整为:宽
24、度x高度=40x35 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x1C,0x07,0x00,0x00,0x00,0x1C,0x07,0x00,0x00,0x00,0x18,0x06,0x06,0x00,0x00,0x18,0x06,0x0F,0x00,0x3F,0xFF,0xFF,0xFF,0x80,0x00,0x18,0x06,0x00,0x00,0x00,0x18,0x06,0x00,0x00,0x00,0x10,0x14,0x00,0x00,0x00,0x18,0x3C,0x00,0x00,0x07,0x1E,0
25、x3C,0x18,0x00,0x07,0x9C,0x3F,0xFC,0x00,0x07,0x1C,0x7F,0xFE,0x00,0x07,0x1C,0x70,0x00,0x00,0x07,0x1C,0x6F,0x00,0x00,0x07,0x1C,0xE3,0xC0,0x00,0x07,0x1C,0xC1,0xE0,0x00,0x07,0x1D,0x80,0xF0,0x00,0x07,0x1F,0x00,0x70,0x00,0x06,0x18,0x00,0x30,0x00,0x01,0x80,0x00,0x60,0x00,0x01,0xFF,0xFF,0xF0,0x00,0x01,0xC6,0
26、x18,0x70,0x00,0x01,0xC6,0x18,0x60,0x00,0x01,0xC6,0x18,0x60,0x00,0x01,0xC6,0x18,0x60,0x00,0x01,0xC6,0x18,0x60,0x00,0x01,0xC6,0x18,0x60,0x00,0x01,0xC6,0x18,0x63,0x00,0x7F,0xFF,0xFF,0xFF,0x80,0x3F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: 盖 -
27、*/*- 宋体26; 此字体下对应的点阵为:宽x高=35x35 -*/*- 宽度不是8的倍数,现调整为:宽度x高度=40x35 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x30,0x07,0x00,0x00,0x00,0x1C,0x07,0x80,0x00,0x00,0x0E,0x06,0x00,0x00,0x00,0x0E,0x0C,0x00,0x00,0x00,0x0E,0x08,0x18,0x00,0x07,0xFF,0xFF,0xFC,0x00,0x07,0x80,0xE0,0x00,0x00,0x00,0x0
28、0,0xE0,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0xE0,0x30,0x00,0x03,0xFF,0xFF,0xF8,0x00,0x01,0x00,0xE0,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0xE0,0x0E,0x00,0x0F,0xFF,0xFF,0xFF,0x00,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF0,0x00,0x03,0xF
29、F,0xFF,0xF8,0x00,0x03,0x86,0x1C,0x30,0x00,0x03,0x86,0x1C,0x30,0x00,0x03,0x86,0x1C,0x30,0x00,0x03,0x86,0x1C,0x30,0x00,0x03,0x86,0x1C,0x30,0x00,0x03,0x86,0x1C,0x30,0x00,0x03,0x86,0x1C,0x30,0x00,0x03,0x86,0x1C,0x31,0x00,0x03,0x86,0x1C,0x33,0x80,0x7F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x0
30、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,3.汉字显示/宽度x高度=40x35void lcd_display_GB2312( unsigned char gb, unsigned int color_front, unsigned int color_background, unsigned char postion_x, unsigned char postion_y )unsigned char i,j,b;unsigned char *p;LCD_WRITE_COMMAND(0x210,postion_x*35); /x start point
31、LCD_WRITE_COMMAND(0x238,postion_y*40); /y start pointLCD_WRITE_COMMAND(0x211,postion_x*35+39);/x end pointLCD_WRITE_COMMAND(0x213,postion_y*40+39);/y end pointLCD_WRITE_COMMAND(0x200,postion_x*35);LCD_WRITE_COMMAND(0x201,postion_y*40);LCD_RS_L();LCD_WRITE_REG(0x202);/RAM Write indexLCD_CS_L();p = (u
32、nsigned char *)GB2312;p += gb*175;for(j=0;j175;j+)b=*(p+j);for(i=0;i8;i+)if(b&0x80)LCD_WRITE_DATA(color_front);elseLCD_WRITE_DATA(color_background);b=b1;LCD_CS_H();心得体会成绩评定教师签名: 年 月 日年级班级学号专业姓名题目名称实验一、USART有线无线串口实验实验设计要求解USART串口的初始化配置方法,学会串口软件的使用方法,能利用串口软件配置波特率、停止位等信息,学会蓝牙模块的连接和配对方式,能用手机蓝牙与蓝牙接收模块完成配
33、对。掌握将前面的三个独立实验程序整合为一个完整程序的方法。实验设计思路(1) 硬件电路设计 在原有的实验开发板上加上USART无线接收模块,并加上LCD显示器,外加带有蓝牙功能的手机一部,手机内带有蓝牙串口精灵软件。(2) 软件程序设计 1.将连接好无线模块后,打开手机蓝牙串口精灵软件,并与开发板上的无线模块进行配对连接,出事配对密码为1234,如若无法分辨那个是自己的,则通过观察mac地址来辨认。 2.工程通过编译后下载到实验开发板上,然后手机开始发送先要显示的字符,一般以X结尾(X作为结尾字符,不显示)。 3.在LCD上显示中文。实验步骤与结果分析1.在插无线模块时要错开一个管脚,才能正好对应相应的管脚。2.在编译、下载成功后在LCD上显示出初始化的字符,然后显示由手机蓝牙发送的数据,原理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省南京秦淮外国语校初三4月质量检测试题数学试题含解析
- 2025-2026学年湖北省黄冈市东坡中学初三下学期第二次调研考试物理试题试卷含解析
- 2026年大学大一(教育学)教育心理学基础测试题及答案
- 护理职业精神与人文关怀
- 护理不良事件的风险评估与控制
- 《这儿真美》习作课例研究的启示
- 护理应急调配效果跟踪
- 2026六年级数学上册 比推理能力
- 2026五年级数学上册 多边形面积的难点攻克
- 2026六年级数学上册 数与形综合能力训练
- 2025秋形势与政策课件-聚焦建设更高水平平安中国
- 常州机电单招考试真题及答案
- GB/T 45305.2-2025声学建筑构件隔声的实验室测量第2部分:空气声隔声测量
- 国际市场营销(第7版·数字教材版)课件全套 第1-14章 国际市场营销导论-国际市场营销新趋势
- 2025年新伐木工安全员考试题库及答案
- 2025年深圳市中考数学试题(含答案解析)
- 订单评审培训
- 2025至2030游艇行业产业运行态势及投资规划深度研究报告
- 吊篮安装拆卸工三级安全教育题库
- 雅佳电吹管说明书
- 物理●江西卷丨2024年江西省普通高中学业水平选择性考试物理试卷及答案
评论
0/150
提交评论