2014级北航单片机实验报告_第1页
2014级北航单片机实验报告_第2页
2014级北航单片机实验报告_第3页
2014级北航单片机实验报告_第4页
2014级北航单片机实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北航研究生单片机实验报告北航研究生单片机实验报告北京航空航天大学研究生课程考核记录2014-2015学年第一学期学号 姓名 成绩课程名称:《 单片机系统实验》论文题目:实验报告任课教师评语:任课教师签字: 考核日期: 年 月 日一、实验目的32(STM32系列掌握单片机的最小系统设计及扩展技术,掌握单片机的编程语言。LCD液晶工作原理,能通过编程操作液晶的显示。二、实验设备STM32实验系统一套,PC机一台。三、实验原理I/O口及定时器实验:STM32GPIO4个发光二极管,了解其STM3241秒钟闪烁。LCDSTM32何驱动液晶进行显示。四、内容与步骤IARIARSTM32库,并能顺利建立包含各种库文件的工程。I/O口及定时器实验:循环定时(用定时器做)41闪烁点亮一个灯,循环往复(或叫跑马灯实验。LCD“北京航空航天大学机械工程及自动化学院”字样。五、实验程序实验一:I/O口及定时器实验STM32GPIO4LED灯的点亮时间为1秒。LED1LEDPD8~PD11I/O4LEDLEDI/O口输LED灯。北航研究生单片机实验报告北航研究生单片机实验报告图1LED灯硬件原理图实验中选择定时器TIM2,系统时钟是72MHz需要配置的关键参数是时钟预分频数TIM_Prescaler和自动重装载寄存器周期的TIM_Period1TIM27200TIM_Prescaler=7199TIM_Period=9999。其计算过程如下:秒1+TIM_Prescaler_Period)720010000秒72M 72M程序代码如下:#include"stm32f10x.h"#define_TIM#define_TIM2/*配置系统时钟,设置系统时钟为72MHz*/voidRCC_Configuration(){ErrorStatusHSEStartUpStatus; //HSEStartUpStatusRCC_DeInit(); //复位系统时钟RCC_HSEConfig(RCC_HSE_ON); //开启HSEStartUpStatus=RCC_WaitForHSEStartUp(); //等待HSE起振if(HSEStartUpStatus==SUCCESS){FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);FLASH_SetLatency(FLASH_Latency_2);RCC_HCLKConfig(RCC_SYSCLK_Div1);//选择HCLK时钟源为SYSCLK1分频RCC_PCLK2Config(RCC_HCLK_Div1);//PCLK2HCLK1分频RCC_PCLK1Config(RCC_HCLK_Div2);//PCLK1HCLK2分频RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//选择PLL时钟源为HSE1分频,9倍频RCC_PLLCmd(ENABLE); //PLLwhile(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//等待PLL输出稳定RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//系统时钟为PLLwhile(RCC_GetSYSCLKSource()0x08); //PLL为系统时钟源}RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 RCC_APB2Periph_GPIOA RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);}/*GPIOD初始化设置*/voidGPIOinit(){GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_PinGPIO_Pin_All; //GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;//I/O口50MHz输出速度GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置I/O口推挽输出GPIO_Init(GPIOD,&GPIO_InitStructure); //D端口}/*初始化定时器*/voidtime_init(void){ //系统时钟72MHz:7200分频 1秒中断一次,向上计数TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);TIM_TimeBaseStructure.TIM_Period9999; //自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler=7200-1; //时钟预分频数TIM_TimeBaseStructure.TIM_ClockDivision=0; //时间分割值TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);//初始化定时器TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //开定时器中TIM_Cmd(TIM2,ENABLE); //使能定时器//使能TIM2中断NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //配置中断分NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn; //配置中断线路NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//配置抢占优先级为0NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//配置从占优先级为0NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //打开NVIC使NVIC_Init(&NVIC_InitStructure); //初始化}inti=0;void{RCC_Configuration(); //配置系统时钟GPIOinit(); //GPIOD初始time_init(); //while(1){switch(i){case0:GPIO_Write(GPIOD,0x0100);break;//PD811:GPIO_Write(GPIOD,0x0200);break;//PD912:GPIO_Write(GPIOD,0x0400);break;//PD1013:GPIO_Write(GPIOD,0x0800);break;//PD111}}}中断服务函数:voidTIM2_IRQHandler(void){if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET){TIM_ClearITPendingBit(TIM2,TIM_IT_Update);i++;if(4==i=0;}}运行上述程序可以循环点亮4个LED灯,时间间隔为1秒。实验二:LCD 实验借助字模提取软件提取字模点阵数据并存储。LCD显示采用SSD1298驱动GRAM命令,调用汉字显10设置地址自增方式和顺序的语句为:#defineDataToWrite(DATA)GPIO_Write(GPIOE,DATA)LCD_WriteReg(0x11,0x6870);void LCD_WriteReg(uint16_tLCD_Reg,uint16_tLCD_RegValue){LCD_WR_REG(LCD_Reg); //写寄存器LCD_WR_DATA(LCD_RegValue); //写数据}void LCD_WR_DATA(uint16_tLCD_Data){LCD_RD(1); //读失能LCD_CS(0);LCD_RS(1); //1表示数据DataToWrite(LCD_Data);LCD_WR(0);LCD_WR(1); //上升沿写入LCD_CS(1);}0x6870置,实现地址自增方向和顺序选择从左到右,再从上到下。实现从高位开始读取则需对每个字节的数据temp进行如下操作:for(t=0;t<8;t++){if(temp&0x80) //从高位开始{}else

LCD_WR_DATA(PenColor); //LCD_WR_DATA(BackColor); //temp<<=1;}关键程序代码://Led.c文件/********************************************************************Function name: void LCD_Showhanzi(u16x, u32 y,u8ii,u8 size, PenColor,u16BackColor)**Descriptions: 显示一个字符**inputparameters: x,y 起始坐标(x:0~234y:0~308)num ASCII码值size 字符大小,使用默认PenColor 字体颜色BackColor字体背景颜色**outputparameters: 无**Returnedvalue: 无********************************************************************/voidLCD_Showhanzi(u16x,u32y,u8ii,u8size,u16PenColor,u16BackColor){#defineMAX_CHAR_POSX232#defineMAX_CHAR_POSY304u16u8pos,t;if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY)return;//超过显示范围,直接退出if(XY) //竖屏显示{LCD_WindowMax(x,y,x+size,y+size); //LCD_WriteReg(0x11,0x6870);LCD_SetCursor(x,y);}else //横屏显示{LCD_WindowMax(x,y-size/2,x+size,y); //LCD_WriteReg(0x11,0x6858);LCD_SetCursor(x,y-1); //设置光标位置}LCD_WriteRAM_Prepare(); //for(pos=0;pos<size*2;pos+=1){temp=hanzi[ii][pos]; //1608for(t=0;t<8;t++){if(temp&0x80) //从高位开始{}else

LCD_WR_DATA(PenColor); //画字体颜色一个点LCD_WR_DATA(BackColor); //画背景颜色一个点temp<<=1;}}LCD_WindowMax(0x0000,0x0000,240,320); //恢复窗体大小}//主函数intmain(void){RCC_Configuration(); //时钟配置LCD_Init(); //初始化LCD模LCD_Clear(WHITE);for(u8i=0;i<8;i++){ //设置相邻两个字起点相距20(>1,竖排显示LCD_Showhanzi(40,100+i*20,i,16,RED,WHITE); //汉字显示函}while(1);}//字模数据constunsignedcharhanzi[8][32]={{0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x44,0x04,0x4E,0x7C,0x58,0x04,0x60,0x04,0x40,0x04,0x40,0x04,0x40,0x0C,0x40,0x34,0x42,0xE4,0x42,0x44,0x42,0x04,0x3E,0x00,0x00},//北{0x02,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x01,0x00,0x09,0x30,0x19,0x18,0x31,0x0C,0x41,0x08,0x05,0x00,0x02,0x00},//京{0x08,0x40,0x10,0x20,0x3C,0x00,0x25,0xFC,0x34,0x00,0x2C,0xF0,0x24,0x90,0xFC,0x90,0x24,0x90,0x34,0x90,0x2C,0x90,0x24,0x90,0x24,0x92,0x45,0x12,0x55,0x0E,0x8A,0x00},//航{0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x84,0x44,0x08,0x20,0x10,0x10,0x20,0x08,0x1F,0xF0,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x00,0x00},//空{0x08,0x40,0x10,0x20,0x3C,0x00,0x25,0xFC,0x34,0x00,0x2C,0xF0,0x24,0x90,0xFC,0x90,0x24,0x90,0x34,0x90,0x2C,0x90,0x24,0x90,0x24,0x92,0x45,0x12,0x55,0x0E,0x8A,0x00},//

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论