西南科技大学现代通信网课程设计报告课程名称:通信系统课程设计设计名称:基于单片机的LED亮灭“伪随机”控制系统姓名:学号:班级:指导教师:课程设计指导组起止日期:2017.5.27-2017.6.29西南科技大学信息工程学院制23课程设计任务书学生班级:学生姓名:学号:设计名称:基于单片机的LED亮灭“伪随机”控制系统起止日期:2017.5.27-2017.6.29指导教师:课程设计指导组设计要求:单片机LED0LED1LED7LED3LED4LED5LED6系统结构如图所示,要求,单片机内预先植入一个伪随机序列发生器,每次复位后,以初始状态开始生成伪随机码,并控制8bitLED的亮灭。序列初始状态通过串口可配置;序列级数不小于4级;输出数据率不低于10bit/s;扩展部分:(1)自行开发PC端控制软件(界面中实现至少8种初始状态选择、端口选择,速率默认19.2k,其他参数默认,不能做在界面可选)。方向设计学生日志时间设计内容5.27-6.3分析了解伪随机序列产生原理及算法。6.3-6.14分析了解51单片机各引脚功能和控制口。6.15-6.16分析了解其晶振模块时钟编写规则。6.16-6.19在Keil上编写c语言代码,画Proteus电路图,观察效果6.19-6.24修改代码和电路图,用自己的单片机观察效果。6.24-6.27领取老师发放的单片机,焊接相对电路引脚。6.28-6.29在实物上调试,确定最终结果。4基于单片机的LED亮灭“伪随机”控制系统一、摘要(150-250字)近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。本次设计的LED亮灭“伪随机”控制系统,利用单片机控制发光二极管的亮灭,伴以伪随机序列有着很好的实际意义。关键词:单片机;LED;控制系统;伪随机码二、设计目的和意义通过利用keil,熟悉protues仿真工具,并且通过课程设计来更好地掌握课本相关知识,本设计主要难点在于产生伪随机数,即是m序列。m序列是最长线性移位寄存器序列的简称,是一种伪随机序列、伪噪声(PN)码或伪随机码。研究伪随机码的意义有三点,是这中码看上去像随机的码,就跟噪音一样,不好破解,保密性高;二是伪随机序列的码片宽度越窄,测距精度就越高.同时,采用伪随机生成的DSSS抗干扰能力大为增强;三是使用伪随机码容易调制与解调。而已研究发现,伪随机信号的特征及伪随机信号产生的方法,得出了用伪随机信号代替白噪声信号辨识钻柱系统脉冲响应的结论。三、设计原理(一)伪随机码背景:伪随机序列的理论与应用研究大体上可以分成三个阶段:(1)纯粹理论研究阶段(1948年以前);(2)m序列研究的黄金阶段(1948-1969);(3)非线性生成器的研究阶段(1969-)。1948年以前,学者们研究伪随机序列的理论仅仅是因为其优美的数学结构。最早的研究可以追溯到1894年,作为一个组合问题来研究所谓的DeBruijn序列;上世纪30年代,环上的线性递归序列则成为人们的研究重点。1948年Shannon信息论诞生后,这种情况得到了改变。伪随机序列己经被广泛的应用在通信以及密码学等重要的技术领域。Shannon证明了“一次一密”是无条件安全的,无条件保密的密码体制要求进行保密通信的密钥量至少与明文量一样大。因此在此后的一段时间内,学者们一直致力于研究具有足够长周期的伪随机序列。如何产生这样的序列是20世纪50年代早期的研究热点。线性反馈移位寄存器(LFSR)序列是这个时期研究最多的,因为一个n级LFSR可以产生周期为的最大长度序列,而且具有满足Golomb随机性假设的随机特性,通常称之为m序列。这段时期的研究奠定了LFSR序列的基本理论和一些经典结论。但是,在1969年Massey发表了“移位寄存器综合与BCH译码”一文,引发了序列研究方5向的根本性变革,从此伪随机序列的研究进入了构造非线性序列生成器的阶段。Berlekamp-Massey算法(简称B-M算法)指出:如果序列的线性复杂度为n,则只需要2n个连续比特就可以恢复出全部的序列。从这个结论可以看出m序列是一种“极差”的序列,它的线性复杂度太小,因而不能够直接用来做流密码系统的密钥流序列。从这里还可以看到仅仅靠Golomb的三个随机性假设来评测序列是不够的,还需要其它的一些指标。此后直到今天,密码学界的学者们一直在努力寻找构造“好”的伪随机序列的方法。(二)伪随机码简介:结构可以预先确定,可重复产生和复制,具有某种随机序列随机特性的序列码。伪随机码序列一般可以利用移位寄存器网络产生,该网络由R级串联双态器件移位脉冲产生器和模二加法器组成。该网络可以产生码长为15的伪随机码。在计算机、通信系统中我们采用的随机数、随机码均为伪随机数、伪随机码。所谓“随机码”,就是无论这个码有多长都不会出现循环的现象,而“伪随机码”在码长达到一定程度时会从其第一位开始循环,由于出现的循环长度相当大,例如CDMA采用42的伪随机码,重复的可能性为4.4万亿分之一,所以可以当成随机码使用。伪随机码又称伪随机序列,它是具有类似于随机序列基本特性的确定序列。通常广泛应用二进制序列,因此我们仅限于研究二进制序列。二进制独立随机序列在概率论中一般称为贝努利(Bernoulli)序列,它由两个元素(符号)0,1或1,-1组成。序列中不同位置的元素取值相互独立取0取1的概率相等等于1/2:我们简称此种系列为随机系列。随机序列具有以下三个基本特性:1)在序列中“0”和“1”出现的相对频率各为1/2。2)序列中连0或连1称为游程连0或连1的个数称为游程的长度,序列中长度为1的游程数占游程总数的1/2;长度为2的游程数占游程总数的1/4;长度为3的游程数占游程总数的1/8;长度为n的游程数占游程总数的1/2^n(对于所有有限的n)此性质我们简称为随机序列的游程特性:3)如果将给定的随机序列位移任何个元素则所得序列的和原序列的对应的元素有一半相同,一半不同。如果确定序列近似满足以上三个特性则称此确定序列为伪随机序列。(三)常见的伪随机M序列:m序列是最长线性移位寄存器序列的简称,是一种伪随机序列、伪噪声(PN)码或伪随机码。可以预先确定并且可以重复实现的序列称为确定序列;既不能预先确定又不能重复实现的序列称随机序列;不能预先确定但可以重复产生的序列称伪随机序列。(一)递推方程为:如图所示,m序列可由二进制线性反馈移位寄存器产生。它主要由n个串联的寄存器、移6位脉冲产生器和模2加法器组成。图中第i级移存器的状态ai表示,ai=0或ai=1,i=整数。反馈线的连接状态用ci表示,ci=1表示此线接通(参加反馈),ci=0表示此线断开。由于反馈的存在,移存器的输入端受控地输入信号。不难看出,若初始状态为全“0”,则移位后得到的仍为全“0”,因此应避免出现全“0”状态,又因为n级移存器共有2n-1种可能的不同状态,除全“0”状态外,剩下2n-1种状态可用。每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始了。反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P=2n-1。图1线性反馈移位寄存器m序列的基本性质如下:(1)周期性:m序列的周期p取决于它的移位寄存器的级数,p=2n-1(2)平衡特性:m序列中0和1的个数接近相等;m序列中一个周期内“1”的数目比“0”的数目多1个。(3)游程特性:m序列中长度为1的游程约占游程总数的1/2,长度为2的游程约占游程总数的1/22,长度为3的游程约占游程总数的1/23…(4)线性叠加性:m序列和其移位后的序列逐位模2相加,所得的序列还是m序列,只是相移不同而已。(5)二值自相关特性:码位数越长越接近于随机噪声的自相关特性。(四)单片机控制led灯模块:1.单片机模块如下:图2单片机设置定时器T0定时时间为25ms,每隔25ms开一次中断,共R1次,R0与R2共同作用构7成循400次循环,以达到定时10秒的目的。首先LED灯以2Hz频率闪动,初始赋值TH1=11111100,TL1=11111100,经过M序列循环执行10次中断后,即过去0.25s,灯闪烁一次,依次循环,直至10s定时时间到,蜂鸣器响一次,2Hz频率的闪烁结束。然后LED灯以1Hz频率闪动,设置R1=20,与上类似,每过0.5s灯闪烁一次,十秒定时到,到下一阶段。最后LED灯以0.5Hz频率闪动,设置R1=40即可,思路同上。当三十秒执行完毕后,使用无条件转移语句跳转到程序开始处,循环以上过程。四、详细设计步骤(一)准备工作:首先,拿到课题报告,题目是基于单片机的LED亮灭“伪随机”控制系统。我分析了解伪随机序列产生原理及算法。这个在课本上有很深刻的体现,再加上这也是期末考试的考题之一。伪随机序列码是一种最常见的伪随机序列,可由二进制线性反馈移位寄存器产生。所以我制定了学习方案,首先学习M序列的规律和产生方式,最后选择用汇编语言写本次设计代码。接着制定详细时间计划,并按照计划执行。(二)初始化参数:图3初始化参数由于在proteus软件中暂时无法接受从其他串口接受初始化数据,所以我把初始化数据设为FFH,既11111111,反应在电路上为全部灯点亮。其他参数入SCON口设为50H,既使其工作在方式1,10位UART,允许接收位;PCON口设为80H,使其波特率加倍;TMOD设为20H,由运行控制位TR启动定时器,工作在方式2。并且允许串口中断,先将初始化数据输入。8(三)编写伪随机序列产生代码和控制led灯代码以及画电路图:图4protues电路图图5M序列产生代码这段代码是整个程序的核心代码段,它结合了伪随机序列产生代码和控制led灯代码段,在实现M序列的同时用led灯的亮灭体现M序列代码的正确性。其点亮电平可有P2口输入,由下图原理图可见:(a)(b)图6(a)单片机芯片P2口引脚图6(b)八盏led灯(四)焊接51单片机板子:通过仿真从实验室拿到原始的板子,仿照的资料对其进行焊接,观察板卡每一部分的标号,以及根据器件清单核对元件包里的所有的元件。焊接前:9图7未焊接前原始板子焊接后:图8焊接后板子(五)验证电路结果:接好硬件电路,连接电脑串口,一开始,由于芯片232发热严重,很难下入板子,后来通过多次试验,成功烧入程序,得到想要的结果。五、设计结果及分析(一)Protues仿真图:10进过验证确实为一组伪随机数字。(二)实物验证图(单片机内置初始化):11(三)实物验证图(单片机外部初始化)12六、总结本设计分为产生伪随机序列和控制电路两部分,但是主要是通过课程设计去了解伪随机序列的意义和产生方法。控制电路非常基础,然后是写入电路也很简单。这次课程设计,我花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如keil和protues软件的应用等,在摸索中学习,在摸索中成长,在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获,在真正设计之前我们做了相当丰富的准备,首先巩固一下课程理论,再一遍熟悉课程知识的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的的软件流程图之后才着手设计。在设计程序时,我们不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路。在编程过程中遇到许多问题,我通过和同学讨论、查阅资料等,收获良多。七、体会通过本学期的通信原理理论课的学习和通信原理课程设计的学习,我巩固了课本知识和锻炼了动手能力。做课程设计是为了让我们对平时学习的理论知识与实际操作相结合,在理论和实验教学基础上进一步巩固已学基本理