




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验课程名称自动控制综合实验2》姓名学院自动化学院专业班级学号、班内序号指导教师2013年月单片机部分仿真软件的使用以及跑马灯的设计实验目的:掌握仿真软件的使用方法。掌握MCS-51单片机的P0、P1、P2口的使用方法。掌握实现发光二极管的移动、闪烁程序的编写方法。实验仪器:LJD-SY-5200单片机开发板实验内容:掌握单片机仿真器的程序输入、调试和运行等方法。所有按键的一端接通过上拉电阻接至+5V电源,另一端和电源地GND相连接。P0、P1作输出,接16个发光二极管,P0口接前八个发光二极管,由程序控制二极管的亮和灭。P0八个发光二极管先奇数的发光二极管点亮,然后偶数的发光二极管点亮,并循环进行。实验程序要求用汇编语言编写。实验线路:实验程序及流程图:实验流程图:定义程序起始位置定义程序起始位置0030H将将01111111d通过累加器A传给IO0改变累加器的值调用延时子程序调用延时子程序delay(为了有明显效果,调用两次)二进制左移一位(改变8次)八位移位过后循环实验程序:org0000hajmpstart;跳转到程序开始org0030h;定义起始汇编地址start:mova,#7fhmovp0,a;lcalldelay;延时lcalldelaymova,#0dfhmovp0,a;lcalldelay;延时lcalldelaymova,#0f7hmovp0,a;lcalldelay;延时lcalldelaymova,#0fdhmovp0,a;lcalldelay;延时lcalldelaymova,#0bfhmovp0,a;lcalldelay;延时lcalldelaymova,#0efhmovp0,a;lcalldelay;延时lcalldelaymova,#0fbhmovp0,a;。lcalldelay;延时lcalldelaymova,#0fehmovp0,a;lcalldelay;延时lcalldelayjmpstart;回到程序的开头delay:movr3,#250;延时子程序d1:movr4,#200d2:nopdjnzr4,d2djnzr3,d1retend实验心得:通过本次实验,我了解了跑马灯的程序设计方法;而且利用汇编语言编写也锻炼了我的汇编能力。本实验是对单片机I/O端口的基本应用,掌握简单的流水灯设计,为接下来的实验做准备。定时器及计数器的应用实验目的:熟悉8051的T0作为定时器的设置及使用方法掌握T0作为计数器的软件设计方法。掌握单脉冲发生电路的硬件线路连接方式。实验仪器:LJD-SY-5200单片机实验内容:在液晶屏上显示定时、计数结果:利用定时器T0进行计时,并把计时结果通过液晶屏显示出来。以每秒为单位显示。把T0作为计数器对T0引脚的输入脉冲进行计数,并通过液晶显示屏显示T0计数结果。我们给出液晶屏显示程序,同学自己用编写T0定时器程序(中断部分程序)及由T0引脚输入的外部脉冲进行计数的计数器程序(汇编或C语言均可)。将定时或计数结果付给液晶屏显示程序中的count即可显示。利用定时器T0控制八个发光二极管利用定时器T0进行计时,在程序运行2s后首先使得发光二极管顺序循环点亮三次,随后使用定时器T0使得发光二极管奇数位和偶数位循环点亮三次,并循环显示。以500ms为单位显示。把T0作为计数器对T0引脚的输入脉冲进行计数,使用P2口中的一位作为输入口,接1个按键。所有按键的一端接通过上拉电阻接至+5V电源,另一端和电源地GND相连接。在没有按键被按下时P2的输入为高电平,当有按键被按下时对应的P2的相应引脚被拉低,该引脚输入变成低电平。当按键次数达到3的整数倍时点亮P1口的一个发光二极管。提高部分(附加分)使用定时器作为软件看门狗
利用定时器T0进行计时,在程序运行3s后使得发光二极管逆序循环点亮,并当循环运行8s之后程序重启。二极管点亮以100ms为单位显示。实验线路:外部计数电路图实验程序及流程图:1s定时器LCD显示流程图:定时器初始化定时器初始化(定时器1,50ms进入一次中断,打开总中断,定时器1中断,打开定时器)WWhile(1)LCD循环显示50ms后进入中断,计时器重新赋值50ms后进入中断,计时器重新赋值a++Noa=20?Yescountcount加一a=0程序(除去宏定义,LCD显示函数,延时函数等):uchara=0;main(){uchari;TMOD=0x10;//使用定时器1TH1=(65535-50000)/256;TL1=65535-50000;//每进入一次中断,使用50msEA=1;//打开总中断ET1=1;//打开定时器1中断TR1=1;//打开定时器1flag_count=0;count=0;initial_GLCD();/*清屏*/while(1){command_GLCD(0x80);for(i=0;i<7;i++){write_GLCD(disp_hz[i]);}write_GLCD(disp_num[count/1000]);/*显示定时结果的千位*/write_GLCD(disp_num[count%1000/100]);/*显示定时结果的百位*/write_GLCD(disp_num[count%1000%100/10]);/*显示定时结果的十位*/write_GLCD(disp_num[count%1000%100%10]);/*显示定时结果的个位*/write_GLCD(disp_hz[11]);delay1(1000);}}voidtimer1()interrupt3{a++;if(a==20) { a=0; count++;}TH1=(65535-50000)/256;TL1=65535-50000;//每进入一次中断,使用50ms}计数器LCD显示While(1)LCDWhile(1)LCD循环显示计数器初始化计数器初始化(计数器1,计数一次进入一次中断,打开总中断,计数器1中断,打开计数器)No是否有脉冲?Yes进入中断,计时器重新赋值进入中断,计时器重新赋值count加一程序(除去宏定义,LCD显示函数,延时函数等):main(){EA=1;//打开总中断ET1=1;//打开计数器1中断TMOD=0x50;//计数器1,方式一,16位TH1=0xFF;TL1=0xFF;//计数一次后立即中断TR1=1;//开始计数initial_GLCD();/*清屏*/while(1){command_GLCD(0x80);for(i=0;i<11;i++){write_GLCD(disp_hz[i]);}write_GLCD(disp_num[count/100]);/*显示计数结果的百位*/write_GLCD(disp_num[count%100/10]);/*显示计数结果的十位*/write_GLCD(disp_num[count%100%10]);/*显示计数结果的个位*/delay1(1000);}}voidint0()interrupt3//定时计数器1中断,中断向量号为3{TH1=0xFF;TL1=0xFF;//重新赋值count++;//计数值加一}定时器LED流程图定时器定时器0初始化,10ms进入一次中断,2s中断标志flag1,500ms中断标志flag2Noflag2=1?Yes进入流水灯显示进入流水灯显示Z=3,m=0flag2=0,P0=table[m],flag2=0,P0=table[m],流水灯Yes,m++m<8?Noz--Yesz>0?No,三次流水灯结束z=3z=3,m=0m<8?Yes Noz--Yesz>0?No程序结尾程序结尾程序#include<reg52.h>typedefunsignedcharuchar;typedefunsignedintuint;ucharcount1=0,count2;ucharflag1=0;ucharflag2=0;ucharz,m;ucharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水灯ucharcodetable1[]={0xfe,0xfb,0xef,0xbf,0xfd,0xf7,0xdf,0x7f};//奇偶流水灯voidinitial()//定时器初始化{TMOD=0x01;//定时器T0工作在方式一TH0=(65535-10000)/256;TL0=65535-10000;//每10ms进入一次中断EA=1;//打开总中断ET0=1;//打开中断TR0=1;//启动定时器}main(){initial();while(!flag1);//等待2s后flag1=1,跳出循环while(1) { for(z=3;z>0;z--)//循环点亮三次流水灯 { for(m=0;m<8;m++)//循环点亮流水灯 { flag2=0;//清除上一次的flag2 P0=table[m]; while(!flag2); } } for(z=3;z>0;z--)//循环奇偶点亮 { for(m=0;m<8;m++) { flag2=0; P0=table1[m]; while(!flag2); } }}}voidTimer0()interrupt1{count1++;count2++;if(count1==200)//进入两百次中断即达到2s{count1=0;flag1=1;}if(count2==50)//进入50次中断即达到500ms{count2=0;flag2=1;}TH0=(65535-10000)/256;//定时器重新赋值TL0=65535-10000;}计数器LED流程图计数器计数器0初始化,计数初值为0xffff,即计数一次就进入中断等待脉冲进入等待脉冲进入脉冲进入进入中断,进入中断,number++Nonumber=3?Yesshow=0show=0,LED亮,number=0程序#include<reg52.h>unsignedcharnumber=0;sbitshow=P1^0;//使用P1口的第一个LED当做指示灯voidcount_initial(){ TMOD=0x05;//使用计数器0,工作方式一 TH0=0xff; TL0=0xff;//计数初值为0xffff EA=1; ET0=1; TR0=1;}voidmain(){count_initial();//计数器初始化while(1);//在中断中执行程序,故主程序无序内容,无限循环}voidcounter()interrupt1{ number++; if(number==3) { number=0; show=0;//进入三次中断就使标志位show=0 } elseshow=1; TH0=0xff; TL0=0xff;}定时器看门狗流程图定时器定时器0初始化,赋初值使0.05s进入一次中断Noflag=1?Yes流水灯流水灯Yesflag2=1?No等待等待程序#include<reg52.h>sfrWHD=0xe1;//看门狗定时器,位置为SFR区的0xe1unsignedchara,b,c,i,j;unsignedcharflag1=0,flag2=0,flag3=0;unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voidtimer_initial(){ TMOD=0x01;//计数器0,工作方式1 TH0=(65535-50000)/256;//0.05s进入一次中断 TL0=65535-50000; EA=1; ET0=1; TR0=1;}voidmain(){ //WHD=0x3f;//打开看门狗,设置溢出间隔为8.3s timer_initial(); while(!flag1); while(1){ for(i=0;i<8;i++) { flag2=0;//判断是否到达100ms P1=table[i]; while(!flag2);//没到达100ms则等待 }}}voidtimer0()interrupt1{a++;b++;c++;if(a==60)//进入中断60次,使用3s { flag1=1; a=0; }if(b==2)//进入中断两次,使用100ms { b=0; flag2=1; } if(c==219)//进入中断220次时,使用11s,考虑到看门狗65ms后复位,故//此处减一 { c=0; WHD=0x30;//放狗,设置分频及复位时间 }TH0=(65535-50000)/256;//0.05s进入一次中断 TL0=65535-50000;}实验心得:通过本次定时计数器的使用,我熟悉了TMOD,TH,TL及中断开关的使用,也熟悉了中断服务程序的使用。其中,方式一不是自动重装初值,所以在中断服务程序中一定要再次装入计时或计数初值。模拟/数字(A/D,TLC549)实验实验目的:了解8位串行输出A/D转换器TLC549的工作原理。掌握TLC549的硬件线路连接方式。掌握A/D转换器TLC549的编程方法实验仪器:LJD-SY-5200实验内容:仔细阅读TLC549的数据手册。仔细阅读CH451的应用手册。编写程序把A/D转换器的转换结果通过液晶显示出来。实验线路:TLC549管脚图连接图实验程序及流程图:流程图:ADAD转换初始化cscs低电平选中芯片clkclk下降沿从低位到高位读取数据左移左移a八次ddata=a,count=dataLCDLCD显示程序(除去LCD显示部分):sbit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 秋季幼儿园儿童的护理
- 宜宾职业技术学院《材料组织结构的表征》2023-2024学年第二学期期末试卷
- 西安城市建设职业学院《电视制片管理》2023-2024学年第二学期期末试卷
- 浙江万里学院《创意写作概论》2023-2024学年第二学期期末试卷
- 长春大学旅游学院《国际经营学》2023-2024学年第二学期期末试卷
- 山西运城农业职业技术学院《基础日语一》2023-2024学年第二学期期末试卷
- 血压的自我监测健康教育
- 高硼硅陶瓷茶壶行业深度调研及发展项目商业计划书
- 生物基塑料玩具生产企业制定与实施新质生产力项目商业计划书
- 高精度质谱分析系统行业深度调研及发展项目商业计划书
- 山岭区二级公路毕业毕业设计答辩
- 《新能源材料与器件》教学课件-04电化学能源材料与器件
- DB13T 2770-2018 焊接熔深检测方法
- JJF 1343-2022 标准物质的定值及均匀性、稳定性评估
- 民法典侵权责任编课件
- 员工手册(格林豪泰)VDOC
- 高中数学苏教版(2019)选择性必修第一册考前必背知识点 素材
- 边坡复绿专项施工方案
- 幼儿园课件——《生气虫飞上天》PPT课件
- 幼儿园幼儿个人健康档案
- 部编版《道德与法治》三年级下册第11课《四通八达的交通》精美课件(含视频)
评论
0/150
提交评论