《单片机实验报告1.doc》由会员分享,可在线阅读,更多相关《单片机实验报告1.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机实验报告1单片机实验报告 一、 实验目的 1.理解 32 位单片机STM32 系列原理及其应用,熟悉单片机的资,掌握单片机的最小系统设计及扩展技术,掌握单片机的编程语言。2.通过本实验理解 LCD 液晶工作原理,能通过编程操作液晶的显示。3.通过本实验理解以太网的通信原理,能在计算机与实验系统间通过以太网进展数据传输。二 、 实验设备 STM32 实验系统一套,PC 机一台。三 、 实验原理 1.I/O 口及定时器实验:STM32 的 GPIO 口控制 4 个发光二极管,理解其硬件连接方式,学会使用 STM32 的一个定时器,掌握对定时器计时方式的编程。编写程序循环点亮 4 个发光二极管
2、,控制点亮时间为 1 秒钟闪烁。2.LCD 实验:掌握 STM32 单片机与液晶之间的硬件连接方式,单片机如何驱动液晶进展显示。3.串行口通信实验:掌握 STM32 单片机与计算机之间的硬件连接方式,理解二者之间的传输协议,进展数据传输。四 、 内容与步骤 1.学会使用 IAR 的编译链接调试环境,熟悉 IAR 中有关 STM32 使用到的库,并能顺利建立包含各种库文件的工程。2.I/O 口实验:在建立工程的根底上能点亮发光二极管。3.定时器实验:循环定时用定时器做点亮 4 个灯,即每 1 秒闪烁点亮一个灯,循环往复或叫跑马灯实验。4.LCD 实验:通过自行编写库文件和理解液晶显示字库,能在液
3、晶上显示“北京航空航天大学机械工程及自动化学院”字样。5.串行口通信实验:编写串行口通信实验程序,能在计算机与 STM32 系统间进展ASCII 码的传输。五 、 关键代码 1.I/O 口及定时器实验 /通过定时器 4 中断函数实现跑马灯 void TIM4_IRQHandler /定时器 4 中断函数 if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) TIM_ClearITPendingBit(TIM4, TIM_IT_Update); switch (aaa) case 0: GPIO_ResetBits(GPIOD, GPIO_Pin_
4、11); GPIO_SetBits(GPIOD, GPIO_Pin_8);break; case 1: GPIO_ResetBits(GPIOD, GPIO_Pin_8); GPIO_SetBits(GPIOD, GPIO_Pin_9);break; case 2: GPIO_ResetBits(GPIOD, GPIO_Pin_9); GPIO_SetBits(GPIOD, GPIO_Pin_10); break; case 3: GPIO_ResetBits(GPIOD, GPIO_Pin_10); GPIO_SetBits(GPIOD, GPIO_Pin_11); break; aaa+;
5、 if(aaa=4) aaa=0; int main RCC_Configuration; /配置系统时钟 NVIC_Configuration; /配置中断 GPIO_Initialize; /初始化 I/O 口 TIME_Initialize; /初始化定时器 4 while(1); 2.LCD 实验 /在字体库文件中创立汉字点阵数组 hanzi1432,而后逐个显示字体库中的汉字 const unsigned char hanzi1432= 04,0_40,04,0_40,04,0_40,04,0_44,04,0_4E,0_7C,0_58,04,0_60,04,0_40,04,0_40,
6、 04,0_40,0C,0_40,0_34,0_42,0_E4,0_42,0_44,0_42,04,0_3E,00,00, /北 02,00,01,08,0_7F,0_FC,00,00,00,00,0_1F,0_F0,0_10,0_10,0_10,0_10,0_1F,0_F0, 01,00,09,0_30,0_19,0_18,0_31,0C,0_41,08,05,00,02,00, /京 &bd;, /汉字点阵数组,这里只给出了“北”和“京”,全部的有“汤志达贾英杰北京航空航天大学” void LCD_ShowHZ(u8 _, u16 y, u8 num, u8 size, u16 PenCo
7、lor, u16 BackColor) /显示单个 16_16 汉字 #define MA_CHAR_POS_ 232 #define MA_CHAR_POSY 304 u8 temp; u8 pos,t; if(_MA_CHAR_POS_|yMA_CHAR_POSY) / 超过显示范围,退出 return; if(_Y) / 竖屏显示 LCD_dowMa_(_,y,_+size,y+size); /设置窗口 LCD_WriteReg(0_11, 0_6870); LCD_SetCursor(_, y); else /横屏显示 LCD_dowMa_(_,y-size,_+size,y); /设
8、置窗口 LCD_WriteReg(0_11, 0_6858); LCD_SetCursor(_, y-1); /设置光标位置 LCD_WriteRAM_Prepare; /开场写入 GRAM for(pos=0;possize_2;pos+) temp=hanzinumpos; /调用汉字点阵数组 for(t=0;tsize/2;t+) if(temp0_80) /从高位开场 LCD_WR_DATA(PenColor); /画字体颜色一个点 else LCD_WR_DATA(BackColor); /画背景颜色一个点 temp=1; LCD_dowMa_(0000,0000,240,320);
9、 /恢复窗体大小 int main(void) RCC_Configuration; /时钟配置 LCD_Init; /初始化 LCD 模块 LCD_Clear(WHITE); for(u8 i=0;i3;i+) LCD_ShowHZ(50+i_16, 100, i, 16, RED, WHITE); for(;i6;i+) /显示“贾英杰” LCD_ShowHZ(130+i_16, 100, i, 16, RED, WHITE); for(;i14;i+) /显示“北京航空航天大学” LCD_ShowHZ(50+i_16, 20_, i, 16, RED, WHITE); while(1);
10、 3.串行口通信实验 /通过串口通信不断向上位机发送“buaa” void Uart1_PutChar(u8 ch) /发送单个字符 USART_SendData(USART1, ch); while (USART_GetFlagStatus(USART1, USART_FLAG_T_E) = RESET); int main RCC_Configuration; USART1_Configuration ; /需正确设置波特率 while(1) char a10=“buaa”; for(int i=0;ai!=0;i+) Uart1_PutChar(ai); 任课老师评语:任课老师签字:考核日期:年 月 日 第 4 页 共 4 页