通信网络实验_-_副本

上传人:无*** 文档编号:188896230 上传时间:2023-02-20 格式:PDF 页数:39 大小:3.17MB
收藏 版权申诉 举报 下载
通信网络实验_-_副本_第1页
第1页 / 共39页
通信网络实验_-_副本_第2页
第2页 / 共39页
通信网络实验_-_副本_第3页
第3页 / 共39页
资源描述:

《通信网络实验_-_副本》由会员分享,可在线阅读,更多相关《通信网络实验_-_副本(39页珍藏版)》请在装配图网上搜索。

1、1/39 实验一 准备性实验(一)实验大纲 一、实验目的:1熟悉掌握实验板各个常用外设的使用,熟悉单片机系统构成及编程、调试方法。2.掌握 A/D 采样及其转换程序的编写。3.掌握液晶显示驱动的程序编写及测试。4.掌握单片机串行口通信的编程和测试。二、设备环境:一块带有 A/D 采样、液晶显示、485 通信接口的实验板,一个电源适配器,一根标准串口线,PC 机一台。三、实验步骤:1测试实验板工作状态(1)编写一个简单的单片机程序,例如按下开关 S3 使 LED1 点亮。(2)将程序由计算机经过 RS-232 通信模块下载到实验板。(3)断开计算机与实验板间的连线,重新上电,在实验板上运行程序,

2、若能实现预期功能就进行下一步调试,否则检查原因重新调试。2.编写液晶驱动程序并测试,例如显示 wele,整理成一个可调用的显示程序模块,为以后其他程序的测试及开发做准备;3.编写 A/D 采样程序,通过调用显示程序模块来测试正确与否,编写并调试程序实现持续的 A/D 转换功能,例如单片机持续进行 A/D 转换并显示,这时调节电位器,液晶屏显示的电压值会随调节而变动。测试通过后,同样整理成一个可调用的 A/D 采样程序程序模块;4.编写串口通信程序模块,在主程序中调用该模块连续发送一组简单的二进制数据,利用示波器测取 DB9 接口(485 通信接口)的 TXD 端的波形,观测所取波形数据是否与发

3、送的一致,若一致,则通信接口和程序测试通过;另外,也可以通过发送一个简单的字符串在两个实验板子之间进行直接简单的串口通信测试,当一个板子能够收到另一板子发过来的字符串并通过液晶正确显示,则通信2/39 接口和程序测试通过 四、需要验证或研究的问题 1、改变电位器,液晶显示值实时改变;2、可以向电脑发送和接受数据,并在液晶显示屏上显示;3、可以通过按键控制 LED;4、能够获取拨码开关的值并显示。3/39(二)实验报告 一、实验目的:1掌握单片机实验板的使用,熟悉单片机系统构成及编程、调试方法。2.掌握 A/D 采样及其转换程序的编写。3.掌握液晶显示驱动的程序编写及测试。4.掌握单片机串行口通

4、信的编程和测试。二、实验过程:1.熟悉实验板资源:1:四针电源插座,可以直接用电脑电源中的5V 电源接口直插。注:四个针从外到里(从左至右)分别为+5V、GND、GND、无用。2:通用电源接口。注:以上两个电源接口任选其一。3:两个 DB9,485 通信接口 4:电源开关,拨下为关,拨上为开,也可以通过右边的红色电源灯判断。5:电位器,可用来调节液晶对比度。6:电源灯 7:232485 选择插针 8:485MVB 选择插针 9:端接电阻 4/39 10:端接电阻引入插针 11:LCD 液晶 12:DB9,232 通信接口 13:STC12C5A60S2 芯片 14:两个 LED 灯 15:MV

5、B 引入插针 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。具有双串口,

6、RxD2/P1.2(可通过寄存器设置到 P4.2),TxD2/P1.3(可通过寄存器设置到 P4.3)。(2)跳线接口 5/39 跳线接口 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 条控制指令,包括清显示、光标返回、置输

7、入模式、显示开/关控制、光标活字符移位、置功能、置字符发生存贮器地址、置数据存贮器地址、读忙标志或地址、写命令和读命令。2.液晶驱动程序的编写并显示功能 程序流程为:开始LCD 初始化延时设第一行显示位置显示第一行内容设第二行显示位置显示第二行内容。编写并调试程序测试显示单个数字功能,例如每次按下开关,液晶屏会显示一位数字,显示的数字为“0”、“1”、“2”、“9”、“.”依次循环。编写并调试程序测试显示多位数字的功能,例如在显示屏上同时显示各位数字 2009 3.A/D 转换程序编写并显示功能 设置模拟信号输入接口;设置 A/D 转换控制特殊功能寄存器;读取 A/D 转换结果。编写并调试程序

8、测试 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/下载”

9、按钮,然后给实验板上电复位,程序就下载到单片机内部。(4)断开计算机与实验板间的连线,重新上电复位,实验板开始运行程序。6/39 5.测试单块实验板串行口收发数据的功能(1)将实验板的跳线接口 P_232/485 的 3、4 引脚短接,使单片机的 RXD和 TXD 引脚相连。(2)编写并调试程序实现以下功能:按下开关 S3 后,单片机进行一次 A/D转换,转换结果取高八位由串行口 TXD 发送,单片机再以查询方式读取串行口RXD 的数据,对数据进行换算后在液晶屏上显示。(3)编写并调试程序使第(2)步的功能能够持续实现。三、实验程序:1.主程序:/-/新一代 1T 8051 系列 单片机内核特

10、殊功能寄存器 C51 Core SFRs/7 6 5 4 3 2 1 0 Reset Value sfr ACC =0 xE0;/Accumulator 0000,0000 sfr B =0 xF0;/B Register 0000,0000 sfr PSW =0 xD0;/Program Status Word CY AC F0 RS1 RS0 OV F1 P 0000,0000/-sbit CY =PSW7;sbit AC =PSW6;sbit F0 =PSW5;sbit RS1=PSW4;sbit RS0=PSW3;sbit OV =PSW2;sbit P =PSW0;/-sfr SP

11、=0 x81;/Stack Pointer 0000,0111 sfr DPL =0 x82;/Data Pointer Low Byte 0000,0000 sfr DPH =0 x83;/Data Pointer High Byte 0000,0000/-/新一代 1T 8051 系列 单片机系统管理特殊功能寄存器/7 6 5 4 3 2 1 0 Reset Value 7/39 sfr PCON =0 x87;/Power Control SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0001,0000/7 6 5 4 3 2 1 0 Reset Value sf

12、r AUXR =0 x8E;/Auxiliary Register T0 x12 T1x12 UART_M0 x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000/-sfr AUXR1=0 xA2;/Auxiliary Register 1 -PCA_P4 SPI_P4 S2_P4 GF2 ADRJ -DPS 0000,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

13、切换到 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 位放在AD

14、C_RESL 寄存器 1,10 位 A/D 转换结果的最高2 位放在ADC_RES 寄存器的低2 位,低 8 位放在ADC_RESL 寄存器 DPS:0,使用缺省数据指针 DPTR0 1,使用另一个数据指针 DPTR1*/-sfr WAKE_CLKO=0 x8F;/附加的 SFR WAK1_CLKO/*7 6 5 4 3 2 1 0 Reset Value PCAWAKEUP RXD_PIN_IE T1_PIN_IE T0_PIN_IE LVD_WAKE _ T1CLKO T0CLKO 0000,0000B 8/39 b7-PCAWAKEUP:PCA 中断可唤醒 powerdown。b6-RX

15、D_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/2 T1 溢出率 b0-T0

16、CLKO:允许 T0CKO(P3.4)脚输出 T0 溢出脉冲,Fck0=1/2 T1 溢出率*/-sfr CLK_DIV=0 x97;/Clock Divder -CLKS2 CLKS1 CLKS0 xxxx,x000/-sfr BUS_SPEED=0 xA1;/Stretch register -ALES1 ALES0 -RWS2 RWS1 RWS0 xx10,x011/*ALES1 and ALES0:00:The P0 address setup time and hold time to ALE negative edge is one clock cycle 01:The P0 ad

17、dress setup time and hold time to ALE negative edge is two clock cycles.10:The P0 address setup time and hold time to ALE negative edge is three clock cycles.(default)11:The P0 address setup time and hold time to ALE negative edge is four clock cycles.RWS2,RWS1,RWS0:000:The MOVX read/write pulse is

18、1 clock cycle.001:The MOVX read/write pulse is 2 clock cycles.010:The MOVX read/write pulse is 3 clock cycles.011:The MOVX read/write pulse is 4 clock cycles.(default)100:The MOVX read/write pulse is 5 clock cycles.101:The MOVX read/write pulse is 6 clock cycles.110:The MOVX read/write pulse is 7 cl

19、ock cycles.111:The MOVX read/write pulse is 8 clock cycles.*/-9/39/新一代 1T 8051 系列 单片机中断特殊功能寄存器/有的中断控制、中断标志位散布在其它特殊功能寄存器中,这些位在位地址中定义/其中有的位无位寻址能力,请参阅 新一代 1T 8051 系列 单片机中文指南/7 6 5 4 3 2 1 0 Reset Value sfr IE =0 xA8;/中断控制寄存器 EA ELVD EADC ES ET1 EX1 ET0 EX0 0 x00,0000/-sbit EA =IE7;sbit ELVD =IE6;/低压监测中

20、断允许位 sbit EADC =IE5;/ADC 中断允许位 sbit ES =IE4;sbit ET1 =IE3;sbit EX1 =IE2;sbit ET0 =IE1;sbit EX0 =IE0;/-sfr IE2 =0 xAF;/Auxiliary Interrupt -ESPI ES2 0000,0000B/-/7 6 5 4 3 2 1 0 Reset Value sfr IP =0 xB8;/中断优先级低位 PPCA PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000/-sbit PPCA =IP7;/PCA 模块中断优先级 sbit PLVD =IP6;

21、/低压监测中断优先级 sbit PADC =IP5;/ADC 中断优先级 sbit PS =IP4;sbit PT1 =IP3;sbit PX1 =IP2;sbit PT0 =IP1;sbit PX0 =IP0;/-/7 6 5 4 3 2 1 0 Reset Value sfr IPH =0 xB7;/中断优先级高位 PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 sfr IP2 =0 xB5;/-PSPI PS2 xxxx,xx00 sfr IPH2 =0 xB6;/-PSPIH PS2H xxxx,xx00/-10/39/新一代 1

22、T 8051 系列 单片机 I/O 口特殊功能寄存器/7 6 5 4 3 2 1 0 Reset Value sfr P0 =0 x80;/8 bitPort0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 1111,1111 sfr P0M0=0 x94;/0000,0000 sfr P0M1=0 x93;/0000,0000 sfr P1 =0 x90;/8 bitPort1 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 1111,1111 sfr P1M0=0 x92;/0000,0000 sfr P1M1=0 x91;

23、/0000,0000 sfr P1ASF=0 x9D;/P1 analog special function sfr P2 =0 xA0;/8 bitPort2 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 1111,1111 sfr P2M0=0 x96;/0000,0000 sfr P2M1=0 x95;/0000,0000 sfr P3 =0 xB0;/8 bitPort3 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 1111,1111 sfr P3M0=0 xB2;/0000,0000 sfr P3M1=0 xB1;

24、/0000,0000 sfr P4 =0 xC0;/8 bitPort4 P4.7 P4.6 P4.5 P4.4 P4.3 P4.2 P4.1 P4.0 1111,1111 sfr P4M0=0 xB4;/0000,0000 sfr P4M1=0 xB3;/0000,0000/7 6 5 4 3 2 1 0 Reset Value sfr P4SW=0 xBB;/Port-4 switch -LVD_P4.6 ALE_P4.5 NA_P4.4 -x000,xxxx sfr P5 =0 xC8;/8 bitPort5 -P5.3 P5.2 P5.1 P5.0 xxxx,1111 sfr P5M0

25、=0 xCA;/0000,0000 sfr P5M1=0 xC9;/11/39 0000,0000/-/新一代 1T 8051 系列 单片机定时器特殊功能寄存器/7 6 5 4 3 2 1 0 Reset Value sfr TCON=0 x88;/T0/T1 Control TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000/-sbit TF1=TCON7;sbit TR1=TCON6;sbit TF0=TCON5;sbit TR0=TCON4;sbit IE1=TCON3;sbit IT1=TCON2;sbit IE0=TCON1;sbit IT0=TCON

26、0;/-sfr TMOD=0 x89;/T0/T1 Modes GATE1 C/T1 M1_1 M1_0 GATE0 C/T0 M0_1 M0_0 0000,0000 sfr TL0 =0 x8A;/T0 Low Byte 0000,0000 sfr TH0 =0 x8C;/T0 High Byte 0000,0000 sfr TL1 =0 x8B;/T1 Low Byte 0000,0000 sfr TH1 =0 x8D;/T1 High Byte 0000,0000/-/新一代 1T 8051 系列 单片机串行口特殊功能寄存器/7 6 5 4 3 2 1 0 Reset Value sfr

27、 SCON=0 x98;/Serial Control SM0/FE SM1 SM2 REN TB8 RB8 TI RI 0000,0000/-sbit SM0=SCON7;/SM0/FE sbit SM1=SCON6;sbit SM2=SCON5;sbit REN=SCON4;sbit TB8=SCON3;sbit RB8=SCON2;sbit TI =SCON1;sbit RI =SCON0;12/39/-sfr SBUF=0 x99;/Serial Data Buffer xxxx,xxxx sfr SADEN=0 xB9;/Slave Address Mask 0000,0000 sf

28、r SADDR=0 xA9;/Slave Address 0000,0000/-/7 6 5 4 3 2 1 0 Reset Value sfr S2CON=0 x9A;/S2 Control S2SM0 S2SM1 S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI 00000000B sfr S2BUF=0 x9B;/S2 Serial Buffer xxxx,xxxx sfr BRT=0 x9C;/S2 Baud-Rate Timer 0000,0000/-/新一代 1T 8051 系列 单片机看门狗定时器特殊功能寄存器 sfr WDT_CONTR=0 xC1;/Watc

29、h-Dog-Timer Control register/7 6 5 4 3 2 1 0 Reset Value/WDT_FLAG -EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0 xx00,0000/-/-/新一代 1T 8051系列 单片机PCA/PWM 特殊功能寄存器 /7 6 5 4 3 2 1 0 Reset Value sfr CCON =0 xD8;/PCA 控制寄存器。CF CR -CCF1 CCF0 00 xx,xx00/-sbit CF =CCON7;/PCA 计数器溢出标志,由硬件或软件置位,必须由软件清 0。sbit CR =CCON6;/1:允

30、许 PCA 计数器计数,必须由软件清 0。/-/-sbit CCF1 =CCON1;/PCA 模块1 中断标志,由硬件置位,必须由软件清 0。sbit CCF0 =CCON0;/PCA 模块0 中断标志,由硬件置位,必须由软件清 0。/-sfr CMOD =0 xD9;/PCA 工作模式寄存器。CIDL -CPS2 CPS1 CPS0 ECF 0 xxx,x000 13/39/*CIDL:idle 状态时 PCA 计数器是否继续计数,0:继续计数,1:停止计数。CPS2:PCA 计数器脉冲源选择位 2。CPS1:PCA 计数器脉冲源选择位 1。CPS0:PCA 计数器脉冲源选择位 0。CPS2

31、 CPS1 CPS0 0 0 0 系统时钟频率 fosc/12。0 0 1 系统时钟频率 fosc/2。0 1 0 Timer0 溢出。0 1 1 由 ECI/P3.4 脚输入的外部时钟,最大 fosc/2。1 0 0 系统时钟频率,Fosc/1 1 0 1 系统时钟频率/4,Fosc/4 1 1 0 系统时钟频率/6,Fosc/6 1 1 1 系统时钟频率/8,Fosc/8 ECF:PCA 计数器溢出中断允许位,1-允许 CF(CCON.7)产生中断。*/-sfr CL =0 xE9;/PCA 计数器低位 0000,0000 sfr CH =0 xF9;/PCA 计数器高位 0000,000

32、0/-/7 6 5 4 3 2 1 0 Reset Value sfr CCAPM0=0 xDA;/PCA 模块 0 PWM 寄存器 -E0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000 sfr CCAPM1=0 xDB;/PCA 模块 1 PWM 寄存器 -E1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000 /En=1:允许比较功能。/CAPPn=1:允许上升沿触发捕捉功能。/CAPNn=1:允许下降沿触发捕捉功能。/MATn =1:当匹配情况发生时,允许 CCON 中的 CCFn 置位。/TOGn =1:当匹配

33、情况发生时,CEXn 将翻转。/PWMn =1:将 CEXn 设置为 PWM 输出。/ECCFn=1:允许 CCON 中的 CCFn 触发中断。/En CAPPn CAPNn MATn TOGn PWMn ECCFn/0 0 0 0 0 0 0 0 x00 未启用任何功能。/x 1 0 0 0 0 x 0 x21 16 位 CEXn 上升沿触发捕捉功能。/x 0 1 0 0 0 x 0 x11 16 位 CEXn 下降沿14/39 触发捕捉功能。/x 1 1 0 0 0 x 0 x31 16 位 CEXn 边沿(上、下沿)触发捕捉功能。/1 0 0 1 0 0 x 0 x49 16 位软件定时

34、器。/1 0 0 1 1 0 x 0 x4d 16 位高速脉冲输出。/1 0 0 0 0 1 0 0 x42 8 位 PWM。/En CAPPn CAPNn MATn TOGn PWMn ECCFn/0 0 0 0 0 0 0 0 x00 无此操作/1 0 0 0 0 1 0 0 x42 普通 8 位 PWM,无中断/1 1 0 0 0 1 1 0 x63 PWM 输出由低变高可产生中断/1 0 1 0 0 1 1 0 x53 PWM 输出由高变低可产生中断/1 1 1 0 0 1 1 0 x73 PWM 输出由低变高或由高变低都可产生中断 /-sfr CCAP0L=0 xEA;/PCA 模

35、块 0 的 捕 捉/比 较 寄 存 器 低 8 位。0000,0000 sfr CCAP0H=0 xFA;/PCA 模 块 0 的 捕 捉/比 较 寄 存 器 高 8 位。0000,0000 sfr CCAP1L=0 xEB;/PCA 模 块 1 的 捕 捉/比 较 寄 存 器 低 8 位。0000,0000 sfr CCAP1H=0 xFB;/PCA 模 块 1 的 捕 捉/比 较 寄 存 器 高 8 位。0000,0000/-/7 6 5 4 3 2 1 0 Reset Value sfr PCA_PWM0=0 xF2;/PCA 模块 0 PWM 寄存器。-EPC0H EPC0L xxxx

36、,xx00 sfr PCA_PWM1=0 xF3;/PCA 模块 1 PWM 寄存器。-EPC1H EPC1L xxxx,xx00/PCA_PWMn:7 6 5 4 3 2 1 0/-EPH EPL/B7-B2:保留/B1(EPH):在 PWM 模式下,与 CCAPnH 组成 9 位数。/B0(EPL):在 PWM 模式下,与 CCAPnL 组成 9 位数。/-/新一代 1T 8051 系列 单片机 ADC 特殊功能寄存器/7 6 5 15/39 4 3 2 1 0 Reset Value sfr ADC_CONTR=0 xBC;/A/D 转换控制寄存器 ADC_POWER SPEED1 SP

37、EED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000 sfr ADC_RES =0 xBD;/A/D 转换结果高 8 位 ADCV.9 ADCV.8 ADCV.7 ADCV.6 ADCV.5 ADCV.4 ADCV.3 ADCV.2 0000,0000 sfr ADC_RESL=0 xBE;/A/D 转换结果低2位 ADCV.1 ADCV.0 0000,0000/-/新一代 1T 8051 系列 单片机 SPI 特殊功能寄存器/7 6 5 4 3 2 1 0 Reset Value sfr SPCTL =0 xCE;/SPI Control Regi

38、ster SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 0000,0100 sfr SPSTAT=0 xCD;/SPI Status Register SPIF WCOL -00 xx,xxxx sfr SPDAT =0 xCF;/SPI Data Register 0000,0000/-/新一代 1T 8051 系列 单片机 IAP/ISP 特殊功能寄存器 sfr IAP_DATA =0 xC2;sfr IAP_ADDRH =0 xC3;sfr IAP_ADDRL =0 xC4;/7 6 5 4 3 2 1 0 Reset Value sfr IAP_CMD

39、 =0 xC5;/IAP Mode Table 0 -MS1 MS0 0 xxx,xx00 sfr IAP_TRIG =0 xC6;sfr IAP_CONTR =0 xC7;/IAP Control Register IAPEN SWBS SWRST CFAIL -WT2 WT1 WT0 0000,x000/-2.液晶显示程序#include /调用头文件(单片机内部的寄存器定义)/*P0-DB0DB7 P4.6-RS P4.5-RW P4.4-E*/#define LCD_DB P0 16/39 sbit LCD_RS=P4 6;sbit LCD_RW=P4 5;sbit LCD_E =P4

40、 4;sbit LED_RUN=P3 2;/*定义函数*/#define uchar unsigned char#define uint unsigned int void LCD_init(void);/初始化函数 void LCD_write_mand(uchar mand);/写指令函数 void LCD_write_data(uchar dat);/写数据函数 void LCD_disp_xy(uchar x,uchar y);/设置光标位置 void LCD_disp_char(uchar x,uchar y,uchar dat);/在某个屏幕位置上显示一个字符,X(0-16),y(

41、0-1)void LCD_disp_string(uchar x,uchar y,uchar*s);/显示字符串/void LCD_check_busy(void);/检查忙函数。我没用到此函数,因为通过率极低。void dellay(uint h);/延时函数 1us unsigned char code LcdBuf1=wel!;unsigned char code LcdBuf2=MCU-STUDY-BOARD;/*/*初始化函数*void LCD_init(void)/*LCD_DB=0;LCD_write_mand(0 x38);/设置 162 显示,57 点阵,8 位数据接口 de

42、llay(100);LCD_write_mand(0 x38);/设置 162 显示,57 点阵,8 位数据接口 dellay(100);LCD_write_mand(0 x38);/设置 162 显示,57 点阵,8 位数据接口 dellay(100);*/P4SW|=0 x70;/设置 P4 口为普通 IO LCD_write_mand(0 x38);/设置 162 显示,57 点阵,8 位数据接?LCD_write_mand(0 x01);/清除屏幕显示(显示清屏,光标复位到地址 00H 位置)LCD_write_mand(0 x06);/设定输入方式,增量不移位 (显示光标移动设置,写

43、入新数据后光标右移,显示屏不移动)LCD_write_mand(0 x0c);/整体显示,关光标,不闪烁/LCD_write_mand(0 x08);/关闭显示/dellay(100);17/39 /*/*写指令函数*void LCD_write_mand(uchar dat)dellay(500);LCD_DB=dat;LCD_RS=0;/指令(当 RS 和 RW 共同为低电平时可以写入指令或者显示地址)LCD_RW=0;/写入 LCD_E=1;/允许 dellay(100);LCD_E=0;/*/*写数据函数*void LCD_write_data(uchar dat)dellay(500

44、);LCD_DB=dat;LCD_RS=1;/数据(当 RS 为高电平 RW 为低电平时可以写入数据)LCD_RW=0;/写入 LCD_E=1;/允许(E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令)dellay(100);LCD_E=0;/*/*设置光标*void LCD_disp_xy(uchar x,uchar y)uchar address;if(y=1)address=0 xc0+x;else address=0 x80+x;18/39 LCD_write_mand(address);/*显示一个字符函数*void LCD_disp_char(uchar x,uc

45、har y,uchar dat)LCD_disp_xy(x,y);LCD_write_data(dat);/*/*显示字符串*void LCD_disp_string(uchar x,uchar y,uchar*s)LCD_disp_xy(x,y);while(*s)LCD_write_data(*s);s+;/*检查忙函数*void LCD_check_busy()/实践证明,在我的 LCD1602 上,检查忙指令通过率极低,以 /至于不能正常使用 LCD。因此我没有再用检查忙函数。而使 do /用了延时的方法,延时还是非常好用的。LCD_E=0;LCD_RS=0;LCD_RW=1;LCD_

46、DB=0 xff;LCD_E=1;while(LCD_DB7=1);*/*延时函数*void dellay(uint h)while(h-);/1us /*主函数*19/39 void main(void)LCD_init();/LCD_disp_char(0,0,S);/LCD_disp_char(1,0,t);LCD_disp_string(5,0,LcdBuf1);LCD_disp_string(0,1,LcdBuf2);LED_RUN=0;while(1);/*3.A/D 转换程序#include reg51_STC.H/-typedef unsigned char INT8U;typ

47、edef unsigned int INT16U;typedef unsigned long INT32U;#define uchar unsigned char#define uint unsigned int/-/以下选择 ADC 转换速率,只能选择其中一种 /SPEED1 SPEED0 A/D 转换所需时间#define AD_SPEED 0 x60/0110,0000 1 1 270 个时钟周期转换一次,/CPU 工作频率 27MHz时,/A/D 转换速度约100KHz/#define AD_SPEED 0 x40/0100,0000 1 0 540个时钟周期转换一次/#define

48、AD_SPEED 0 x20/0010,0000 0 1 810个时钟周期转换一次/#define AD_SPEED 0 x00/0000,0000 0 0 1080 个时钟周期转换一次/-void initiate_RS232(void);/串口初始化 void Send_Byte(INT8U one_byte);/发送一个字节 INT16U get_AD_result(INT8U channel);void delay(INT8U delay_time);/延时函数 void LCD_init(void);/初始化函 lcd void LCD_disp_char(uchar x,uchar

49、 y,uchar dat);/在某个屏幕位置上显示一个字符,X20/39(0-16),y(0-1)void LCD_disp_string(uchar x,uchar y,uchar*s);/显示字符串/-void main()INT16U ADC_10bit;INT32U v;INT8U V4=0,i;initiate_RS232();/波特率=9600 LCD_init();/lcd ADC_CONTR|=0 x80;/1000,0000 打开 A/D 转换电源 while(1)Send_Byte(0 xAA);Send_Byte(0 xAA);ADC_10bit=get_AD_resul

50、t(0);/P1.2 为 A/D 当前通道 Send_Byte(ADC_10bit 8);/发送高 8 位测量结果 delay(0 x1);/ADC_10bit=get_AD_result(3);/P1.3 为 A/D 当前通道,测量并发送结果 /Send_Byte(ADC_10bit 8);/发送高 8 位测量结果 delay(0 x30);/延时 v=50*(ADC_10bit 6)/1024;V3=V;V2=v%10+48;v/=10;V1=.;V0=v+48;LCD_disp_string(0,0,voltage:);/lcd 显示 LCD_disp_string(8,0,V);/-v

51、oid delay(INT8U delay_time)/延时函数 INT16U n;while(delay_time-)21/39 n=6000;while(-n);/-void initiate_RS232(void)/串口初始化 SCON=0 x50;/0101,0000 8 位数据位,无奇偶校验 /PCON|=0 x80;/SMOD 置 1 TMOD=0 x21;/0011,0001 设置定时器 1 为 8 位自动重装计数器 TH1=0 xFD;/设置定时器 1 自动重装数 TL1=0 xFD;TR1=1;/开定时器 1 ES=1;/允许串口中断 EA=1;/开总中断 /-void Se

52、nd_Byte(INT8U one_byte)/发送一个字节 ES=0;/关串口中断 TI=0;/清零串口发送完成中断请求标志 SBUF=one_byte;while(TI=0);/等待发送完成 TI=0;/清零串口发送完成中断请求标志 ES=1;/允许串口中断 /-INT16U get_AD_result(INT8U channel)ADC_RES =0;channel&=0 x07;/0000,0111 清 0 高 5 位 ADC_CONTR=AD_SPEED;ADC_CONTR=0 xE0;/1110,0000 清 ADC_FLAG,ADC_START 位和低 3 位 ADC_CONTR

53、|=channel;/选择 A/D 当前通道 delay(1);/使输入电压达到稳定 ADC_CONTR|=0 x08;/0000,1000 令 ADCS=1,启动 A/D 转换,while(1)/等待 A/D 转换结束 if(ADC_CONTR&0 x10)/0001,0000 测试 A/D 转换结束否 break;22/39 ADC_CONTR&=0 xE7;/1111,0111 清 ADC_FLAG 位,关闭A/D 转换,return(ADC_RES8|ADC_RESL);/返回 A/D 10 位转换结果 四、实验结果:1、调节电位器输入不同的电压信号并在实验板的液晶屏显示出来 经过调试

54、,实验板能够正常工作,下载程序并运行。显示模块正常,能够显23/39 示单个和多位字符。能够实现 A/D 转换并显示其功能。串行口通信正常。2、把采样信号经 RS232 送至上位机并用 keil 软件观测 五、实验体会:通过本次实验,了解了单片机实验板的构成以及各部分的实现功能,掌握了液晶显示,A/D 转换程序的编写,初步了解串口通信的实现过程,调节电位器改变电阻值,通过 A/D 变换器后在液晶显示器上,显示了不同的电压值,并通过上位机的 keil 软件显示了相应的十六进制数字量,达到了准备性试验的目的。同时通过这次试验我学到了很多关于 STC12C5A60S2 芯片的知识,对简单的数据通信有

55、了初步的概念。在看懂程序的过程中,我重新查阅了很多 51 单片机的课本,掌握了很多相关的知识感觉受益很多,为后面的实验打下了基础。24/39 实验二 异步串行通信(一)实验大纲 一、实验目的:利用实验板上的电位器、A/D 变换器、显示器做串行接口简单通信实验,重点是通信协议(包括字长、波特率、校验、停止位等),验证所制定的通信协议能否正常工作。二、设备环境:两块带有 A/D 采样、液晶显示、485 通信接口的实验板,两个电源适配器、一根标准串口线,一台示波器。三、实验步骤:1.制定通信协议(包括字长、波特率、校验、停止位等);2.编写两个板子之间直接的串行接口简单通信程序,要求在一块板子上进行

56、 A/D 采样的值通过串口发送到另一块板子上并在其上的液晶正确显示;3.在两块板子上分别烧写完程序后,拨动其中一块板子上的电位器,观察另一块板子液晶的显示情况 四、实验原理:异步传送的特点是:数据以字符方式随机且断续地在线路上传送(但在同一字符的内部的传送是同步的)。各字符的传送依发送方的需要可连续,也可间断。通信双方用各自的时钟源来控制发送和接收。通信双方按异步通信协议传输字符。异步通信格式如图4.2 所示,每个字符由起始位、数据位、奇偶校验位和停止位四个部分顺序组成。这四个部分组成异步传输中的一个传输单元,即字符帧。图1 异步通信的字符帧格式 25/39 起始位:为“0”信号,占1 位。起

57、始位的作用有两个:表示一个新字符帧的开始。即线路上不传送字符时,应保持为“1”。接收端检测线路状态连续为“1”后或在停止位后有一个“0”,就知道将发来一个新的字符帧。用以同步接收端的时钟,以保证后续的接收能正确进行。数据位:紧接于起始位后面,它可以占5、6、7 或8 位不等,数据的位数依最佳传送速率来确定。如所传数据为ASCII码字符,则常取7 位。数据位传输的顺序,总是最低位(LSB)DB0B在先。奇偶校验位:在数据位之后,占1 位。它用来检验信息传送是否有错。它的状态常由发送端的奇偶校验电路确定。奇偶位的值取决于校验类型,若为偶校验,则数据位和校验位中逻辑“1”的个数必须是偶数;若为奇校验

58、,则数据位和校验位中逻辑“1”的个数必须是奇数。也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送过程是否有错。停止位:用“1”来表征一个字符帧的结束。停止位可以占1 位、1.5 位或2 位不等。接收端收到停止位时,表明这一字符已接收完毕,也表明下一个字符帧可能到来。若停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态。五、需要验证的问题 验证通信协议是否正确。26/39(二)实验报告 一、实验要求:利用实验板上的电位器、A/D 变换器、显示器做串行接口简单通信实验。二、实验过程 测试两块实验板通过串行口收发数据的功能(1)将两块实验板 RS-485 通信模块

59、用带 DB9 接口的连线连接,如将 A 板的J-F1 接口与 B 板的 J-M1 接口连接,在调试程序时要将两板实验板跳线接口P_232/485的 1、3 引脚和 2、4 引脚分别短接。(2)编写并调试程序实现以下功能:按下开关S3 后,单片机 A 进行一次A/D 转换,转换结果取高八位由串行口 TXD 发送,单片机 B 再以查询方式读取串行口 RXD 的数据,对数据进行换算后在液晶屏上显示。(3)编写并调试程序使第(2)步功能能够持续实现。三、实验程序编写 1.发送机:A.流程图:延时发送机主程序调用A/D 转换程序将 A/D 转换结果发送到SBUF B.发送机程序:27/39 void m

60、ain(void)P4SW|=0 x70;/设置 P4 口为普通 IO ADC_init();/调用 AD 转换程序 SerialInit();/串口通信初始化 ADC_POWER_ON();DELAY(1);while(1)LED_RUN=1;DELAY(8000);DELAY(8000);ADC_START(0);/调用 AD 转换程序 Tx_Byte(ADC_RES);/调用串口通信程序 void Tx_Byte(ADC_Result)EN_485=0;DELAY(2);TI=0;SBUF=ADC_Result;/把 AD 转换结果发送出去 while(TI=0);TI=0;EN_485

61、=1;DELAY(10);DELAY()/延时函数 unsigned int n;while(delay_time-)28/39 n=6000;while(-n);2.接收机 A.流程图:接收机主程序调用串口通信接收程序液晶显示程序延时 B.接收机程序:void main()uchar i=0;uchar Data_Len=0;long ADValue=0;uchar LcdData8;for(i=0;i=chLen)break;if(+wNowWaitwWait)break;while(1);return cht;DELAY()/延时函数 unsigned int n;while(delay

62、_time-)n=6000;while(-n);31/39 三、实验结论 经过调试,能够实现两板之间的通信,在一块板子上改变模拟电压,能够传输到另一块板子上,并且能够显示。实验结果如图中显示为3.6 伏。四、实验体会 通过本次实验对通信协议的制定过程有了一定的了解,掌握了两个实验板间通过串行口收发数据的过程。在整个实验过程中,虽然遇到了很多困难,但大家齐心协力共同解决,最终一一化解。这对于以后的实验有很大的帮助。32/39 实验三帧封装与组网(一)实验大纲 一、实验目的:模拟一个简单的数据链路层的封装功能,即把用户的一组数据,按照通用串行通信协议组帧,实现多节点通信。(3 个节点)完成将三个或

63、三个以上实验板的组网通信实验,实现每个节点都能向网上发数据,网上的其他节点都能捕获属于自己的数据并显示、二、设备环境:一台 PC 机、三块带有 A/D 采样、液晶显示、485 通信接口的实验板,三个电源适配器、两根标准串口线 三、实验步骤:1.按两两相连的方法使用双绞线连接三块电路板;2.在两个终端节点上,各接入一个终端电阻(阻值为 120 欧);。3.按照通用串行通信协议组帧;4.编写多节点通信程序,要求每个节点都有主动向总线发送数据的控制按键,可以手动动态设置发送目的节点地址的功能,实现的整个过程是:当一个节点手动设置完目的地址后,按下发送按键,该节点将本地 A/D采样值发送的总线上,目的

64、节点收到数据包经校验通过后在该显示屏上显示所受到的电压值,而其他节点无影响;5.在三块板子上分别烧写程序后,对其中一块板设置另外两块板子的任意一个地址并按下发送按键,观察所要发送的目的板的显示屏,若其上正确显示所发信息且另一块板子无影响,则测试通过。四、实验原理:(一)通用串行通信协议 33/39(1)起始标志 起始标志为02H,用以标志帧的起始和前一帧的终止。标志字段也可以作为帧与帧之间的填充字符。通常,在不进行帧传送的时刻,信道仍处于激活状态,在这种状态下,发方不断地发送标志字段,便可认为一个新的帧传送已经开始。(2)报文长度 通过确定报文长度来确定帧的结束。(3)地址域地址字段的内容取决

65、于所采用操作方式。在操作方式中,有主站、从站、组合站之分。每一个从站和组合站都被分配一个唯一的地址。命令帧中的地址字段携带的是对方站的地址,而响应帧中的地址字段所携带的地址是本站的地址。某一地址也可分配给不止一个站,这种地址称为组地址,利用一个组地址传输的帧能被组内所有拥有该组一焉的站接收。但当一个站或组合站发送响应时,它仍应当用它唯一的地址。低五位表示 32 从站地址;高三位表示报文类型(000 标准,001 广播,1XX 特殊)(4)数据域参数区定义通信双方参数传送机制、定义;过程数据区存放对从节点读写的参数值;过程数据包括主-从的控制字和控制输出。从-主的状态字和实际测量值。(5)校验字

66、节帧校验可以选择奇偶校验,CRC 校验等(二)串行口的工作模式 串行口的四种工作模式中,模式1、2、3 用于通信,模式0 主要用于I/O 口扩展。串行口工作在模式0状态下,串行口为同步移位寄存器方式。RxD(P3.0)端输入输出数据,而TxD(P3.1)线专用于输出时钟脉冲给外部移位寄存器。发送、接收的是 8 位数据,低位在先。串行口工作在模式 1状态下,为8 位异步通信口,即一字符帧由 10 位组成:1 位起始位、8位数据位和1 位停止位。串行口工作在模式2状态下,为9 位异步通信口,即一字符帧由 11 位组成:1 位起始位、8位数据位、1 位可编程位TB8(第9 数据位)和1 位停止位。发送时,TB8 根据需要设置为0 或1(TB8 既可作为多机通信中的地址数据标志位又可作为数据的奇偶校验位);接收时,TB8 之值被送入SCON 中的RB8。串行口工作在模式 3 状态下,除了波特率可编程外,其余与模式 2 相同。(三)三节点的主从式通信 34/39(1)主机置SM2=0;(2)所有从机置SM2=1,处于等待接收地址帧、准备与主机通信的状态;(3)主机发送一帧信息,其中包含被寻址从机

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

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

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


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