您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 基于C51单片机流水灯设计
一、前言基于STC51单片机的流水灯的设计过程单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。二、实训目的1.利用C51单片机实现八只流水灯的设计2.掌握Kell编程软件的使用及仿真软件使用3.掌握单片机编程相关指令及C51程序结构4.掌握一定的数字电路模拟电路的基础知识三、实训设备1.c51单片机开发板、程序下载线、kell编程软件、protures仿真软件、STC烧写软件、PC机四、实训步骤(1)、软件安装①双击下载的安装文件。②点击“Next”进入下一步③点选同意安装协议,再点击“Next”进入下一步。④默认安装路径为“D:\Keil”,也可以指定其他目录,点击“Next”进入下一步。⑤输入使用者的信息,点击“Next”进入开始安装⑥安装成功(2)、protures仿真软件安装步骤①第一步首先把下载下来的压缩包解压。看到有这几个文件。双击图1中红框文件,开始安装②③第三步然后点击“Yes”后面会一步一步地讲解。请仔细看,不要出错④这里选择“UsealocallyinstalledLicenceKey”(其实是默认选择了的,不用改)。点“Next”⑥如果你的电脑是第一次安装proteus,就会出现下面图5这个画面。点“Next”⑦第六步点击红框处“BrowseForKeyFile”⑧第七步找到你一开始解压的文件夹。找到“破解”这个文件夹。双击打开,里面只会看到一个文件:LICENCE.lxk。双击该文件⑨然后应该出现下图画面。此时点击“Install”第十、然后就会出现下图的画面。这里需要注意的是,不要按回车。很多人这里习惯性地按回车键。应该点击“是”第十一、然后便是下图。请注意下图中的红框中是有内容的,如果你那里对应于红框的内容是空白,那可能是你在第九步按了回车键然后点击CLOSE此时选择你的安装路径(可以默认不改),如果你换了路径,也就是装到了别的盘里,要记住新的路径,因为后面破解的时候需要你的安装路径。安装路径为英文最后、选择好路径后一直按着next安装下去就行了,一直到出现FINISH为止(2)工程建立点击project建立一个新的工程并命名为:流水灯循环点亮------建立新文件并命名为:流水灯循环点亮.c-----并将文件加到工程中去(3)程序设计设计思想步骤:点亮单个LED灯---实现单个LED闪烁点亮间隔一秒-----实现8个LED灯点亮-----实现8个LED灯闪烁循环点亮步骤一:①点亮单个LED灯程序:#includered51.h//定义头文件sbitLED=P1^0;//利用sbit指令定义P1.0口voidmain()//主函数{LED=1;//将P1.0口置高电平熄灭LED灯LED=0;//将P1.0口置低电平点亮LED灯while(1)//循环函数,表达式总成立{}}②使用软件进行仿真,先进行仿真电路的设计,设计如下:③通过C51单片机开发板进行实际认证:利用STC进行程序烧写至单片机中,如图XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pfC222pfX112MR110kC310ufD1LED-REDR2220第二步骤:实现单个LED闪烁点亮间隔一秒①程序设计:#includereg51.h//定义头文件voidDelayms(unsignedintt)//循环函数{unsignedinti,j;for(i=0;it;i++)for(j=0;j125;j++);}voidmain(void)//主函数{P1=0xff;//设置P1口为高电平灯熄灭while(1)//循环{P1=0xfe;//#11111110点亮P1.0口Delayms(500);//点亮500msP1=0xff;//熄灭Delayms(500);//熄灭500ms}}注意:或者可以利用字节和sbit指令和另一种循环函数来控制单灯循环,程序如下:#includereg51.h//定义头文件#defineucharunsignedchar//将char变量定义为无符号的char#defineuintunsignedint//将int变量定义为无符号的intsbitLED=P1^0;//将LED定义在P1口的0口voidDelayMS(uintx)//延时函数,延时xms{uchari;while(x--){for(i=0;i120;i++);}}voidmain()//主函数{LED=1;while(1)//循环函数{LED=0;DelayMS(500);LED=1;DelayMS(500);}}②仿真如下:(实现了D1灯的循环点亮)步骤三:实现8个灯点亮①实现8个灯点亮程序如下:#includereg51.h//定义头文件sbitLED=P1^0;//利用sbit指令定义P1口sbitLED1=P1^1;sbitLED2=P1^2;sbitLED3=P1^3;sbitLED4=P1^4;XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pfC222pfX112MR110kC310ufD1LED-REDR2220sbitLED5=P1^5;sbitLED6=P1^6;sbitLED7=P1^7;voidmain()//主函数{LED=1;//将P1口置高电平熄灭LED灯LED=0;//将P1口置低电平点亮LED灯LED1=1;LED1=0;LED2=1;LED2=0;LED3=1;LED3=0;LED4=1;LED4=0;LED5=1;LED5=0;LED6=1;LED6=0;LED7=1;LED7=0;while(1)//循环函数,表达式总成立{}}②模拟仿真如下:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pfC222pfX112MR110kC310ufD1LED-REDR2220R3220R4220R5220R6220R7220R8220R9220D2LED-REDD3LED-REDD4LED-REDD5LED-REDD6LED-REDD7LED-REDD8LED-RED1234567812346578③C51单片机开发板实景如下:(烧写步骤如上)第四步骤:实现八只灯循环点亮①八只灯循环点亮程序设计:#includereg51.h//定义头文件#includeintrins.h//定义文件#defineucharunsignedchar//将char定义为无符号char变量#defineuintunsignedint//将int定义为无符号uint变量//延时voidDelayMS(uintx)//调用循环函数(1ms){uchari;while(x--){for(i=0;i120;i++);}}//主程序voidmain(){uchari;P1=0xfe;//P1口低电平点亮2#11111110while(1)//循环七次{for(i=0;i7;i++){P=_crol_(P1,1);//P2的值向左循环移动DelayMS(300);//点亮300ms}for(i=0;i7;i++)//循环7次{P1=_cror_(P1,1);//P2的值向右循环移动DelayMS(300);//点亮300ms}}}②仿真如下:(能实现八只灯左右循环点亮)五.实训总结1.掌握了工程建立的基本步骤及编程仿真软件的使用和操作XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pfC222pfX112MR110kC310ufD1LED-REDR2220R3220R4220R5220R6220R7220R8220R9220D2LED-REDD3LED-REDD4LED-REDD5LED-REDD6LED-REDD7LED-REDD8LED-RED12345678123465782.回顾了模拟点亮及数字电路相关知识,比如震荡电路等3.熟悉了程序基本机构,最主要的是循环函数得使用(注意:循环函数应处在主函数前面)4.程序基本框架:#include----Voidmain(){}5.循环函数基本框架(以while语句为例)While(表达式){语句(内部可以为空)}注意:先判断表达式,后执行语句若表达式=1,则执行语句,否则跳出循环While(1)//表达式总成立无限循环单片机课程设计实训学院:电气与信息工程学院学号:14301920222班级:机电1402姓名:唐石单片机课程设计实训基于C51单片机流水灯设计指导学院:电气与信息工程学院实训学生:唐石注:个人实训资料,禁止未经作者同意抄袭
本文标题:基于C51单片机流水灯设计
链接地址:https://www.777doc.com/doc-3372512 .html