1、摘要本文通过单片机的串口并经过 MAX202 电平转换,可实现两个单片机之间实时会话,半双工工作模式;程序中设有发送接收允许、自行校验,提高了通信的准确度;可以将接收数据储存并将储存数据进行读取,可储存 99 个数据;设有软件复位功能,防止程序走死。关键字:实时会话 自行校验 软件复位AbstractThrough and through the MAX202 chip serial level converter, enabling real-time conversation, half-duplex mode between two microcontrollers; program f
2、eatures allow sending and receiving, self check and improve the accuracy of communication; may be receiving data storage and store data read, can store 99 data; has a software reset function to prevent the program go to die.Key words: live Session self-calibration software reset session1目录摘要 .1Abstr
3、act.1目录 .2第 1 章 课题概述 .3第 2 章 总体设计方案 .3第 3 章 硬件设计 .33.1 单片机 .33.2 UT62256CPCL 芯片 .33.3 单片机间串行通讯 .43.4 按键与显示 .43.5 软件复位 .43.6 读取储存数据 .4第 4 章 软件设计与调试 .54.1 待机界面 .54.2 通信协议 .54.2.1 发送接收允许 .54.2.2 自行校验 .54.3 软件复位 .64.4 储存接收数据 .64.5 读取接收数据 .64.6 总程序框图 .6第 5 章 结论 .8第 6 章 参考文献 .8程序 .92第 1 章 课题概述单片机行业已经有了很久的
4、历史,随着科学技术的进步和社会的发展,单片机行业更加迅速的发展起来。不论在工业还是民也上都有很好的发展和应用,得到大家很好的认可和高度的评价。单片机的通信接口是各台仪表之间或仪表与计算机之间进行信息交换和传输的联络装置。串行通信按同步方式可分为异步通信和同步通信两种基本通信方式。它是在数字化的基础上用微处理器装备起来,是计算机技术与电子仪器相结合的产物。它具有数据存储、运算、逻辑判断能力,能根据被测参数的变化自选量程,可自动校正,自动补偿,自寻故障等,可以做一些需要人类的智慧才能完成的工作,既具备了一定的智能,故称为智能仪器。 本课程设计通过单片机的串口并经过 MAX202 电平转换,可实现两
5、个单片机之间实时会话,半双工工作模式,数码管显示发送和接收过程。第 2 章 总体设计方案方案一:编写发送和接收程序,显示发送和接收数据。方案二:编写发送和接收程序,添加发送和接收允许程序和自行校验程序,显示发送和接收数据。方案三:编写待机界面,编写发送和接收程序,添加发送和接收允许程序和自行校验程序,显示发送和接收数据程序,储存接收数据程序,显示储存数据程序,软件复位程序。方案四:在方案三基础上添加看门狗程序。四个方案是这段时间内不断探索、循序渐进的结果,由于能力有限,添加看门狗程序后,程序一直复位,不知如何关闭看门狗,程序不能正常进行工作,最终选择方案三。第 3 章 硬件设计3.1 单片机本
6、文使用 STC12C5A60S2 单片机,重要参数介绍:62KB 容量 ROM,1280 字节 RAM,4 个 16 位定时器,7 路外部中断,8 路 10 位精度 ADC,有两个串口。3.2 UT62256CPCL 芯片单片机接收数据存放在外部 RAMUT62256CPCL 芯片中,有 32KB 容量。33.3 单片机间串行通讯本文使用 MAX202 电平转换芯片,用 RS-232 接口进行串口通信,通信过程如图 1 所示。图 13.4 按键与显示按键与显示使用芯片 CH452。CH451 是一个整合了数码管显示驱动和键盘扫描控制以及 P 监控的多功能外围芯片。CH451 内置 RC 振荡电
7、路,可以动态驱动 8 位数码管或者 64 位 LED,具有 BCD 译码、闪烁、移位等功能;同时还可以进行 64 键的键盘扫描;CH451 通过可以级联的串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。3.5 软件复位使用 STC12C5A60S2 中的特殊功能寄存器 IAP_CONTR 可以实现,硬件上使用外部中断 INT0,在中断程序改变 IAP_CONTR 的值实现软件复位,外部中断 INT0的接口电路如图 2 所示。3.6 读取储存数据读取储存数据,硬件上使用外部中断 INT1,在中断程序中读取储存数据,外部中断 INT1 的接口电路如图 2 所示。4图 2第 4 章
8、软件设计与调试4.1 待机界面当单片机开机或软件复位后,系统板上 4 个数码管会显示“HELLO” ,开始显示“HELL ”,一秒之后显示“ELLO” 。4.2 通信协议本文单片机通信采用 2400 的波特率,串行口工作方式为方式 1,设有发送接收允许和自行校验。4.2.1 发送接收允许设两个进行实时回话的单片机分别为单片机 A 和单片机 B,单片机 A 处于接收等待状态,单片机 B 处于发送状态,单片机 B 发送“8AH” ,单片机 A 接收到“8AH ”时发送“A8H” ,当单片机 B 接收到“A8H ”时表示建立通信关系可以发送数据。4.2.2 自行校验当两单片机建立通信关系时,单片机
9、B 发送数据的原码和反码,单片机 A判断数据的原码和反码是否匹配,若匹配,单片机 A 发送“AAH” ,当单片机 B接收到“AAH” ,表示发送数据正确;若数据的原码和反码不匹配,单片机 A 发送“55H ”,当单片机 B 接收到“55H” ,表示发送数据不正确,单片机 A 系统板数码管显示“J-Er” ,单片机 B 系统板数码管显示“F-Er ”,单片机 B 重新发送数据的原码和反码。54.3 软件复位软件复位使用 STC125A60S2 单片机的特殊功能寄存器 IAP_CONTR,寄存器地址与位名称如图 4 所示,复位类型如图 5 所示。本文采用通过对 IAP_CONTR寄存器送入 20H
10、,SWBS=0 ,SWRET=1,产生的软件复位。图 4图 54.4 储存接收数据接收数据存放在外部 UT62256CPCL 芯片中,存放时将接收数据个数与接收的数据一起存放在外部 RAM 中,用寄存器间接寻址,由于系统板数码管有限,本课设可储存 99 个数据。4.5 读取接收数据读取数据时先读取数据个数,根据数据个数和寄存器间接寻址首地址来读取数据,防止读取到外部 RAM 中的乱码。4.6 总程序框图总程序框图如图 3 所示,程序使用了串行口和两个中断。6DCC AB按键标号中断 INT0 程序入口软件复位中断 INT1 程序入口读取储存的数据打开中断 INT0、INT1开始初始化 CH45
11、1初始化串口显示“HELLO”发送#55H否判断 D 是否按下是否接收到#8AH 发送#0A8H是否X 与 X 的反码是否符合发送#0AAH 并储存 X判断 C 是否按下是发送#8AH 是否接收到#0A8H否是发送 X 与 X 的反码是否接收到#0AAH否是否扫描按键判断 A 是否按下判断 B 是否按下X 加 1X 加 10否是是否是否判断 X 是否小于 99否X=X-100假设发送和接收的数为 X是图 37第 5 章 结论本课程设计的主要任务是设计单片机串行通讯系统协议。从一开始编写发送、接收程序到添加发送接收允许程序和校验程序,后来发现程序容易走死添加软件复位程序,单片机系统板有外部 RA
12、M 又编写接收数据储存和读取程序,优化程序,使程序变得更完善。最终的程序下载到单片机中,通信时没有任何数据丢失或错误。我享受编程的乐趣和成功的喜悦,对单片机有了更深的了解,对我的编程能力和编程规范得到提高。第 6 章 参考文献1姚永平. STC12C5A60S2 系列单片机器件手册. 宏晶 STC 官方网站2常丽. 测控仪器与网络实验指导书. 沈阳工业大学3李群芳,肖看,张士军. 单片微型计算机与接口技术. 电子工业出版社8程序CH451_DCLK BIT P1.7 ;串行数据时钟,上升沿激活 CH451_DIN BIT P1.6 ;串行数据输出, 接 CH451 的数据输入 CH451_LO
13、AD BIT P1.5 ;串行命令加载,上升沿激活 CH451_DOUT BIT P1.4 ;INT0,键盘中断和键值数据输入,接 CH451 的数据输出 CH451_KEY DATA 7FH ;存放键盘中断中读取的键值 IAP_CONTR DATA 0C7HWDT_CONTR EQU 0C1H;* ORG 0000HAJMP MAINORG 0003HLJMP RESTARTORG 0013HLJMP SHU1ORG 0030HMAIN:SETB IT0SETB EX0SETB IT1SETB EX1SETB EAMOV 55H,#00HMOV 57H,#00H ;记录接收的个数 ;调用外部
14、 RAMACALL CH451_INIT ;调用初始化程序LCALL CHUANKOULCALL LIUSHUIKEYSHOW: ACALL SCAN1MOV 54H,R4MOV A,54HCJNE A,#00H,CC1INC 55HMOV R5,#12 MOV R4,#02H ACALL CHANGEMOV R5,#12 MOV R4,#03H ACALL CHANGELCALL HUANSUANCC1:MOV A,54H9CJNE A,#01H,CC2MOV A,55HADD A,#10MOV 55H,AMOV R5,#12 MOV R4,#02H ACALL CHANGEMOV R5,#
15、12 MOV R4,#03H ACALL CHANGELCALL HUANSUANCC2:MOV A,54HCJNE A,#02H,CC3LCALL JIESOUCC3:MOV A,54HCJNE A,#03H,KEYSHOWMOV R5,#12 MOV R4,#02H ACALL CHANGEMOV R5,#10 MOV R4,#03H ACALL CHANGELCALL FASONGLCALL HUANSUANLJMP KEYSHOWSJMP $;* ; 初始化子程序 ;*CH451_INIT: CLR CH451_DIN ;先低后高, 输出上升沿通知 CH451 选择 4 线串行接口 SETB CH451_DCLK ;置为默认的高电平 SETB CH451_DIN SETB CH451_LOAD SETB CH451_DOUT ;置为输入 CLR IT0 ;置外部信号为低电平触发 SETB PX0 ;置高优先级或者低优先级 CLR IE0 ;清中断标志 SETB EX0 ;允许键盘中断 MOV B,#04H ;设置为键盘与显示开MOV A,#03HACALL CH451_WRITE