




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目: PID温控器 专业(班级): 学号:姓名:小组人员: 2010年 10月20日星期三 静态显示一、 实验思路要想实现本实验的目的,就要用到相关的器件,器件清单如后面所述。首先连接硬件图。单片机控制7段数码管显示数据,就要用到单片机和7段数码管,为了使软件设计简单,再用到74LS373编码器,将二进制数据编码成能让7段数码管显示数据的编码。然后用到一个74LS138的3/8译码器来充当编码器的选通信号输入源。单片机周边电路的设计可以参照最小系统设计。之后就是软件的设计。本实验说要达到的效果是让7段数码管显示128这3个数据。软件编程的框图如下:设置选通信号选中最左边LED取输入数据查表取字型码显示一个数字最右边的显示没?结束NOYES开始二、 实验步骤 1、打开电脑,打开KEIL和proteus软件,2、在proteus软件中,新建一个文件,保存在C:/目录下。3、选择器件,将所用到的器件都选择上。4、对照课本P137,将实验电路图连接好。5、在KEIL软件中新建一个工程文件,命名为LED.UV2。6、新建一个文件,命名为led.c。7、在这一个文件中写入对应的程序,并保存。8、将这三个文件添加到建立的LED.UV2工程中。9、点击FLASH-CONIGURE FLASH TOOLS,在弹出的对话框中,修改晶振频率12MHZ以及勾选输出建立.HEX文件。10、编译工程文件,有错,则更改错误的地方,直至无误。11、将生成的LED.HEX文件添加到刚刚建立的实验电路图中的单片机中。12、仿真运行实验电路,观察LED显示情况,和所预期的情况想比较,不一样,则更改程序或硬件电路。知道结果和预期一样三、试验硬件图四、试验程序#includeabsacc.h 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;void main() XBYTE0x0000= LED_CODES1; XBYTE0x0200= LED_CODES2; XBYTE0x0400= LED_CODES8; while(1); 五、试验仿真图2010年10月21日星期四 动态显示一、 实验思路首先连接硬件图。单片机控制7段数码管显示数据,就要用到单片机和7段数码管,为了使软件设计简单,再用到74LS373编码器,将二进制数据编码成能让7段数码管显示数据的7段编码。然后用到一个74LS138的3/8译码器来充当编码器的选通信号输入源。单片机周边电路的设计可以参照最小系统设计。之后就是软件的设计。本实验说要达到的效果是让6位LED上循环显示数字05。程序流程图如下:NOYES关闭全部LED1ms延时取输入数据查表送取字型码送字选通信号显示一个数据是否是最后一位显示结束设置显示位数i初始化8255A开始二、 实验步骤1、 打开电脑,打开KEIL和proteus软件,2、 在proteus软件中,新建一个文件,保存在C:/目录下。3、 选择器件,将所用到的器件都选择上。4、 对照课本P138和P132,将实验电路图连接好。5、 在KEIL软件中新建一个工程文件,命名为DLED.UV2。6、 新建三个文件,分别命名为DISPLAY.H,DISPLAY.C,MIAN.C。7、 在这三个文件中写入对应的程序,并保存。8、 将这三个文件添加到建立的DLED.UV2工程中。9、 点击FLASH-CONIGURE FLASH TOOLS,在弹出的对话框中,修改晶振频率12MHZ以及勾选输出建立.HEX文件。10、 编译工程文件,有错,则更改错误的地方,直至无误。11、 将生成的DLED.HEX文件添加到刚刚建立的实验电路图中的单片机中。12、 仿真运行实验电路,观察LED显示情况,和所预期的情况想比较,不一样,则更改程序或硬件电路。知道结果和预期一样。三、实验硬件图四、实验程序1、 DISPLAY.H程序#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#define CA 0#define CC 1void turn_on(char led,char ChNumber,char mode);void LedsOff();void oneByone (char datas);extern void Init8255();unsigned char code Setect;unsigned char code LED_CODES;2、 DISPLAY.C程序 #include absacc.h#include reg51.h#include display.hunsigned 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;void Init8255()unsigned char i,j;for(j=0;j10;j+) for(i=0;i1;t1=t1;t1= t1|0x0f;P1=t1;t1=P1;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;4、 mian源程序 #include display.h#include absacc.h#include Reg51.hextern char keyCheck(char*row,char*col);void main()char row,col,r; char strIndexs6=20,20,20,20,20,20; unsigned char i,k; Init8255();while(1) r=keyCheck(&row,&col);if(r= 0)strIndexs5=20;strIndexs4=20;strIndexs1=20;strIndexs0=20;elsestrIndexs5=0;strIndexs1=0;strIndexs4=row;strIndexs0=col;for(k= 6;k!=0;k-)LedsOff();for(i= 250;i!=0;i-);turn_on(k-1,strIndexsk-1,CC);for(i=250;i!=0;i-);五、程序仿真图2010-10-25 星期一 AD转换(端口查询方式)一、实验思路本次实验采用的是端口查询方式,先向51单片机P3.3写入1,然后读入P3口。检查P3.3是为位0,不为0则重新读入P3在检测,直到P3.3为0 ,此时表示数据转换过程已结束,读片外地址0x2XXX,P1,/RD为低电平,经74LS02反向为高电平,向ADC0808的OE送读数据的信号,ADC0808将转换结果从Out7Out0送到数据总线并读入CPU。实现在LED上显示读取的A/D转换值。程序流程图如下:NO开始YES初始化8255A启动AD转换保存通道号和数据组取输入数据设置显示位数i关闭全部LED1ms延时查表送取字型码显示一个数据是否是最后一位显示结束送字选通信号二、实验步骤1、打开电脑,打开KEIL和proteus软件,2、在proteus软件中,新建一个文件,保存在C:/目录下。3、选择器件,将所用到的器件都选择上。4、对照课本P189,将实验电路图连接好。5、在KEIL软件中新建一个工程文件,命名为ADC0808.UV2。6、新建一个文件,命名为MAIN.c。7、在这一个文件中写入对应的程序,并保存。8、将这三个文件添加到建立的ADC0808.UV2工程中。9、点击FLASH-CONIGURE FLASH TOOLS,在弹出的对话框中,修改晶振频率12MHZ以及勾选输出建立.HEX文件。10、编译工程文件,有错,则更改错误的地方,直至无误。11、将生成的ADC0808.HEX文件添加到刚刚建立的实验电路图中的单片机中。12、仿真运行实验电路,观察LED显示情况,和所预期的情况想比较,不一样,则更改程序或硬件电路。知道结果和预期一样.三、实验硬件图四、实验程序1、DISPLAY.H程序和DISPLAY.C程序(如前)2、主程序ADC0808.c#include #include #include #define ADC_0808 1#define ADC0808_DATA_PORT 0x2000#define ADC0808_QUERY_PORT 0x4000#define ADC0808_START_PORT 0x2000unsigned char getData2(unsigned char ADC_Chip,unsigned char channel)unsigned char flag= 0;unsigned char value= -1;unsigned xdata ale;switch (ADC_Chip)case ADC_0808:P3= P3|0x08;XBYTEADC0808_START_PORT= channel;P3= P3&0xdf;P3= P3|0x20;P3= P3&0xdf;flag= P3;while(1)ale= 1;flag=flag & 0x08;if(flag=0) break;flag= P3;value= XBYTEADC0808_DATA_PORT;return value;break;void dispStr(char strIndexs,unsigned char value,char channel)char i,k;for(i= 0;i3;i+)strIndexsi= value%10;value= value/10;strIndexs4= channel;LedsOff();for(i=250;i!=0;i-);for(k=6;k!=0;k-)LedsOff();for(i=250;i!=0;i-);turn_On(k-1,strIndexsk-1,CC);for(i=250;i!=0;i-);void main()unsigned char value;unsigned int k;char strIndexs6=20,20,20,20,1,12;Init8255();while(1)value= getData2(ADC_0808,1);for(k=100;k!=0;k-)dispStr(strIndexs,value,1);LedsOff();五、实验仿真图2010-10-26 星期二 AD转换(总线查询方式和中断方式)一、实验思路本次实验采用的总线查询方式和中断方式。读片外地址0x4XXX,P2和/RD位低电平,经74LS02反相后打开三态门74LS125,将转换是否完成的标志EOC通过数据总线D7读入CPU,检查D7是否为1,若不为1,则重新读端口0x4XXX在检测,直到D7为1为止,读片外地址0x2XXX,P1,/RD为低电平,经74LS02反向为高电平,向ADC0808的OE送读数据的信号,ADC0808将转换结果从Out7Out0送到数据总线并读入CPU。开始YESNO初始化8255A启动AD转换保存通道号和数据组取输入数据设置显示位数i关闭全部LED1ms延时查表送取字型码显示一个数据是否是最后一位显示结束送字选通信号二、实验步骤1、打开电脑,打开KEIL和proteus软件,2、在proteus软件中,新建一个文件,保存在C:/目录下。3、选择器件,将所用到的器件都选择上。4、对照课本P189,将实验电路图连接好。5、在KEIL软件中新建一个工程文件,命名为ADZX.UV2。6、新建一个文件,命名为MAIN.c。7、在这一个文件中写入对应的程序,并保存。8、将这三个文件添加到建立的ADZX.UV2工程中。9、点击FLASH-CONIGURE FLASH TOOLS,在弹出的对话框中,修改晶振频率12MHZ以及勾选输出建立.HEX文件。10、编译工程文件,有错,则更改错误的地方,直至无误。11、将生成的ADZX.HEX文件添加到刚刚建立的实验电路图中的单片机中。12、仿真运行实验电路,观察LED显示情况,和所预期的情况想比较,不一样,则更改程序或硬件电路。知道结果和预期一样三、实验硬件图1、总线查询方式硬件图2、中断方式硬件图四、实验程序1、总线查询方式程序A、DISPLAY.H和DISPLAY.C程序同上次实验B、主程序ADZX.C#include #include #include #define ADC_0808 1 #define ADC0808_DATA_PORT 0X2000 #define ADC0808_QUERY_PORT 0x4000 #define ADC0808_START_PORT 0x2000 unsigned char getData1(unsigned char ADC_Chip,unsigned char channel)unsigned char flag= 0; unsigned char value= -1; unsigned xdata ale; switch (ADC_Chip)case ADC_0808:XBYTEADC0808_START_PORT=channel;P3=P3|0x08;P3=P3&0xdf;P3=P3|0x20;P3=P3&0xdf;flag=P3;while(1) ale=1;flag=flag &0x08;if(flag =0) break;flag=P3;value=XBYTEADC0808_DATA_PORT;return value;break;void dispStr (char strIndexs,unsigned char value,char channel)char i,k;for(i= 0;i3;i+) strIndexsi=value% 10;value=value/10;strIndexs4=channel;LedsOff();for(i= 250;i!=0;i-);for(k=6;k!=0;k-)LedsOff();for(i= 250;i!=0;i-);turn_On(k-1,strIndexsk-1,CC);for(i= 250;i!=0;i-);void main()unsigned char value;unsigned int k;char strIndexs6=20,20,20,20,1,12;Init8255();while(1)value= getData1(ADC_0808,0);for(k= 100;k!=0;k-)dispStr(strIndexs,value,0);LedsOff();2、中断方式程序A、DISPLAY.H和DISPLAY.C程序同上次实验B、主程序ADC0808ZD.C#include #include #include #define ADC_0808 1 #define ADC0808_DATA_PORT 0X2000 #define ADC0808_QUERY_PORT 0x4000 #define ADC0808_START_PORT 0x2000 unsigned char value;void dispStr (char strIndexs,unsigned char value,char channel)char i,k;for(i= 0;i3;i+) strIndexsi=value% 10;value=value/10;strIndexs4=channel;LedsOff();for(i= 250;i!=0;i-);for(k=6;k!=0;k-)LedsOff();for(i= 250;i!=0;i-);turn_On(k-1,strIndexsk-1,CC);for(i= 250;i!=0;i-);void main()unsigned xdata ale;Init8255();EX1=1;IT1=1;EA=1;XBYTEADC0808_START_PORT=5;P3=P3&0xdf;P3=P3|0x20;P3=P3&0xdf;while(1)ale=1;void EX1_Int() interrupt 2unsigned char value;char strIndexs6=20,20,20,20,1,12;EX1= 0;value=XBYTEADC0808_START_PORT;dispStr(strIndexs,value,5);LedsOff();EX1= 1;P3=P3&0xdf;P3=P3|0x20;P3=P3&0xdf;五、实验仿真图1、总线查询方式仿真图2、中断方式仿真图2010年10月31日星期日 测温放大电路、实验思路本次实验利用的是热电阻测温的原理,金属热电阻的电阻值与其温度成线性关系,将热电阻Rt介入电桥中,设在某一温度t0时,Rt的阻值为R0,将电桥调整平衡,即R1/R0=R2/R3,此时Ul=0.当Rt的温度偏离t0而变为t时,其阻值将发生变化,电桥失去平衡,若测出此时的Ul,则可根据Ul和Rt的关系,算出在温度为t时热电阻的阻值 Rt,再根据热电阻的温度-阻值关系线,换算出热电阻的温度t0。若电桥的输出电压Ul于Rt的阻值变换成线性关系,则通过运算放大、A/D转换后可方便地将Ul转换为热电阻所测温度。程序流程图如下:YESNO开始初始化8255A通道0读入数据启动AD转换标度换算出温度值关闭所有LED1ms延时用%和/运算分别得到各位数据是第二位吗数据或上80H送选通信号查表送取字型码最后一位显示吗结束二、实验步骤 1、打开电脑,打开KEIL和proteus软件,2、在proteus软件中,新建一个文件,保存在C:/目录下。3、选择器件,将所用到的器件都选择上。4、对照课本P189,将实验电路图连接好。5、在KEIL软件中新建一个工程文件,命名为WEN.UV2。6、新建一个文件,命名为MAIN.c。7、在这一个文件中写入对应的程序,并保存。8、将这三个文件添加到建立的WEN.UV2工程中。9、点击FLASH-CONIGURE FLASH TOOLS,在弹出的对话框中,修改晶振频率12MHZ以及勾选输出建立.HEX文件。10、编译工程文件,有错,则更改错误的地方,直至无误。11、将生成的WEN.HEX文件添加到刚刚建立的实验电路图中的单片机中。12、仿真运行实验电路,观察LED显示情况,和所预期的情况想比较,不一样,则更改程序或硬件电路。知道结果和预期一样三、实验硬件图四、试验程序1、Display.h#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 #define CA 0 #define CC 1 void turn_On (char led,char ChNumber,char mode); void LedsOff(); void OneByOne (char datas);void turn_On_WithDot(char led,char ChNumber,char mode); extern void Init8255(); unsigned char code Select; unsigned char code LED_CODES;2、Display.c#include #include #include 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 ; void Init8255() unsigned char i,j; for(j=0;j10;j+) for(i=0;i255;i+); XBYTEPORT_CONTROL= 0x90; LedsOff(); void turn_On (char led,char ChNumber,char mode) if(mode= CA) XBYTEPORT_C= LED_CODESChNumber; else XBYTEPORT_C=LED_CODESChNumber; XBYTEPORT_B= Selectled; void LedsOff() XBYTEPORT_B= 0x00; void turn_On_WithDot(char led,char ChNumber,char mode)if(mode= CA)XBYTEPORT_C=LED_CODESChNumber|0x80;elseXBYTEPORT_C=LED_CODESChNumber|0x80;XBYTEPORT_B=Selectled;Main.c#include #include #include #define ADC_0808 1#define ADC0808_DATA_PORT 0x2000#define ADC0808_QUERY_PORT 0x4000#define ADC0808_START_PORT 0x2000unsigned char getData2(unsigned char ADC_Chip,unsigned char channel)unsigned char flag= 0;unsigned char value= -1;unsigned xdata ale;switch (ADC_Chip)case ADC_0808:P3= P3|0x08;XBYTEADC0808_START_PORT= channel;P3= P3&0xdf;P3= P3|0x20;P3= P3&0xdf;flag= P3;while(1)ale= 1;flag=flag & 0x08;if(flag=0) break;flag= P3;value= XBYTEADC0808_DATA_PORT;return value;break;void main()unsigned char value; unsigned long t; unsigned char i,m,n; Init8255(); while(1) value=getData2(ADC_0808,0); t=(200*(unsigned long)value*100)/255+5)/10;LedsOff();for(i= 50;i!= 0;i-)for(m= 50;m!= 0;m-);for(i= 0;i200关闭电炉电源即P3与上0xEF打开电炉电源即P3或上0x10二、 实验步骤 1、打开电脑,打开KEIL和proteus软件,2、在proteus软件中,新建一个文件,保存在C:/目录下。3、选择器件,将所用到的器件都选择上。4、对照课本P189,将实验电路图连接好。5、在KEIL软件中新建一个工程文件,命名为PID.UV2。6、新建一个文件,命名为MAIN.c。7、在这一个文件中写入对应的程序,并保存。8、将这三个文件添加到建立的PID.UV2工程中。9、点击FLASH-CONIGURE FLASH TOOLS,在弹出的对话框中,修改晶振频率12MHZ以及勾选输出建立.HEX文件。10、编译工程文件,有错,则更改错误的地方,直至无误。11、将生成的PID.HEX文件添加到刚刚建立的实验电路图中的单片机中。12、仿真运行实验电路,观察LED显示情况,和所预期的情况想比较,不一样,则更改程序或硬件电路。知道结果和预期一样三、实验硬件图四、实验程序1、Display.c#include #include #include 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 ; void Init8255() unsigned char i,j; for(j=0;j10;j+) for(i=0;i255;i+); XBYTEPORT_CONTROL= 0x90; LedsOff(); void turn_On (char led,char ChNumber,char mode) if(mode= CA) XBYTEPORT_C= LED_CODESChNumber; else XBYTEPORT_C=LED_CODESChNumber; XBYTEPORT_B= Selectled; void LedsOff() XBYTEPORT_B= 0x00; void turn_On_WithDot(char led,char ChNumber,char mode)if(mode= CA)XBYTEPORT_C=LED_CODESChNumber|0x80;elseXBYTEPORT_C=LED_CODESChNumber|0x80;XBYTEPORT_B=Selectled;2、Display.Hdefine BASE 0x0000 #define PORT_A (BASE) #define PORT_B (BASE+ 1) #define PORT_C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 娱乐产业艺人劳动合同及商业活动管理协议
- 物业管理法律法规培训与物业管理规范执行协议
- 离婚协议书模板:包含养老金分割与社保权益处理
- 《离婚协议书范本:离婚后房产买卖及分割》
- 离婚补充协议:孩子抚养费及生活费用调整方案合同
- 离婚涉及上市公司股权处置及收益分配协议书
- 特种作战战例课件
- 化妆培训学校课程
- 农林技术技能测试题及答案
- 初中信息技术vb试题及答案
- 【妊娠高血压临床护理探究进展综述6000字】
- (高清版)DZT 0261-2014 滑坡崩塌泥石流灾害调查规范(1:50000)
- 高压灭菌器安全培训
- 周围神经损伤(InjuryofPeripheralNerve)
- 合并同类项 公开课比赛一等奖
- 行政事业单位食堂会计核算流程和方式
- 教师教学发展综合管理系统需求说明
- UI视觉设计(适用培训、教学)-第6章-游戏界面设计
- 四年级上册数学近似数
- 小学生卡通自我介绍PPT
- 国家职业标准-农艺工
评论
0/150
提交评论