检测控制系统-实验报告

上传人:ren****ao 文档编号:157481285 上传时间:2022-09-29 格式:DOC 页数:35 大小:778.52KB
返回 下载 相关 举报
检测控制系统-实验报告_第1页
第1页 / 共35页
检测控制系统-实验报告_第2页
第2页 / 共35页
检测控制系统-实验报告_第3页
第3页 / 共35页
点击查看更多>>
资源描述
学生学号 实验课成绩学 生 实 验 报 告 书实验课程名称检测控制系统开 课 学 院信息工程学院指导教师姓名学 生 姓 名学生专业班级2016-2017学年第2学期 实验课程名称:检测控制系统 实验项目名称实验一:键盘接口电路的设计与实现实验成绩实 验 者*专业班级电信1405组 别同 组 者无实验日期年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的:键盘是微机应用系统中必不可少的输入设备,通过本次实验掌握键盘电路硬件和软件的设计技巧,能够设计出满足各种需要、适应各种场合的键盘电路。通过键盘扫描工作与其它工作的合理安排,熟悉微机系统中键盘监控程序的设计原理。二、实验内容:设计4个按键的独立键盘和44矩阵键盘的硬件电路和软件,并且在按键识别上分别采用查询法和中断方式,(仿真通过后)在开发板上搭建电路,设计好的程序编译后写入开发板中,检验相应键盘的性能。三、具体任务1. 依托开发板,设计4或8个按键的独立键盘,软件上分别采用查询方式和中断方式识别是否有键按下。2. 依托开发板,设计44矩阵键盘,软件上分别采用空闲查询方式和定时查询方式识别是否有键按下。3. 实验按键消抖。任选前面一种键盘作为实验对象。首先取消按键,实验有消抖和没消抖效果上的不同。建议验证方案采用按一次键计数器加一送LED显示器显示。将消抖时间由小变大,观察效果上的不同,确定出你的键盘合适的消抖时间。1 实验总结(研究结论,实验经验,实验收获)四、探究内容1 键盘设计需要考虑那些问题(按键识别、消抖、键值)2 键盘硬件电路的设计方法3 键盘软件设计方法(软件实现哪些功能)4 比较独立键盘和矩阵键盘的特点5 比较查询法和中断法识别按键性能上的不同矩阵键盘连线图整体连线图第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)1.44键盘扫描方式读取键值主要程序如下: void main(void)while(1)KeyDown();GPIO_DIG = DIG_CODEKeyValue;void KeyDown(void)char a = 0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/读取按键是否按下Delay10ms(10);/延时10ms进行消抖if(GPIO_KEY!=0x0f)/再次检测键盘是否按下 /测试行GPIO_KEY=0X0F;switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=4;break;case(0X0d): KeyValue=8;break;case(0X0e):KeyValue=12;break;/测试行GPIO_KEY=0XF0;switch(GPIO_KEY)case(0X70):KeyValue=KeyValue+3;break;case(0Xb0):KeyValue=KeyValue+2;break;case(0Xd0): KeyValue=KeyValue+1;break;case(0Xe0):KeyValue=KeyValue;break;while(a50) & (GPIO_KEY!=0xf0) /检测按键松手检测Delay10ms(1);a+;2.中断方式读取键盘值主要程序如下:void main(void) Delay10ms(100); / IT0=0; /低电平触发 IT0=1; /下降沿触发 EA=1; EX0=1; while(1) P0=Disp_TabLedNumVal%10; void counter(void)interrupt 0 Delay10ms(0); EX0=0; LedNumVal+; EX0=1;教师签字_第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)二、小结、建议及体会三、思考题一 实验结果分析:通过多次按键测试,矩阵键盘扫描的最佳消抖时间为40ms。在大于60ms后开始严重延迟,而小于20ms时灵敏度过高,导致数值跳变过快。在独立按键识别时,若采用查询方式,则消抖情况同上。若采用低电平触发中断模式,则不会出现延迟情况,但是会出现灵敏度过高的情况;若采用下降沿触发,消抖效果最好!键盘的硬件电路设计是根据按下不同的键,则相应I/O口的电平发生改变,从而被CPU检测进行判别的原理独立按键和矩阵键盘有很大的不同,独立按键只接一个I/O,从而只需对一个I/O的电平进行判断即可进行操作。但是矩阵键盘不同,不仅需要更复杂的外部电路,也需要对一组I/O的值进行检测,从而定位出按了什么键。并且独立按键由于不需要轮询,所以响应速度更快二 小结、建议及体会*8实验课程名称:检测控制系统 实验项目名称实验二:显示器接口电路的设计与实现实验成绩实 验 者*专业班级电信1405组 别同 组 者无实验日期年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的1显示器是微机应用系统中必不可少的输出设备,通过本次实验掌握显示器接口电路硬件和软件的设计技巧,能够设计出满足各种需要、适应各种场合的显示电路。2通过显示器接口电路的设计,懂得如何节省I/O口资源,理解CPU如何合理安排并行工作。二、实验内容:1 七段LED显示器接口实验设计4个(或4个以上)的七段LED显示器的接口,包括硬件电路和软件,试验静态显示和动态显示的特点。2 LCD显示器接口实验(选做)掌握LCD显示器接口芯片的结构和编程方法,设计LCD显示器的软件,实验LCD显示器的特点。三、探究内容对于七段LED显示器接口实验需要显示的数字值如何转化成数码管的显示码?(硬件译码和软件译码两种方式)为什么LED显示器多采用动态显示方式?动态显示和静态显示的特点。动态显示时,多短时间重复点亮LED(重复调用显示程序),LED显示器的亮度才稳定?LED显示器是否需要驱动动态显示的LED显示器实验依托开发板设计动态显示的LED显示器的硬件电路。如果开发板允许,译码方式用硬件译码和软件译码两种方式实验。设计动态显示的软件,再加上代表其它工作的延时程序形成系统的程序加大延时时间,观察显示器的亮度是否改变。通过实验确定,动态显示方式下,多短时间内LED被重复点亮才能保证显示器稳定地亮。当代表其它工作的延时加大到显示器不亮时,采取什么措施让显示稳定地亮,实施并验证。LED接入电路图原理LED段码选第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)实验效果图主要程序如下:1.扫描查询模式main()unsigned char i = 0;while(1)Delay1ms(200);for(i=0;i8;i+)switch(i) case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break; P0 = tabi;Delay1ms(2); 中断查询模式:main()TMOD = 0x02;TH0 = 0; /250USTL0 = 0;EA = 1;ET0 = 1;TR0 = 1;while(1)Delay1ms(2000); void begain()interrupt 1unsigned char i = 0;for(i=0;i8;i+)switch(i) case(0):LSA=0;LSB=0;LSC=0; break;case(1):P0 = tabi;Delay1ms(2);教师签字_第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)二、小结、建议及体会三、思考题一 、实验结果分析在本次实验中,LED显示的最大技术难度在于如何让LED灯一次被选中并且显示相应的值,这也是本实验精彩的地方所在。利用人眼的迟钝效应,可以让LED灯转换的频率增加,以此人眼就会感觉LED灯像是静止不动的。我们的任务就是找出这个最佳转换频率实验中,驱动LED是使用高电平驱动,比如输入0xff 则LED灯的每段将会全部亮起,通过改变输出的高低电平控制数码管的段选,从而实现显示不同的数值实验测得当段选的时间间隔不超过20ms时,可以获得很好的显示效果,如果超过40ms,将会产生严重的闪烁。但是也不能不设置扫描间隔,不然会产生数码管来不及转换而暗淡不清的现象现实生活中,我们需要显示的数据大多数都是动态而不是静止不动的,并且动态便于实时观察监测结果,所以动态显示是很重要的另外,可以用中断进行扫描控制,也很方便,而且定时精准二 、小结、建议及体会*实验课程名称:检测控制系统 实验项目名称实验三:基于8155的外设扩展实验成绩实 验 者*专业班级电信1405组 别同 组 者无实验日期年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的1 掌握在进行监测控制系统或单片机应用系统设计时,如何分配外设地址,如何为外设设计地址译码电路。2 掌握常用接口芯片8155的应用,利用8155芯片进行外设扩展设计。二、实验内容:1 现要求用8个按键开关分别控制8个LED灯,按一下开关键,则灯的状态改变(原来亮则灭,原来灭则亮),4 4键盘则用来向8个LED灯输入要显示的数字。用8155作外设的扩展接口,设计出硬件和软件。2.8155的片选端分别通过线选法和译码法接到地址总线,实现1的要求。开发板上有8155的,在开发板上实现,没8155的,则用proteus仿真实现即可。一、 学习和探究内容1熟悉8155的资源和引脚2.如何根据系统需要对8155进行初始化编程3.如何连接单片机和8155,一旦硬件连接后,如何确定8155各端口地址。4.接口芯片的片选端可通过线选法和译码法接到地址总线的高位地址线上,线选法和译码法各有什么特点?四、实验过程1.采用线选法连8155片选端,为四种外设分配I/O口。2.设计硬件电路图。3.确定8155各端口的地址。4.软件设计。(此应用系统工作不多,可以不用中断,查询方式处理按键,不断循环,则按键和显示都会及时处理。)5.仿真仿真图以及运行结果第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)主要程序如下:#include#include#define COM8155 XBYTE0x7ff0#define PA8155 XBYTE0x7ff1#define PB8155 XBYTE0x7ff2#define PC8155 XBYTE0x7ff3#define GPIO_KEY P1unsigned char code DIG_CODE16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15/a b c d ef /unsigned int i,j;unsigned char KeyValue;void KeyDown(void);void Delay10ms(unsigned int c);main()COM8155 = 0x0e;while(1)KeyDown();PB8155 = DIG_CODEKeyValue;/PB8155 = PA8155;switch(PA8155) case 0xfe:PC8155 = 0X07;break; /1111 1110 000 case 0xfd:PC8155 = 0X06;break; /1111 1101 001 教师签字_第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)二、小结、建议及体会三、思考题一 实验结果分析经过一个多星期的调试与找错,我终于完成了这个实验。实验最终运行效果完全满足要求,由于接口过多,不得不采取一些“聪明”的措施,比如增加38译码器以及使用分时使用等方式。8155在与单片机进行交互时,有一点必须注意,就是地址要计算正确,其他的不过是在前两次实验上的衍生而已。其中8155的PA口接独立键盘实现对PC口LED的控制,按下按键则相应的灯亮起来。PB口接数码管实现对矩阵键盘的读取,经过测试,仿真和程序都运行完美!线选法, 就是直接以系统的地址线作为存储器芯片的片选信号, 为此只需把用到的地址线与存储器芯片的片选端直接相连即可。译码法又分全译码法和部分译码法。全译码法是指将地址总线中除片内地址以外的全部高位地址接到译码器的输入端参与译码。部分译码法是将高位地址线中的一部分(而不是全部)进行译码,产生片选信号。线选法不存在地址重叠问题,连线简单方便,便于实现,但是当连接的芯片较多时不便使用。片选法连线复杂,地址空间也可能重叠,但是可以通过译码的方式连接更多的外设本题只需要连接一片外设,本着简单的原则选择线选法。实验结果见预习页二 、小结、建议和体会*8实验课程名称:检测控制系统 实验项目名称实验四 信号采集输入电路的设计与实现实验成绩实 验 者*专业班级电信1405组 别同 组 者无实验日期年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的1.掌握模拟量的输入接口电路的设计。2.熟悉市面上常用的AD转换芯片的性能及特点3.掌握AD转换芯片硬件连接方法和基本编程方法。4.掌握模拟量采集的软件编程技巧二、实验内容:1.用信号发生器产生各种输出电压信号,设计一信号采集系统实时测量该信号发生器的输出并显示出来。2.信号发生器分别输出直流、方波、正弦波信号供系统采集,研究信号采集系统如何保证准确性、精度、实时性。二、 实验具体方案1模拟量采集系统的设计开发板有AD转换芯片的,依托开发板设计模拟量采集系统的硬件和软件,实验时用实验室的信号发生器产生模拟量。开发板上没有AD转换芯片的,自由设计模拟量采集系统的硬件和软件,实验时,在proteus环境下,用信号发生器产生模拟量,仿真实验。2.采集系统准确性实验让信号发生器分别输出1V、3V、5V、7V、9V、11V、13V的直流电压,记录采集系统的采集值。观察测量值与实际值的差距,从硬件和软件两方面分析原因,改进系统,直至达到满意的测量结果,记录相应的测量结果。思考采集系统的精度如何提高,给出答案。(选做:对于用proteus仿真实验的同学,调整系统设计,使测量精度提高一个档次,记录实验结果)ADC0809原理图以及仿真和实验结果第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)实验中通过AD芯片读写程序,也是主要的程序,显示程序很简单,在此就不添加了sbit ST=P30; /A/D启动转换信号sbit OE=P31; /数据输出允许信号sbit EOC=P32; /A/D转换结束信号sbit CLK=P33; /时钟脉冲 uint z,x,c,v,AD0809, date;/定义数据类型void main() while(1) /无限循环ST=0;/使采集信号为低ST=1;/开始数据转换ST=0;/停止数据转换while(!EOC);/等待数据转换完毕OE=1;/允许数据输出信号AD0809=P1; /读取数据OE=0;/关闭数据输出允许信号if(AD0809=251)/电压显示不能超过5VAD0809=250;date=AD0809*20;/数码管显示的数据值,其中20为采集数据的毫安值xianshi();/数码管显示函数 教师签字_第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)二、小结、建议及体会三、思考题一、 实验结果分析在AD采集与转换实验中,一共有三种数据采集方式:1)定时传送方式 对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。由于现在的芯片转换时间短,可以启动转换后,延时一段转换时间后,即读取转换结果。2)查询方式 A/D转换芯片有表示转换结束的状态信号,例如ADC0809的EOC端。3)中断方式 如果把表示转换结束的状态信号(EOC)作为中断请求信号,那么,便可以中断方式进行数据传送。在本次实验中采用的是查询方式,当ADC0809采集一帧数据并完成转换时,其完成转换状态(END OF CONVERT)会被置位,使用while(!EOC)循环,当完成转换时,!EOC = 0,退出循环,CPU采集到一帧数据。实验中,经过测试误差在0.2V,这个精度不是很理想,但由于ADC0809本身采集数据的位数显示,很难进行改善。另外ADC0809与CPU的连接使用到了前面一章学到的单片机接口拓展二、 小结、建议及体会我在试验中用到前面学习的知识有:数码管的动态显示、IO口的拓展以及定时器的应用。通过这次试验,对以前学习到的知识有了很好的巩固,同时也学会了外部模拟数据的采集和显示,学会了使用拓展芯片,对单片机和嵌入式有了更深的理解三、 思考通过本次实验我们可以发现,使用中断方式是更好的,因为当完成一帧转换后,立马触发中断对数据进行采集,没有延迟。而使用查询方式有一定的延迟,不能充分使用CPU的资源实验课程名称:检测控制系统 实验项目名称实验五 音乐发生器的设计与实现实验成绩实 验 者*专业班级电信1405组 别同 组 者无实验日期年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的1.掌握单片机片内定时器应用设计技巧,会确定定时器的时间常数,能够进行定时器的初始化编程。2掌握利用微处理器设计音乐发生器的方法二、实验内容:1.利用定时器产生特定的频率信号,设计一个音乐发生器,可以循环播放音乐,候选乐曲3首。用按键选择播放哪一首音乐。有音乐播放的启停键。用8个LED灯随节拍闪烁(选做)2.扩展内容(选做),用7个按键分别产生音阶1、2、3、4、5、6、7,按一下键,即产生一个节拍的相应音符,也就是设计电子琴。三、设计过程1基于开发板设计音乐发生器的硬件电路(包括单片机、喇叭、按键)2研究产生音阶1、2、3、4、5、6、7的方法,计算7个音阶对应的时间常数3设计产生单首乐曲循环的软件,调试后下载到开发板4观察7个音阶是否准,不准,则进行调整5调整节拍的时间,直到达到满意效果6设计产生3首乐曲的音乐发生器,用按键选择循环的单曲,调试后下载到开发板,运行。第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)主要程序如下:void main() unsigned char p,m; /m:constant of frequency unsigned char i=0; unsigned char code* addr = music_tab1; TMOD = 0X01; TH0=0xd8; TL0=0xef; IE=0x83; IT0 = 1;play: while(1) while(1)if(p1 = 0) addr = music_tab1; break;else if(p2 = 0) addr = music_tab2; break;if(p1 = 1&p2 = 1)if(*addr)=0x00&addr =& music_tab20) addr = &music_tab20;break;while(pause != 0); a: p = *addr; if(p=0x00) delayms(1000); goto play; /finish note,delay 1 second and goto play else if(p=0xff) addr = addr + 1;delayms(100);TR0=0;goto a; /rest note,delay 100ms and go on else m = *addr;addr = addr + 1;n = *addr;addr = addr + 1; /constant of frequency and beat TR0=1; /run timer 0 while(n!=0) Beep=Beep;delay(m); /finish one-beat time and export the sound TR0=0; /stop timer 0 教师签字_第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)二、小结、建议及体会三、思考题一、 实验结果分析首先,这个实验一开始就是要确定频率和计数常数的对应关系,然后使用定时器产生需要的频率,并不是很难;节拍的长短,只需要控制输出音符的时间,用延时即可实现。其次,关于音乐播放的暂停,只需要在每个音符后面判断一下是否按下了暂停键,如果按下,就在while(p1.1 = 0)delay10ms(20);if(p1.1 = 0)break;一直循环,直到再次按下播放键,退出循环最后,关于如何选择歌曲,这是最难的一点,我巧妙地选择使用指针进行歌曲选择,如果按下KEY1,就将第一首歌音符数组的首地址传给addr,然后通过addr进行寻址播放里面的音符;如果按下KEY2,就将第二首歌音符数组的首地址赋值给addr,然后进行*addr+依次得到各个音符播放。以此类推,可以一共实现9首歌的播放,并且只需要修改极少数代码,程序具有很好的拓展性二、小结、建议及体会 *实验课程名称:检测控制系统 实验项目名称实验六 顺序控制实验成绩实 验 者*专业班级电信1405组 别同 组 者无实验日期年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的1顺序控制系统是单片机应用系统的一个典型实例。通过一个简易顺序控制系统,来学习单片机在顺序控制系统中的应用和方法。2掌握单片机定时器/计数器的特点及使用方法。二、实验内容: 1.合理选择单片机定时器/计数器工作方式、初始值、初始化程序的设计。 2.根据事先设定的工作顺序和时间,用单片机实现开发板上的LED灯(配合继电器)按时间顺序点亮。三、具体任务利用单片机控制4个继电器负载,来模拟工业现场的顺序控制。1、接线要求: P1.6接启动开关K1。当K1按下时,启动顺序控制过程. P1.7接停止开关K2。当K2按下时,停止顺序控制过程。 P1.0P1.3口,接4个发光二极管,使用一个按键作为控制启动键,另外一个按键作为控制停止键。2、要求的控制状态状态1:P1输出005,持续1s;状态2:P1输出003,持续1s;状态3:P1输出00F,持续1s;状态4:P1输出00E,持续1s;状态5:P1输出000,持续1s;状态6:P1输出004,持续2s;再回到状态1,周而复始。(213-计数初值)晶振周期12或(213-计数初值)机器周期MC晶振=6. 0MHz时,MC=2us晶振=12. 0MHz时,MC=1us如:单片机的晶振=6.0MHz,则在方式0下最小定时时间为:213-(213-1)1/610-62=210-6(s)=2(us)最大定时时间为:(213-0)1/610-612=1638410-6(s)=16384(us)如:单片机的晶振=6.0MHz,则在方式1下最小定时时间为:216-(216-1)1/610-62=210-6(s)=2(us)最大定时时间为:(216-0)1/610-612=13107210-6(s)=131072(us)要计100个脉冲的计数初值: 方式0(13位):C=(64H)补码=2000H-64H=1F9CH 方式1(16位):C=(64H)补码=10000H-64H=FF9CH13位1F9CH=00011111110011100 TH0 TL0第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)主要程序代码如下:int main()unsigned char i = 0;unsigned char t;unsigned char k;TMOD = 0x01;for(;i+)for(count = 0;counttime_ci%6;count+)TH0 = time_hi%6;TL0 = time_li%6;TR0 = 1; while(1) if(TF0 = 1)TR0 = 0;TF0 = 0;break;if(p00 = 0) Delay10ms(10);for(t = 0;t6;t+)time_ct = time_ct + 20;k = KeyDown() ;switch(k)case 1: state0 = state5;break;case 2: state0 = state4;break;if(p01 = 0)Delay10ms(1);state0 = 0x04;state1 = 0x00;if(p06 != 1)Delay10ms(2);while(1)if(p07 = 0)break;P1 = statei%6;return 0;void Delay10ms(unsigned int c) /误差 0usunsigned char KeyDown(void)教师签字_第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)二、小结、建议及体会三、思考题一、 实验结果分析顺序控制的实验有了前几个实验,做起来十分简单。首先讲灯的几种状态以及需要传给定时器的时间常数分别放在一个数组里,再用一个for循环,第一个状态传入第一个时间常数,第二个状态传入第二个时间常数这样就完成了四种状态的LED点亮难点在于如何用按键控制LED灯状态的转换。这儿我用到了实验一按键检测的代码,检测到按下KEY1,就讲时间常数数组里的时间都+0.5s,检测到按下KEY2,就讲数组中的第二个时间常数和第一个时间常数的位置交换,实现LED灯之间状态的互相替换就是使用这种对数组中元素的操作,实现了LED灯较复杂的控制实验代码经过KEIL转换成HEX文件,下载到开发板之后,运行正确,得出了很理想的效果因为使用了定时器定时,所以时间是十分准确的,不存在由于软件带来的时延二 、小结*实验课程名称:检测控制系统 实验项目名称实验七、监测控制系统的设计与实现实验成绩实 验 者*专业班级电信1405组 别同 组 者无实验日期年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)一、实验目的1.通过本次实验形成系统设计的概念2.掌握单片机应用系统的设计方法和流程3.学会合理分配资源4.提高综合运用知识的能力二、实验内容:综合前面的实验,实现一监测控制系统,监测一模拟量(0-5V的交流电)输入并显示,当该模拟量在正常的1-3V范围内时,系统执行正常的顺序控制,这时8个LED灯依次亮2s并循环(代表正常的工序),当模拟量超出1-3V范围时,则8个LED灯间隔一个灯依次亮2s并循环(代表特殊的工序);用一个按键模拟故障,当该按键按一下时,发出报警声,LED全灭(代表工作暂停),当该按键再按一下时,表示故障解除,停报警声,恢复正常工作。同学们可以在此基础上增加功能。1.当系统有较多外设时,如何为外设分配I/O口,是否要扩展I/O口?2当系统有较多任务时,分析任务的实时性和所占资源,考虑那些任务放主程序执行,哪些放中断执行?(中断资源、定时器资源的合理分配)3本任务中的定时2s任务是由定时器定时实现还是通过软件延时实现好?(定时器资源、实时性综合考虑,只要满足要求即可,没有固定的安排模式)四、 具体实现内容1.首先设计和实现“监测一模拟量输入并显示”,调试,保证测量准确度在3%以内(显示器用3个数码管即可)。*在1的基础上,增加判断和控制功能*先设计和实现让8个LED灯依次亮2s并循环*设计和实现让8个LED灯间隔一个灯依次亮2s并循环*在1的基础上设置判断,选择执行所有灯依次亮还是偶数灯依次亮。*再增加故障按键的处理第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)部分重点程序代码#include #include /-定义使用的IO-/#define GPIO_LED1 P2/P2口低四位作LED低四位输出#define GPIO_LED2 P3/P3口高四位作LED高四位输出sbit Beep=P30;sbit Int0=P32;/-定义全局变量-/unsigned char code DIG_CODE11=0123456789;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char DisplayData16=;/用来存放要显示的8位数的值unsigned char IntFlag,LedFlag,led,n=0;/-定义函数-/void DigDisplay();void TimerInti();void main(void)unsigned int temp,count=0;unsigned char i;float t;TimerInti();SPI_Start();LcdInit();led=0x01;LedFlag=0;IntFlag=0;GPIO_LED1=GPIO_LED1 & 0xf0 | led;GPIO_LED2=GPIO_LED2 & 0x0f | led;TR0=1;TR1=0;while(1)Int0=1; if(count=50) count=0; temp = Read_AD_Data(0x94);/初始化AD,读取AIN0(001)电位器通道的值t=temp;temp=t*(1000*5./4096);if(temp1000&temp3000)LedFlag=0;elseLedFlag=1; count+; DisplayData0=DIG_CODEtemp%10000/1000; DisplayData1=.; DisplayData2=DIG_CODEtemp%1000/100; DisplayData3=DIG_CODEtemp%100/10;for(i=4;i16;i+)DisplayDatai= ;LcdWriteCom(0x80);for(i=0;i16;i+)LcdWriteData(DisplayDatai);void TimerInti()TMOD=0x11;/T0工作方式1TH0=0x3c;/定时50msTL0=0xb0;TH1=0xfc;/定时50msTL1=0x18;IP=0x09;IE=0x8b;/开中断IT0=1;timer0() interrupt 1TH0=0x3c;/重载定时初值TL0=0xb0;n+;if(n=40)n=0;if(IntFlag=0)if(LedFlag=0)led=_crol_(led,1);elseled=_crol_(led,2);GPIO_LED1=GPIO_LED1 & 0xf0 | led; /选择点亮的数码管GPIO_LED2=GPIO_LED2 & 0x0f | led;timer1() interrupt 3TH1=0xfc;/重载定时初值TL1=0x18;Beep=!Beep;int0() interrupt 0IntFlag=!IntFlag;TR1=!TR1;if(IntFlag=0)led=0x01;elseled=0x00;教师签字_第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)二、小结、建议及体会三、思考题一、 实验结果分析总体来说最后一次实验算是比较简单的,因为不管是LED灯状态的变化,还是AD采样,前面都做过了,很多程序代码可以直接调用之前的在本次实验中,需要配置一个中断来进行紧急故障处理,并且中断配置成最高优先级,这样在按下KEY时,CPU检测到下降沿,蜂鸣器就会立即响起,实现故障的最优先处理AD采样使用的是前面AD转换实验的代码,在这儿就不复述了LED的闪烁时间也是通过定时器实现的,这样方便得到精准的时间2S,因为51单片机定时器最大定时时间是(2的16次方-1)微秒,可以让定时器定时50ms,再用一个计数器计数40次后才LED灯移位亮。对LED两种状态的显示转换,是通过IF判断实现的,如果判断到电压值在1-3伏,LED遍依次亮2S,如果判断到采集的电压值在1-3V之外,则隔一颗显示LED灯I/0口不够用时不一定需要拓展,本例可以增加3-8译码器或者使用时分复用的方式来实现。中断程序中应放置需要紧急并且实时处理的程序代码,主程序中放置对实时性以及紧急性要求不高的程序二、小结*
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!