通信网络实验副本.docx
《通信网络实验副本.docx》由会员分享,可在线阅读,更多相关《通信网络实验副本.docx(46页珍藏版)》请在冰豆网上搜索。
通信网络实验副本
实验一准备性实验
〔一〕实验大纲
一、实验目的:
1.熟悉掌握实验板各个常用外设的使用,熟悉单片机系统构成与编程、调试方法。
2.掌握A/D采样与其转换程序的编写。
3.掌握液晶显示驱动的程序编写与测试。
4.掌握单片机串行口通信的编程和测试。
二、设备环境:
一块带有A/D采样、液晶显示、485通信接口的实验板,一个电源适配器,一根标准串口线,PC机一台。
三、实验步骤:
1.测试实验板工作状态
〔1〕编写一个简单的单片机程序,例如按下开关S3使LED1点亮。
〔2〕将程序由计算机经过RS-232通信模块下载到实验板。
〔3〕断开计算机与实验板间的连线,重新上电,在实验板上运行程序,假设能实现预期功能就进展下一步调试,否那么检查原因重新调试。
2.编写液晶驱动程序并测试,例如显示wele,整理成一个可调用的显示程序模块,为以后其他程序的测试与开发做准备;
3.编写A/D采样程序,通过调用显示程序模块来测试正确与否,编写并调试程序实现持续的A/D转换功能,例如单片机持续进展A/D转换并显示,这时调节电位器,液晶屏显示的电压值会随调节而变动。
测试通过后,同样整理成一个可调用的A/D采样程序程序模块;
4.编写串口通信程序模块,在主程序中调用该模块连续发送一组简单的二进制数据,利用示波器测取DB9接口〔485通信接口〕的TXD端的波形,观测所取波形数据是否与发送的一致,假设一致,那么通信接口和程序测试通过;另外,也可以通过发送一个简单的字符串在两个实验板子之间进展直接简单的串口通信测试,当一个板子能够收到另一板子发过来的字符串并通过液晶正确显示,那么通信接口和程序测试通过
四、需要验证或研究的问题
1、改变电位器,液晶显示值实时改变;
2、可以向电脑发送和承受数据,并在液晶显示屏上显示;
3、可以通过按键控制LED;
4、能够获取拨码开关的值并显示。
〔二〕实验报告
一、实验目的:
1.掌握单片机实验板的使用,熟悉单片机系统构成与编程、调试方法。
2.掌握A/D采样与其转换程序的编写。
3.掌握液晶显示驱动的程序编写与测试。
4.掌握单片机串行口通信的编程和测试。
二、实验过程:
1.熟悉实验板资源:
1:
四针电源插座,可以直接用电脑电源中的5V电源接口直插。
注:
四个针从外到里〔从左至右〕分别为+5V、GND、GND、无用。
2:
通用电源接口。
注:
以上两个电源接口任选其一。
3:
两个DB9,485通信接口
4:
电源开关,拨下为关,拨上为开,也可以通过右边的红色电源灯判断。
5:
电位器,可用来调节液晶比照度。
6:
电源灯7:
232—485选择插针
8:
485—MVB选择插针9:
端接电阻
10:
端接电阻引入插针11:
LCD液晶
12:
DB9,232通信接口13:
STC12C5A60S2芯片
14:
两个LED灯15:
MVB引入插针
16:
两个按键17:
第二路串口引入插针
18:
电位器,用于AD采用的输入
19:
复位按键20:
LED灯
21:
多余的IO口引出插针
22:
六位拨码开关,实际只有前五位有效〔从左至右,往下拨置地,往上拨至高〕
〔1〕单片机STC12C5A60S2
STC12C5A60S2单片机是单时钟/机器周期(1T)的单片机,内部集成MAX810专用复位电路〔外部晶体12M以下时,复位脚可直接1K电阻到地〕,2路PWM,8路高速10位A/D转换,转换速度可达250K/S。
其工作频率X围为0-35MHz,片上集成1280字节RAM。
具有双串口,RxD2/P1.2(可通过存放器设置到P4.2),TxD2/P1.3(可通过存放器设置到P4.3)。
〔2〕跳线接口
跳线接口P_232/485用于RS-232通信与RS-485通信的切换。
当RXD232与RXD、TXD232与TXD跳在一起时,为RS-232通信,用于单片机从PC机上下载程序;当RXD485与RXD、TXD485与TXD跳在一起时,为RS-485通信,用于同各单片机之间的多机通信。
〔3〕1602液晶显示模块
1602液晶显示模块最正确工作电压为5V。
模块内部的控制器共有11条控制指令,包括清显示、光标返回、置输入模式、显示开/关控制、光标活字符移位、置功能、置字符发生存贮器地址、置数据存贮器地址、读忙标志或地址、写命令和读命令。
2.液晶驱动程序的编写并显示功能
程序流程为:
开始→LCD初始化→延时→设第一行显示位置→显示第一行内容→设第二行显示位置→显示第二行内容。
编写并调试程序测试显示单个数字功能,例如每次按下开关,液晶屏会显示一位数字,显示的数字为“0〞、“1〞、“2〞、…“9〞、“.〞依次循环。
编写并调试程序测试显示多位数字的功能,例如在显示屏上同时显示各位数字2009
3.A/D转换程序编写并显示功能
设置模拟信号输入接口;设置A/D转换控制特殊功能存放器;读取A/D转换结果。
编写并调试程序测试A/D转换功能,如按下开关后,单片机进展一次A/D转换,转换的结果换算成电压值,并在液晶屏上显示。
4.实验板调试方法
〔1〕用带DB9接口的连线将实验板的J_UART1接口与计算机的DB9串行接口连接,并将跳线接口P_232/485的3、5引脚和4、6引脚分别短接,此时实验板处于断电状态。
〔2〕用编译器将编写的程序编译成*.bin或*.hex格式文件。
〔3〕在计算机上运行单片机编程PC端控制软件STC-ISP.exe软件,通过该软件选择单片机型号、需要烧录的文件、计算机串行口号,选择下次冷启动后时钟源为“外部晶体或时钟〞,选择“Download/下载〞按钮,然后给实验板上电复位,程序就下载到单片机内部。
〔4〕断开计算机与实验板间的连线,重新上电复位,实验板开始运行程序。
5.测试单块实验板串行口收发数据的功能
〔1〕将实验板的跳线接口P_232/485的3、4引脚短接,使单片机的RXD和TXD引脚相连。
〔2〕编写并调试程序实现以下功能:
按下开关S3后,单片机进展一次A/D转换,转换结果取高八位由串行口TXD发送,单片机再以查询方式读取串行口RXD的数据,对数据进展换算后在液晶屏上显示。
〔3〕编写并调试程序使第〔2〕步的功能能够持续实现。
三、实验程序:
1.主程序:
//--------------------------------------------------------------------------------
//新一代1T8051系列单片机内核特殊功能存放器C51CoreSFRs
//76543210ResetValue
sfrACC=0xE0;//Accumulator0000,0000
sfrB=0xF0;//BRegister0000,0000
sfrPSW=0xD0;//ProgramStatusWordCYACF0RS1RS0OVF1P0000,0000
//-----------------------------------
sbitCY=PSW^7;
sbitAC=PSW^6;
sbitF0=PSW^5;
sbitRS1=PSW^4;
sbitRS0=PSW^3;
sbitOV=PSW^2;
sbitP=PSW^0;
//-----------------------------------
sfrSP=0x81;//StackPointer0000,0111
sfrDPL=0x82;//DataPointerLowByte0000,0000
sfrDPH=0x83;//DataPointerHighByte0000,0000
//--------------------------------------------------------------------------------
//新一代1T8051系列单片机系统管理特殊功能存放器
//76543210ResetValue
sfrPCON=0x87;//PowerControlSMODSMOD0LVDFPOFGF1GF0PDIDL0001,0000
//76543210ResetValue
sfrAUXR=0x8E;//AuxiliaryRegisterT0x12T1x12UART_M0x6BRTRS2SMODBRTx12EXTRAMS1BRS0000,0000
//-----------------------------------
sfrAUXR1=0xA2;//AuxiliaryRegister1-PCA_P4SPI_P4S2_P4GF2ADRJ-DPS0000,0000
/*
PCA_P4:
0,缺省PCA在P1口
1,PCA/PWM从P1口切换到P4口:
ECI从P1.2切换到P4.1口,
PCA0/PWM0从P1.3切换到P4.2口
PCA1/PWM1从P1.4切换到P4.3口
SPI_P4:
0,缺省SPI在P1口
1,SPI从P1口切换到P4口:
SPICLK从P1.7切换到P4.3口
MISO从P1.6切换到P4.2口
MOSI从P1.5切换到P4.1口
SS从P1.4切换到P4.0口
S2_P4:
0,缺省UART2在P1口
1,UART2从P1口切换到P4口:
TxD2从P1.3切换到P4.3口
RxD2从P1.2切换到P4.2口
GF2:
通用标志位
ADRJ:
0,10位A/D转换结果的高8位放在ADC_RES存放器,低2位放在ADC_RESL存放器
1,10位A/D转换结果的最高2位放在ADC_RES存放器的低2位,低8位放在ADC_RESL存放器
DPS:
0,使用缺省数据指针DPTR0
1,使用另一个数据指针DPTR1
*/
//-----------------------------------
sfrWAKE_CLKO=0x8F;//附加的SFRWAK1_CLKO
/*
76543210ResetValue
PCAWAKEUPRXD_PIN_IET1_PIN_IET0_PIN_IELVD_WAKE_T1CLKOT0CLKO0000,0000B
b7-PCAWAKEUP:
PCA中断可唤醒powerdown。
b6-RXD_PIN_IE:
当P3.0(RXD)下降沿置位RI时可唤醒powerdown(必须打开相应中断)。
b5-T1_PIN_IE:
当T1脚下降沿置位T1中断标志时可唤醒powerdown(必须打开相应中断)。
b4-T0_PIN_IE:
当T0脚下降沿置位T0中断标志时可唤醒powerdown(必须打开相应中断)。
b3-LVD_WAKE:
当CMPIN脚低电平置位LVD中断标志时可唤醒powerdown(必须打开相应中断)。
b2-
b1-T1CLKO:
允许T1CKO(P3.5)脚输出T1溢出脉冲,Fck1=1/2T1溢出率
b0-T0CLKO:
允许T0CKO(P3.4)脚输出T0溢出脉冲,Fck0=1/2T1溢出率
*/
//-----------------------------------
sfrCLK_DIV=0x97;//ClockDivder-----CLKS2CLKS1CLKS0####,x000
//-----------------------------------
sfrBUS_SPEED=0xA1;//Stretchregister--ALES1ALES0-RWS2RWS1RWS0##10,x011
/*
ALES1andALES0:
00:
TheP0addresssetuptimeandholdtimetoALEnegativeedgeisoneclockcycle
01:
TheP0addresssetuptimeandholdtimetoALEnegativeedgeistwoclockcycles.
10:
TheP0addresssetuptimeandholdtimetoALEnegativeedgeisthreeclockcycles.(default)
11:
TheP0addresssetuptimeandholdtimetoALEnegativeedgeisfourclockcycles.
RWS2,RWS1,RWS0:
000:
TheMOVXread/writepulseis1clockcycle.
001:
TheMOVXread/writepulseis2clockcycles.
010:
TheMOVXread/writepulseis3clockcycles.
011:
TheMOVXread/writepulseis4clockcycles.(default)
100:
TheMOVXread/writepulseis5clockcycles.
101:
TheMOVXread/writepulseis6clockcycles.
110:
TheMOVXread/writepulseis7clockcycles.
111:
TheMOVXread/writepulseis8clockcycles.
*/
//--------------------------------------------------------------------------------
//新一代1T8051系列单片机中断特殊功能存放器
//有的中断控制、中断标志位散布在其它特殊功能存放器中,这些位在位地址中定义
//其中有的位无位寻址能力,请参阅新一代1T8051系列单片机中文指南
//76543210ResetValue
sfrIE=0xA8;//中断控制存放器EAELVDEADCESET1EX1ET0EX00x00,0000
//-----------------------
sbitEA=IE^7;
sbitELVD=IE^6;//低压监测中断允许位
sbitEADC=IE^5;//ADC中断允许位
sbitES=IE^4;
sbitET1=IE^3;
sbitEX1=IE^2;
sbitET0=IE^1;
sbitEX0=IE^0;
//-----------------------
sfrIE2=0xAF;//AuxiliaryInterrupt------ESPIES20000,0000B
//-----------------------
//76543210ResetValue
sfrIP=0xB8;//中断优先级低位PPCAPLVDPADCPSPT1PX1PT0PX00000,0000
//--------
sbitPPCA=IP^7;//PCA模块中断优先级
sbitPLVD=IP^6;//低压监测中断优先级
sbitPADC=IP^5;//ADC中断优先级
sbitPS=IP^4;
sbitPT1=IP^3;
sbitPX1=IP^2;
sbitPT0=IP^1;
sbitPX0=IP^0;
//-----------------------
//76543210ResetValue
sfrIPH=0xB7;//中断优先级高位PPCAHPLVDHPADCHPSHPT1HPX1HPT0HPX0H0000,0000
sfrIP2=0xB5;//------PSPIPS2####,##00
sfrIPH2=0xB6;//------PSPIHPS2H####,##00
//-----------------------
//新一代1T8051系列单片机I/O口特殊功能存放器
//76543210ResetValue
sfrP0=0x80;//8bitPort0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.01111,1111
sfrP0M0=0x94;//0000,0000
sfrP0M1=0x93;//0000,0000
sfrP1=0x90;//8bitPort1P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.01111,1111
sfrP1M0=0x92;//0000,0000
sfrP1M1=0x91;//0000,0000
sfrP1ASF=0x9D;//P1analogspecialfunction
sfrP2=0xA0;//8bitPort2P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.01111,1111
sfrP2M0=0x96;//0000,0000
sfrP2M1=0x95;//0000,0000
sfrP3=0xB0;//8bitPort3P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.01111,1111
sfrP3M0=0xB2;//0000,0000
sfrP3M1=0xB1;//0000,0000
sfrP4=0xC0;//8bitPort4P4.7P4.6P4.5P4.4P4.3P4.2P4.1P4.01111,1111
sfrP4M0=0xB4;//0000,0000
sfrP4M1=0xB3;//0000,0000
//76543210ResetValue
sfrP4SW=0xBB;//Port-4switch-LVD_P4.6ALE_P4.5NA_P4.4----x000,####
sfrP5=0xC8;//8bitPort5----P5.3P5.2P5.1P5.0####,1111
sfrP5M0=0xCA;//0000,0000
sfrP5M1=0xC9;//0000,0000
//--------------------------------------------------------------------------------
//新一代1T8051系列单片机定时器特殊功能存放器
//76543210ResetValue
sfrTCON=0x88;//T0/T1ControlTF1TR1TF0TR0IE1IT1IE0IT00000,0000
//-----------------------------------
sbitTF1=TCON^7;
sbitTR1=TCON^6;
sbitTF0=TCON^5;
sbitTR0=TCON^4;
sbitIE1=TCON^3;
sbitIT1=TCON^2;
sbitIE0=TCON^1;
sbitIT0=TCON^0;
//-----------------------------------
sfrTMOD=0x89;//T0/T1ModesGATE1C/T1M1_1M1_0GATE0C/T0M0_1M0_00000,0000
sfrTL0=0x8A;//T0LowByte0000,0000
sfrTH0=0x8C;//T0HighByte0000,0000
sfrTL1=0x8B;//T1LowByte0000,0000
sfrTH1=0x8D;//T1HighByte0000,0000
//--------------------------------------------------------------------------------
//新一代1T8051系列单片机串行口特殊功能存放器
//76543210ResetValue
sfrSCON=0x98;//SerialControlSM0/FESM1SM2RENTB8RB8TIRI0000,0000
//-----------------------------------
sbitSM0=SCON^7;//SM0/FE
sbitSM1=SCON^6;
sbitSM2=SCON^5;
sbitREN=SCON^4;
sbitTB8=SCON^3;
sbitRB8=SCON^2;
sbitTI=SCON^1;
sbitRI=SCON^0;
//-----------------------------------
sfrSBUF=0x99;//SerialDataBuffer####,####
sfrSADEN=0xB9;//SlaveAddressMask0000,0000
sfrSADDR=0xA9;//SlaveAddress0000,0000
//-----------------------------------
//76543210ResetValue
sfrS2CON=0x9A;//S2ControlS2SM0S2SM1S2SM2S2RENS2TB8S2RB8S2TIS2RI00000000B
sfrS2BUF=0x9B;//S2SerialBuffer####,####
sfrBRT=0x9C;//S2Baud-RateTimer0000,0000
//--------------------------------------------------------------------------------
//新一代1T8051系列单