测控综合设计PID控制new_第1页
测控综合设计PID控制new_第2页
测控综合设计PID控制new_第3页
测控综合设计PID控制new_第4页
测控综合设计PID控制new_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、测控综合课程设计PID温度控制器的设计目录一实验目的:2二实验内容:21.静态显示模块2器件2功能2静态显示电路图2静态显示参考程序2 仿真结果32.动态显示模块3器件3功能3动态显示电路图3动态显示参考程序4仿真结果53.键盘显示模块5器件5功能5 键盘扫描电路图6 键盘扫描参考程序6 仿真结果9三参考资料9一 实验目的:电炉内的热电阻温度传感器测出的温度信号经运算放大器放大和模/数转换后,由8051读出电阻炉温,控制程序根据当前炉温和目标温度的偏差,按照一定的控制方法控制开关的开与断,提供适当 的加热功率,以使炉温尽快趋近目标温度。最后通过LED将结果显示出来。二 实验内容:1. 静态显示

2、模块 器件名称型号标号数量单片机AT80C51U11译码器74LS138U51或非门74LS02U6(ABC)3译码器74LS373U2,U3,U43电阻R1,R2,R33LED数码管3 功能利用LED静态编程方式来是LED的静态显示。通过编写程序在LED上显示1,2,3 。 静态显示电路图 静态显示参考程序#include "absacc.h"Unsigned char code LED_CODES=0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF,0x

3、0C,0x89,0x7F,0xBF;void main() XBYTE0x0000=LED_CODES1; XBYTE0x0100=LED_CODES2; XBYTE0x0200=LED_CODES3; while(1); 仿真结果 (当按下运行键时显示1,2,3)2. 动态显示 器件名称型号标号数量单片机80C31U11译码器74LS373U31译码器74LS138U21RAM2764U41ROM6264U51定时器8255U01编码器LIN2003U71译码器74LS244U8(AB)2LED显示器7SEG-MPX6-CC1晶体振荡器CRYSTALX11电容CAPC1,C2,C43电阻RE

4、SR1R1717按钮1 功能采用动态扫描方式编程实现LED的动态显示,这个模块是通过编程在LED上显示1,2,3,4,5.由于LED段引脚是接在一起的,而COM引脚是独立的,程序通过控制各LEDCOM端的点评来决定点亮某一位LED,刷新的速度达到每秒30帧以上,虽然各位是分时点亮的,单由于人的视觉暂留效应看起来显示还是连续的。 动态显示电路图 动态显示参考程序#define base 0x0000#define port_a (base)#define port_b (base + 1)#define port_c (base+ 2)#define port_control (base+ 3)

5、#define leds 6#define ca 0#define cc 1/*函数声明*/void turn_on(char led,char chnumber,char mode);void ledsoff();void onebyone(char datas);extern void init8255();unsigned char code select;unsigned char code led_codes;#include"reg51.h"#include"absacc.h"#include"display.h"/*le

6、d 灯选通信号*/*高电平位选*/unsigned char code select= 0x01,0x02,0x04,0x08,0x10,0x20;unsigned char code led_codes= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0x0c,0x89,0x7f,0xbf;/*初始化8255A*/*各led位全灭*/void init8255()unsigned char i,j;for(j=0;j<10;j+)for(i=0;i<255;

7、i+);XBYTEport_control= 0x90;ledsoff();void turn_on(char led,char chnumber,char mode)if(mode=ca)XBYTEport_c= led_codeschnumber;elseXBYTEport_c= led_codeschnumber;XBYTEport_b= selectled;void ledsoff()XBYTEport_b= 0x00;/*main.c#include"reg51.h"#include"display.h"循环在05位上显示数字05 */void

8、 main()unsigned int m;unsigned char i;init8255();i=leds-1;while(1)ledsoff();for(m=500;m!=0;m-);turn_on(i,leds-i,cc);for(m=500;m!=0;m-);if(i=0)i=leds-1;else i-; 仿真结果(当按下运行键时显示1,2,3,4,5,)3. 键盘显示 器件名称型号标号数量单片机80C31U11译码器74LS373U31译码器74LS138U21RAM2764U41ROM6264U51定时器8255U01驱动器LIN2003U71译码器74LS244U8(AB)2

9、LED显示器7SEG-MPX6-CC1晶体振荡器CRYSTALX11电容CAPC1,C2,C3,C4,4电阻RESR1R1717按钮BUTTON13 功能采用矩阵键盘的识别的行扫描法,实现键盘的扫描。编程实现,当按下第1行第0列的键候,LED前两位显示行号01,后两位显示列号00,中间显示。 键盘扫描电路图 键盘扫描参考程序/*按键按下识别子程序:keycheck*/ /*键盘扫描程序*/#include"absacc.h"#include"display.h"#include"reg51.h"/*延时程序*/void delay()

10、char i;for(i=255;i!=0;i-);char keycheck(char *row,char *col) /*row返回行号,col返回列号,若有键按下,函数返回1,否则返回0*/unsigned char t1,t2,t3,i;unsigned char result=0;P1=0XF0; /*行为低,列为高,若按键按下,则行和列电平相同*/t1=P1;if(t1=0XF0) goto exit; /*无键按下则返回*/for(i=11;i!=0;i-) /*去抖延时,约20ms*/delay();t1=P1;if(t1=0XF0) goto exit; /*若仍无键按下则返

11、回*/result=1; /*将result改变设置,因为下面是按键按下的程序*/*求列号*/t2=0X80; t1=t1; /*t1初态为0X00,取反后为0XFF*/for(i=4;i!=0;i-) t3=t2&t1; /*t3=0X80&0XFF=0X80*/if(t3!=0) /*即有按键按下,并且是第4列有键按下*/*col=i-1;break;else t2=t2>>1; /*若第4列无键按下,则继续检测第3、2、1列*/t1=t1; /*t1上一个状态为0XFF,取反后为0X00*/t1=t1|0X0F;P1=t1; /*即让行为高电平*/t1=P1;

12、/*求行号*/t2=0X08; t1=t1;for(i=4;i!=0;i-)t3=t2&t1;if(t3!=0) *row=i-1;break;else t2=t2>>1;exit:return result; /*最初的result=0*/*main.c,显示所识别键的行和列号*/#include"absacc.h"#include"display.h"#include"reg51.h"extern char keycheck(char *row,char *col);void main()char row,co

13、l,r;char strindexs6=20,20,20,20,20,20;/*待显示字符下标组,即display.c中的LED段码的第20个:“0xBF”就是“”*/unsigned char i,k;init8255();while(1)r=keycheck(&row,&col); /*r表示返回的结果:result*/if(r=0) /*无键按下,则显示全'-'*/strindexs5=20,strindexs4=20,strindexs1=20,strindexs0=20;else /*否则保存按键行列号*/strindexs5=0,strindexs1

14、=0,strindexs4=row,strindexs0=col;for(k=6;k!=0;k-)ledsoff();for(i=5000;i!=0;i-); /*此处控制扫描的显示时间*/turn_on(k-1,strindexsk-1,cc);for(i=500;i!=0;i-); /*display.c*/#include"absacc.h"#include"reg51.h"#include"display.h"unsigned char code select=0x01,0x02,0x04,0x08,0x10,0x20;uns

15、igned char code led_codes=0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,/*0-9*/ 0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF,0x0C,0x89,0x7F,0xBF;/*A,b,C,d,E,F,空格,P,H,.,- */ void init8255()unsigned char i,j;for(j=0;j<10;j+)for(i=0;i<255;i+)XBYTEport_control=0x90;ledsoff();void turn_on(char led,char c

16、hnumber,char mode)if(mode=ca)XBYTEport_c=led_codeschnumber;elseXBYTEport_c=led_codeschnumber;XBYTEport_b=selectled;void ledsoff()XBYTEport_b=0x00;/*display.h*/*8255A端口地址*/#define base 0x0000#define port_a (base)#define port_b (base+1)#define port_c (base+2)#define port_control (base+3)#define leds 6/*共用6位LED*/#define ca 0 /*共阳*/#define cc 1 /*共阴*/void

温馨提示

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

评论

0/150

提交评论