《单片机与嵌入式系统》课程设计(论文)设计(论文)题目单片机与嵌入式系统实验报告学院名称专业名称学生姓名学生学号任课教师设计(论文)成绩教务处制2014年12月6日学生学习心得经过一学期的系统学习,由初识到了解,不断深化学习单片机与嵌入式系统的过程中,和所有初学者一样,我也曾遇到各种各样的困难,犯过五花八门的错误。我从基础入手,先学会简单运用Keil软件进行简单的编程。踏实一步步向前迈进,学习中注意把握设计技巧,培养起利用软件配合风标电子微控制器仿真实验实训箱、进行程序设计,实训箱功能实现的能力并扎实掌握单品机系统的方法和技术。写过的程序越繁杂,做过的东西越多,越是能体会到学习的乐趣。要想使自己成为单片机编程与设计高手,最重要的是不气馁,不断学习。知识无穷尽,明天的我一定会感激今天努力的自己!感谢这一学期以来老师的细心指导,由衷的向您道一声:“老师,您辛苦了!”学生(签名):年月日诚信承诺本人郑重声明所呈交的课程报告是本人在指导教师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注的地方外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工作的同学对本文研究所做的贡献均已在报告中作了明确的说明并表示谢意。学生(签名):任课教师评语成绩评定:任课教师(签名):年月日单片机与嵌入式系统实验报告目录1.单片机实验平台简介.................................................................12.KeiluVision4软件简介...............................................................12.1C51单片机开发软件整体结构......................................................12.2KeilC51单片机软件的特点..........................................................13.uVision4编程实验(加全注释)...............................................13.1实验一IO开关量输入实验..............................................................13.2实验二IO驱动实验........................................................................33.3实验三外部中断计数试验...............................................................43.4实验四计数器实验.........................................................................53.5实验五74LS164串入并出实验........................................................73.6实验六步进电机控制实验...............................................................83.7实验七数码管驱动实验..................................................................93.8实验八LCD12864显示实验...........................................................104.实验感悟..........................................................................................13-1-1.单片机实验平台简介实验采用风标电子微控制器仿真实验实训箱,系统采用“核心板+底板”双层结构,通过更换不同型号核心板,可学习不同系列的单片机及CPLD等。此实验系统针对快速掌握运用单片机和CPLD而开发的,含大量的硬件资源,能不同程度地满足现代电子技术实验的要求。同时,本系统丰富的功能单元,能够做出超出大纲要求的的综合实验。2.KeiluVision4软件简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,在功能上、结构性、可读性、可维护性上有明显的优势。提供了包括C编译器、宏汇编、连接器、库管理和一个强大的仿真调试器。使用C语言编程,Keil几乎就是必选,其方便易用、强大的软件仿真调试工具令人事半功倍。2.1C51单片机开发软件整体结构uVision是C51forWindows集成开发环境(IDE),可完成编辑、编译、连接、调试、仿真整个开发流程。2.2KeilC51单片机软件的特点(1)KeilC51生成的目标代码效率非常高。(2)与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。(3)KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。3.uVision4编程实验(加全注释)3.1实验一IO开关量输入实验(全注释)一、实验目的熟悉单片机的最小系统,了解单片机I/O的结构;掌握按键键值的读入和处理;学习简单程序的编写。二、实验要求1、利用单片机,按键和发光二极管,构成一个LED灯控制电路;-2-2、上电时,点亮LED,按下K1时,LED向左移一位,按下K2时,LED向右移一位。三、参考程序/*********************************************************************说明:IO开关量输入实验*功能描述:按键扫描程序*上电时,点亮P00口LED,按下K1时,LED向右移一位,按下K2时,LED向左移一位*接线说明:P10-K1,P11-K2,P00~P07——D1~D8********************************************************************/#includereg52.h//52系列单片机头文件#includeintrins.h//包含_crol_(左移),_cror_(右移)函数所在的头文件/*下面为数据类型宏定义,我们使用宏定义的目的就是将unsignedint用uint代替,将unsignedchar用uchar代替,可以在后面的程序看到,我们只用uinti,j;*/#defineucharunsignedchar//无符号字符型#defineuintunsignedint//无符号整型/**********单片机IO口引脚定义***************************************/#defineLEDP0//定义P0口,用于驱动LED灯sbitK1=P1^0;//声明单片机P0口的第1位sbitK2=P1^1;//声明单片机P0口的第2位/**********函数定义**************************************************/ucharscan_key();//声明无符号字符型变量scan_key()voidproc_key(ucharkey_v);//定义按键扫描函数,声明子函数voiddelayms(ucharms);//定义延时函数,声明子函数/**********主函数****************************************************/voidmain(void)//主函数{ucharkey_s,key_v;//声明两个无符号字符型变量key_s,key_vkey_v=0x03;//初始化IO口,0011LED=0xfe;//11111110,最低位P1.0口对应LED被点亮while(1)//当1时,继续;大循环{key_s=scan_key();//键盘扫描开始if(key_s!=key_v)//判断按键是否按下{delayms(10);//延时消抖key_s=scan_key();if(key_s!=key_v)//按键号{key_v=key_s;proc_key(key_v);}}}}/**********键盘扫描函数**********************************************/ucharscan_key()//定义无符号字符型子函数-3-{ucharkey_s;//定义一个无符号字符型变量key_skey_s=0x00;key_s|=K2;key_s=1;key_s|=K1;returnkey_s;//返回按键号}/**********键盘处理函数**********************************************/voidproc_key(ucharkey_v)//键盘处理子函数体{if((key_v&0x01)==0)//与00000001相与{LED=_cror_(LED,1);//循环右移一位,点亮后一个流水灯}elseif((key_v&0x02)==0)//与00000010相与{LED=_crol_(LED,1);//循环左移一位,点亮前一个流水灯}}/***********延时函数*************************************************/voiddelayms(ucharms)//子函数体{uchari;//定义一个无符号字符型变量iwhile(ms--)//当ms0时,循环;即延时约i毫秒{for(i=0;i120;i++);//for循环,循环120次}}3.2实验二IO驱动实验(全注释)一、实验目的了解I/O口的电气特性和驱动能力。掌握程序编写的方法。了解LED电路中加入限流电阻的原因。二、实验要求利用单片机及8个发光二极管等器件,构成一个流水灯单片机系统。三、参考程序/*********************************************************************说明:IO驱动实验*功能描述:实现LED流水灯*接线说明:P00~P07-D1~D8********************************************************************/#includereg52.h//52系列单片机头文件#includeintrins.h//包含_crol_(左移),_cror_(右移)函数所在的头文件/*数据类型宏定义,我们使用宏定义的目的就是将unsignedint用uint代替,将unsignedchar用uchar代替,方便调用*/#defineucharunsignedchar//数据类型宏定义,无符号字符型#defineuintunsignedint//数据类型宏定义,无符号整型#defineLEDP0//定义P0口,用于驱动LED/**********延时函数**************************************************/voiddelayms(ucharms)//延时函数子函数体{unsignedchari;//定义一个无符号字符型变量i-4-while(ms--)//延时ms,还可以这么写,uinti,j;for(i=xms,i0;i--)for(j=120;j0;j--);{for(i=0;i120;i++);//循环120次}}/**********主函数************************************