51单片机交通信号灯设计如何接受矩形信号

单片机、电路板
连接器、接插件
其他元器件
基于51单片机的无线信号编解码技术研究
基于51单片机的无线信号编解码技术研究
摘& 要: 针对数据帧格式固定、校验方式单一以及传输速率不便于更改等问题,提出了一种通过 STC89C516RD+单片机实现的软件编解码方法。该方法通过定时器的延时来实现对数字信号的编码;通过外部中断与定时器相结合的方式进行解码,即利用接收到的脉冲信号的上升沿启动定时器工作,下降沿停止定时器工作并触发外部中断,然后读取计数寄存器的值并识别数据。实验证明,该方法的数据帧格式及校验方式灵活多
摘& 要: 针对数据帧格式固定、校验方式单一以及传输速率不便于更改等问题,提出了一种通过 STC89C516RD+单片机实现的软件编解码方法。该方法通过定时器的延时来实现对数字信号的编码;通过外部中断与定时器相结合的方式进行解码,即利用接收到的脉冲信号的上升沿启动定时器工作,下降沿停止定时器工作并触发外部中断,然后读取计数寄存器的值并识别数据。实验证明,该方法的数据帧格式及校验方式灵活多变,而且可以降低无线传输系统的成本,适用于无线控制、数据采集、故障报警等多种无线数据通信场合。
关键词: 编码;解码;定时器;外部中断
 随着微电子、计算机信息技术的迅速发展,由单片机和无线传输模块组成的无线数据通信系统在石油、电力、水文、冶金、安防等行业的无线控制、数据采集、故障报警等诸多领域中得到越来越广泛的应用。而数据的编解码对于无线传输可靠性的影响举足轻重。目前编解码方式主要有硬件编解码和软件编解码两种。本文在对已有硬件及软件编解码技术研究的基础上,设计并通过STC89C516RD+单片机实现了一种以软件方式对传输数据编解码的方法。
1 现有的编解码技术
1.1 硬件编解码技术
 目前有多种用于编码和解码的专用芯片,PT2262/PT2272是比较常用的一种。在通常的使用中,一般采用8位地址码和4位数据码,这时编码芯片PT2262和解码芯片PT2272的第1~8脚为地址设定脚。有三种状态可供选择:悬空、接正电源和接地,38为6 561,所以地址编码不重复度为6 561组,只有发射端PT2262和接收端PT2272的地址编码完全相同时,才能配对使用。当编码启动端TE接低电平时,PT2262就将从数据输入端D0~D3输入的数据经过编码后从DOUT引脚串行输出[1],数据帧的高8位为地址,低4位为数据,发送时以先高位、后低位的顺序逐次发送。每一帧发送4次,每帧数据中间由同步码隔开。PT2272只有在连续2次检测到相同的地址码和数据码时才会把数据码中的&1&驱动相应的数据输出端为高电平和驱动VT引脚同步为高电平[2],将VT引脚反向后接入单片机的外部中断输入引脚,通过触发中断来通知单片机接收到数据了。
PT2262/PT2272芯片功耗低、外部元器件少、工作电压范围宽。但这两个芯片在应用中必须对地址统一编码,配对使用,而且需要通过改变硬件电路才能重新设置芯片地址;该编码芯片的帧格式是固定的,不能随意改动,而且编码的脉冲宽度需要调节外接振荡电阻大小才能改变。这些都给用户的使用带来了极大的不便。
1.2 软件编解码技术
 在利用单片机和无线传输模块进行无线数据传输的过程中,使用软件编解码时通常会采用定时采样的方式。总体设计思想如下:发送端通过定时器延时产生不同宽度的脉冲或脉冲组合来实现对数据&0&和&1&的编码。接收端对接收到的脉冲信号进行定时采样,然后通过计算识别出对应的数据信号。通过定时采样的方式进行解码时,对采样频率具有比较严格的要求。根据奈奎斯特理论,只有采样频率高于发射信号最高频率的2倍时,才能把数字信号准确还原[3]。但是中断的响应与返回以及数据的判断都会造成时间延迟,因此,发射信号的频率不能太高,否则容易导致数据丢失。同时定时采样需要多次调用中断服务程序,增加了额外的时间开销。这些都会降低无线数据传输的速率。
2 改进的编解码技术
2.1 软件编码原理及程序流程
 编码就是用不同形式的码型来表示二进制的&1&和&0&。本文采用的编码方式为脉冲&间隙编码,即在下一脉冲前的暂停持续时间t表示二进制符号&1&,而下一脉冲前的暂停持续时间2t表示二进制符号&0&[4],脉冲&间隙编码如图1所示。发送端的信号分为同步信号、数据信号以及校验和信号,无线发射电路如图2所示。经过编码后的信号由单片机的P1.7引脚输出到无线发射模块,然后无线发射模块将基带信号经高频载波电路调制后,通过天线向空间辐射。
 在发送端对数据进行编码时,由于对发送的数据位、位数的判断以及校验和的生成所产生的延迟时间不超过70T,其中T为机器周期,因此,定义100T的高电平脉冲代表&1&,而200T的高电平脉冲代表&0&。在接收端进行解码时,由INT1引脚上的下降沿触发中断并停止定时器计数,进而识别数据信号,此过程中断服务程序的延迟时间不超过50T。因此,设置数据位之间的低电平脉冲宽度为70T。为了不与数据信号混淆,将同步位定义为300T的高电平脉冲。本实验采用的石英晶体的晶振频率为12 MHz,因此一个机器周期为1 &s,故一个字节的传输速率最快为5 882 b/s,最慢为3 703 b/s。
 软件编码程序流程图如图3所示,采用定时器0工作在方式1,即16位定时器工作方式,根据不同的输出脉冲宽度需求向计数寄存器TH0和TL0中装入不同的初始值。标志位flags_0用来区分高电平脉冲和低电平脉冲,当标志位flags_0为0时输出两个数据位之间的低电平脉冲,不为0时输出高电平脉冲。标志位flags_1用来区分数据位和同步位,当flags_1为0时输出数据位高电平脉冲,为1时输出同步位高电平脉冲。在发送的过程中,每发送一个字节,就将该字节累加到校验和中,当所有的数据发送完后就发送校验和。
2.2 软件解码原理及程序流程
 解码是用特定方法把数码还原成它所代表的内容,或将电脉冲信号转换成它所代表的信息、数据等过程。本文采用定时器与外部中断相结合的方法对接收到的脉冲信号进行解码,并利用接收到的校验和进行校验。
 将单片机的模式控制寄存器TMOD的门控位GATE置1,当TR1=1时,外部中断INT1直接控制定时器1的启动、停止,即INT1由0变为1电平时,启动计数;当INT1由1变为0电平时,停止计数。这种情况常用来测量在INT1引脚上出现的正脉冲的宽度[5]。无线接收电路如图4所示,无线接收模块将接收到的信号进行解调、放大和整形,恢复出基带信号,由引脚2输出到单片机的INT1引脚上。设置外部中断1为下降沿触发方式,定时器/计数器1为16位定时器工作方式。当INT1引脚上出现由高到低的负跳变时触发中断,定时器1停止计数[6],读取计数寄存器TL1和TH1中的值来判断脉冲宽度,从而解码接收到的数据信号。
 由于在发送过程中重装计数初值、接收数据以及中断的响应都需要时间,所以接收到的实际脉冲宽度大于发送的脉冲宽度。因此,如果接收到的高电平脉冲宽度大于300T则表示接收到同步位;若大于200T则表示接收到数据位&0&;否则表示接收到数据位&1&。软件解码流程图如图5所示,在接收到同步位后,开始接收数据,直到再次接收到同步位的时候暂停接收。利用接收到的数据以及校验和进行校验,如果接收到的数据正确,则停止接收;如果不正确,则将之前接收到的数据全部丢弃,再重新开始接收。
 实验证明,通过该方法进行软件编码和解码时,可以根据不同的需要使用软件编程来设置地址,接收端与发送端可以进行多对多的无线数据通信,而不需要配对使用;改变定时器的计数寄存器初值就可以改变编码的脉冲宽度,从而改变传输速率;解码准确快捷,占用CPU资源相对较少,便于操作;校验方式可选,数据帧格式灵活多变。
 本实验中采用的是晶振频率为12 MHz的石英晶体,以及具有CISC结构的8位单片机,它的一个机器周期要占用12个振荡周期,执行一条指令最少要一个机器周期,处理速度较慢,在一定程度上影响了无线传输速率。可以通过提高晶振频率或者选择速度较快的单片机作为控制芯片的方式来提高无线数据传输速率。如选择具有流水线结构的C8051F系列单片机,或者是具有预取指令功能的AVR系列单片机,它们可以在一个时钟周期内完成一条指令。也可以采用具有DW8051_core核的单片机,它采用4个时钟周期为1个指令周期的模式,在时钟周期相同的情况下,处理能力是标准8051的3倍。采用这些高速度的单片机可以减少程序执行所产生的延迟时间,从而缩短数据位编码脉冲宽度,提高无线数据传输速率。
[1] 黎国锋,冯永振,卢广文.近距离无线加密传输韦根信号的实现[J].无线通信技术,2009(1):31-36.
[2] 赵秋.利用编解码芯片的无线收发电路[J].信息化研究,):35-38.
[3] 邵平凡,陈华斌.基于Atmega8无线信号软件编解码的实现方法及性能分析[J].福建电脑,2009(8):115-116.
[4] 康东,石喜勤,李勇鹏,等.射频识别(RFID)核心技术与典型应用开发案例[M].北京:人民邮电出版社,2008.
[5] 梅丽凤,王艳秋,汪毓铎,等.单片机原理及接口技术[M].北京:清华大学出版社,2004.
[6] 马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计(第4版)[M].北京:北京航空航天大学出版社,2007.
上一篇:已经是第一篇
型号/产品名
深圳市茂和昌科技有限公司
华强电子网测试账号-鹏程微电子
华强电子网测试账号-鹏程微电子查看: 2502|回复: 0
模拟一体化红外信号接收器1838输出信号
我在写一个红外遥控系统,想在protues中模拟,谁能帮我弄个模拟红外一体化信号接收器1838的输出信号,然后用单片机解码该信号,
该信号由遥控器芯片HT6221发射,
HT6221的编码规则是:当一个键按下超过36 ms,,振荡器使芯片激活,如果这个按键按下且延迟大约108 ms,,这108 ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9~18 ms)。高8位地址码(9~18 ms),8位数据码(9~18 ms)和这8位数据码的反码(9~18 ms)组成,如果按键按下超过108 ms仍末松开,接下来发射的代码将仅由起始码(9 ms)和结束码(2.5 ms)组成。
1838接收信号,解码后产生该信号,提供给单片机解码!
[此贴子已经被作者于 19:32:11编辑过]
Powered by(window.slotbydup=window.slotbydup || []).push({
id: '2491531',
container: s,
size: '150,90',
display: 'inlay-fix'
求一单片机C语言程序
我想用51单片机发送一个编码信号,请各位师傅帮忙。编码信号格式:32位连续码,每位均可设定“1”或“0”,脉冲宽度10微秒。
楼上两位回答的很对。
建议楼主去专业市场上看一下。
只要你说出你的需求,卖主会提供给你几个选择的。
你可以根据你的实际问题,选择。
模块的设置直接用其软件即可实...
调制解调的意思就是“将数字信号调制成模拟信号,再将模拟信号解调成数字信号”
你边基本工也不懂呢,你还是好好读书将基本工作知识学上手后才去做吧,你现在不懂的去做也是做不成功的,那还是让别人去帮你做吧
字符编码就是以二进制的数字来对应字符集的字符,目前用得最普遍的字符集是ANSI,对应ANSI字符集的二进制编码就称为ANSI码,DOS和Windows系统都使用...
PHP、亲,请给个好评哟!谢谢啦!
答: 结婚时刻录的光盘现在读不出来了怎么办?急..............
答: 2004年,Globus联盟、IBM和惠普(HP)等又联合发布了新的网络标准草案,把开放性网络服务架构详细规范I转换成6个用于扩展万维网服务的规范,网络服务已与...
答: 开始,运行,cmd回车,输入ipconfig回画,看一下网关是多少,假设是192.168.0.1打开浏览器,在地址栏那边输入192.168.0.1回车,提示输入...
铝属于两性金属,遇到酸性或碱性都会产生不同程度的腐蚀,尤其是铝合金铸件的孔隙较多,成分中还含有硅和几种重金属,其防腐蚀性能比其他铝合金更差,没有进行防护处理的铝铸件只要遇到稍带碱性或稍带酸性的水,甚至淋雨、水气、露水等就会受到腐蚀,产生白锈。
解决的办法。
铝铸件完成铸造后,在机械加工前,先要进行表面预处理,如预先对铸件进行喷砂,涂上一道底漆(如锌铬黄底漆),在此基础上再进行机械加工,以避免铸铝件在没有保护的情况下放久了被腐蚀。
目前我们的生活水平必竟非同以往.吃得好休息得好,能量消耗慢,食欲比较旺盛,活动又少,不知不觉脂肪堆积开始胖啦。                                                                                         减肥诀窍:一.注意调整生活习惯,二。科学合理饮食结构,三。坚持不懈适量运动。
   具体说来:不要暴饮暴食。宜细嚼慢咽。忌辛辣油腻,清淡为好。多喝水,多吃脆平果青香焦,芹菜,冬瓜,黄瓜,罗卜,番茄,既助减肥,又益养颜,两全其美!
有减肥史或顽固型症状则需经药物治疗.
如有其他问题,请发电子邮件:jiaoaozihao53@ .或新浪QQ: 1
如何洗衣服?也许有人会说,衣服谁不会洗啊?放到水里,加点洗衣粉洗就成了呗。是啊,说是这样说,可是洗衣服还有不少学问呢。我就说说我的“洗衣经”吧。
说起洗衣服,想想真有不少要说的呢。
首先要分开洗。内衣外衣、深色浅色要分开。个人和个人的衣物也尽量分开洗涤,这样可以防止不同人体间细菌和病菌的相互交叉感染,尤其是宿舍或者朋友的衣服尽量不要放置在一起洗。即使是自己的衣服,内衣和外衣也要分开洗。因为外衣接触外界的污染和尘土较多,而内衣将直接接触皮肤,为避免外界尘螨等对皮肤的不良入侵,内外分开洗涤是有科学道理的。不同颜色的衣物要分开洗涤,可将颜色相近的一同洗涤,浅色的一起洗涤,容易掉色的单独洗涤,避免衣物因脱色而损坏。另外,袜子和其他衣物不要一起洗涤。
其次,使用洗衣粉宜提浸泡一会。洗衣粉功效的发挥不同于肥皂,只有衣物适时浸泡才能发挥最大的洗涤效果。浸泡时间也不宜太长,一般20分钟左右。时间太长,洗涤效果也不好,而且衣物易褶皱。有人洗衣服时把洗衣粉直接撒在衣物上便开始搓揉洗涤,那样不能发挥最好的洗涤效果,对洗衣粉是一种浪费,当然,免浸泡洗衣粉出外。另外,冬季一般宜使用温水浸泡衣物。水温过低,不能有效发挥洗衣粉的洗涤效果,水温太高,会破坏洗衣粉中的活性成分,也不利于洗涤。
再次,衣物及时更换,及时洗涤。衣服要及时更换,相信道理大家应该都很清楚。可是,衣物换下后应该及时清洗,有人却做的不好。好多家庭喜欢将换的衣服积攒起来,每周洗一次,这样很不科学,容易使衣物上积聚的细菌大量繁殖,容易诱发皮疹或皮肤瘙痒症状。为了个人和家人的身体健康,还是勤快一点,把及时换下的衣物及时洗涤,这样,其实也费不了多少时间,也不至于最后要花费半天甚至更长 的时间专门来洗涤大量的衣物要节约的多。另外衣服穿的太久就比较脏,要花很大的力气洗涤才能洗干净,也容易将衣物搓揉变形,而影响美观和穿着效果。
洗衣服是个简单的小家务,也是生活中不可缺少的一件事,学问却很多,也许您的“洗衣心得”比这还要科学,还要多样,欢迎您 的指正~~
关于三国武将的排名在玩家中颇有争论,其实真正熟读三国的人应该知道关于三国武将的排名早有定论,头十位依次为:
头吕(吕布)二赵(赵云)三典韦,四关(关羽)五许(许楮)六张飞,七马(马超)八颜(颜良)九文丑,老将黄忠排末位。
关于这个排名大家最具疑问的恐怕是关羽了,这里我给大家细细道来。赵云就不用多说了,魏军中七进七出不说武功,体力也是超强了。而枪法有六和之说,赵云占了个气,也就是枪法的鼻祖了,其武学造诣可见一斑。至于典韦,单凭他和许楮两人就能战住吕布,武功应该比三英中的关羽要强吧。
其实单论武功除吕布外大家都差不多。论战功关羽斩颜良是因为颜良抢军马已经得手正在后撤,并不想与人交手,没想到赤兔马快,被从后背赶上斩之;文丑就更冤了,他是受了委托来招降关羽的,并没想着交手,结果话没说完关羽的刀就到了。只是由于过去封建统治者的需要后来将关羽神话化了,就连日本人也很崇拜他,只不过在日本的关公形象是扎着日式头巾的。
张飞、许楮、马超的排名比较有意思,按理说他们斗得势均力敌都没分出上下,而古人的解释是按照他们谁先脱的衣服谁就厉害!有点搞笑呦。十名以后的排名笔者忘记了,好象第11个是张辽。最后需要说明的是我们现在通常看到的《三国演义》已是多次修改过的版本,笔者看过一套更早的版本,有些细节不太一样。
考虑是由于天气比较干燥和身体上火导致的,建议不要吃香辣和煎炸的食物,多喝水,多吃点水果,不能吃牛肉和海鱼。可以服用(穿心莲片,维生素b2和b6)。也可以服用一些中药,如清热解毒的。
确实没有偿还能力的,应当与贷款机构进行协商,宽展还款期间或者分期归还; 如果贷款机构起诉到法院胜诉之后,在履行期未履行法院判决,会申请法院强制执行; 法院在受理强制执行时,会依法查询贷款人名下的房产、车辆、证券和存款;贷款人名下没有可供执行的财产而又拒绝履行法院的生效判决,则有逾期还款等负面信息记录在个人的信用报告中并被限制高消费及出入境,甚至有可能会被司法拘留。
第一步:教育引导
不同年龄阶段的孩子“吮指癖”的原因不尽相同,但于力认为,如果没有什么异常的症状,应该以教育引导为首要方式,并注意经常帮孩子洗手,以防细菌入侵引起胃肠道感染。
第二步:转移注意力
比起严厉指责、打骂,转移注意力是一种明智的做法。比如,多让孩子进行动手游戏,让他双手都不得闲,或者用其他的玩具吸引他,还可以多带孩子出去游玩,让他在五彩缤纷的世界里获得知识,增长见识,逐渐忘记原来的坏习惯。对于小婴儿,还可以做个小布手套,或者用纱布缠住手指,直接防止他吃手。但是,不主张给孩子手指上“涂味”,比如黄连水、辣椒水等,以免影响孩子的胃口,黄连有清热解毒的功效,吃多了还可导致腹泻、呕吐。
合肥政务区网络广告推广网络推广哪家公司比较好 一套能在互联网上跑业务的系统,被网络营销专家赞为目前最 有效的网络推广方式!
1、搜索引擎营销:分两种SEO和PPC,即搜索引擎优化,是通过对网站结构、高质量的网站主题内容、丰富而有价值的相关性外部链接进行优化而使网站为用户及搜索引擎更加友好,以获得在搜索引擎上的优势排名为网站引入流量。
良工拥有十多位资深制冷维修工程师,十二年生产与制造经验,技术力量雄厚,配有先进的测试仪器,建有系列低温测试设备,备有充足的零部件,包括大量品牌的压缩机,冷凝器,蒸发器,水泵,膨胀阀等备品库,能为客户提供迅捷,优质的工业冷水机及模温机维修和保养。
楼主,龙德教育就挺好的,你可以去试试,我们家孩子一直在龙德教育补习的,我觉得还不错。
成人可以学爵士舞。不过对柔软度的拒绝比较大。  不论跳什么舞,如果要跳得美,身体的柔软度必须要好,否则无法充分发挥出理应的线条美感,爵士舞也不值得注意。在展开暖身的弯曲动作必须注意,不适合在身体肌肉未几乎和暖前用弹振形式来做弯曲,否则更容易弄巧反拙,骨折肌肉。用静态方式弯曲较安全,不过也较必须耐性。柔软度的锻炼动作之幅度更不该超过疼痛的地步,肌肉有向上的感觉即可,动作(角度)保持的时间可由10馀秒至30-40秒平均,时间愈长对肌肉及关节附近的联结的组织之负荷也愈高。
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415查看: 4396|回复: 10
基于51单片机函数信号发生器完整论文下载 带源码 原理图
这个51单片机函数信号发生器论文,大家可以看看
摘要本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。
1设计选题及任务设计题目:基于单片机的信号发生器的设计与实现 任务与要求:设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。基本要求:1.& && && && &&&产生三种以上波形。如正弦波、三角波、矩形波等。2.最大频率不低于 500Hz。并且频率可按一定规律调节,如周期按1T,2T,3T,4T或1T,2T,4T,8T变化。3.幅度可调,峰峰值在0——5V之间变化。扩展要求:产生更多的频率和波形。
2系统概述2.1方案论证和比较2.1.1总体方案:方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。方案三:使用集成信号发生器发生芯片,例如AD9854,它可以生成最高几十MHZ的波形。但是该方案也不能产生任意波形(例如梯形波),并且价格昂贵。方案四:采用AT89C51单片机和DAC0832数模转换器生成波形,加上一个低通滤波器,生成的波形比较纯净。它的特点是可产生任意波形,频率容易调节,频率能达到设计的500HZ以上。性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。经比较,方案四既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比高,所以采用该方案.
2.1.2改变幅度方案:方案一:可以将送给DA的数字量乘以一个系数,这样就可以改变DA输出电流的幅度,从而改变输出电压;但是这样做有很严重的问题,单片机在做乘法运算时需要很长的时间,这样的话输出波形的频率就会很低,达不到至少500HZ的要求;并且该方案的输出电压做不到连续可调,当DA的输入数字量比较小时,输出的波形失真就会比较严重。方案二:将输出电压通过一个运算放大器的放大。这样还有个优点是幅度连续可调。经比较,方案二既可满足课程设计的基本要求,并且电路也挺简单。
2.2工作原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,其信号发生器构成系统框图如下图所示。
1.001.jpg (11.86 KB, 下载次数: 23)
19:23 上传
89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。波形ROM表是将信号一个周期等间距地分离成64个点,储存在单片机得RON内。具体ROM表是通过MATLAB生成的,例如正弦表,MATLAB生成的程序如下:x=0:2*pi/64:2* y=round(sin(x)*127)+128
3单元电路设计与分析3.1.1主控电路设计中主要采用STC89C51型单片机,它具有如下优点:(1)拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。(2)该单片机内部拥有4K字节的FLASH ROM程序存储器空间和256字节的RAM数据存储空间,完全可以满足程序的要求。由于该芯片可电擦写,故可重复使用。如果更改程序内容,可将芯片拿下重新烧写。(3)该单片机与工业标准的MCS-51型机的指令集和输出引脚兼容。中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,用两个开光直接与外部中断0和外部中断1的管脚相连,其中S1开光用来改变波形,S2开光用来改变频率。在程序主函数中,我们写了个死循环一直输出一个默认的波形,当S1或S2按下又抬起时,程序会暂时跳出死循环,进入中断处理程序,从而对波形和频率进行改变。时钟电路。由于频率较大时,三角波、正弦波、方波等波中每一点延时时间为几微秒,故延时时间还要加上指令时间即可得到指定频率的波形,该电路用11.0592MHz晶振。
1.002.jpg (48.6 KB, 下载次数: 20)
19:23 上传
主控电路图
3.1.2 数/模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。本设计选用直通方式。DAC0832的数据口和单片机的P0口相连。CSDA:片选信号输入线(选通数据锁存器),低电平有效;WR:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
1.003.jpg (14.52 KB, 下载次数: 24)
19:23 上传
数模转换电路
3.1.3运算放大电路和低通滤波电路
1.004.jpg (21.55 KB, 下载次数: 25)
19:23 上传
LM324的5管脚与DAC0832的(IOUT2)12管脚相连,LM324的6管脚与DAC0832的(IOUT1)11管脚相连,LM324的7管脚与DAC0832的REF(9)管脚相连.第一级运算放大器的作用是将DAC0832输出的电流信号转化为电压信号V1,第二级运算放大器的作用是将V1通过反向放大电路-(R2/R1)倍。题目要求输出的电压在0-5V可调,而V1的电压大约是5V,所以R1选择5K的电阻,R2选择10K的电位器,这样最大的输出电压为5*(10/2)=10,最小电压为0,可以实现题目要求的0-5V。在第二个运算放大器的输出端连了一个低通滤波器。如果不加低通滤波器,也能够生成波形,但是产生的信号中毛刺很多,加一个低通滤波器不仅起到的滤波的作用,还起到了平滑的作用。低通滤波器的截止频率F=1/(2*pi*R3*C6),这里我们选择R3 为100欧姆电阻,C6为104电容,截止频率F=16KHZ。实验表明,此时的输出波形效果不错。
3.1.4串口通信电路通用异步收发器(UART)是一种串行接口,一般微处理器中都包含这种外设接口。异步串行接口提供了一种简单的途径,使两个器件无需共享同一个时钟信号就能进行通信。如果再加入一个合适的电平转换器MAX232,串口就能能用在RS232和RS485等网络中实现通信,或者与计算机的COM端口连接。串口只需两根信号线(RX和TX)即可实现,而且只要两端器件都采用同样的位格式和波特率,那么它们无需其它任何对方的信息就可以成功传输数据。
1.005.jpg (17.81 KB, 下载次数: 25)
19:23 上传
& && && && && && && && && && && && && && && && && && &&&串口通信电路图
3.2系统软件设计软件设计上,根据功能分了几个模块编程。模块主要有:主程序模块、外部中断0模块,外部中断1模块。主程序:& && && && &&&主程序先是进行一些初始化的工作,然后根据波形标志a,b,c,d,e的值进入相应的while 循环。这样写的好处是输出的波形频率可以790多HZ。在while循环中,单片机根据地址标志位不停低查表,然后把查得的值赋给DAC0832的数据口,然后地址标志位加一,并判断地址标志位是否等于64,如果是就置0再往下执行,如果不是直接往下执行。然后根据频率标志位进行相应的延时。
1.006.jpg (28.29 KB, 下载次数: 16)
19:23 上传
主程序流程图
中断服务程序:本程序中两个外部中断分别起到了控制波形和频率的作用。在程序中还加入了消抖部分。
1.007.jpg (36.06 KB, 下载次数: 17)
19:23 上传
4安装调试及测量数据分析4.1调试过程;1. 不通电,用万用表根据电路图仔细检查各线路连接是否正常。2. 首先是调试单片机部分,DA和运算放大器芯片不接。用STC_ISP_V483软件通过串口下程序。看是否可以正常下程序。3.当可以正常下程序时,给51单片机下一个让所有I/0口一会儿输入0,延时,再输出1,以此类推。用万用表测量各I/O口得电压是不是一会儿高,一会儿低。4.安上DA和运算放大器芯片,给单片机下一个输出正弦波的测试程序,通过示波器看输出是否正常。5. 给单片机下一个完整的程序,分别按下S1,看波形是否改变。按下S2,看频率是否改变。
4.2频率的测量数据:& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&单位:HZ周期T2T3T4T5T6T7T8T理论值798.6399.3266.2199.7159.7133.1114.199.8实际值798.6399.6266.5199.9159.9133.3114.299.9
4.3出现的问题与解决的方法:1.调试单片机的串口时,发现不能正常的下程序。我想可能是单片机坏了借了一块学习板测试了一下单片机芯片,发现可以正常下载。这说明很可能是MAX232的电路出了问题。我仔细查看了电路图,又上网查了下其他的MAX232的电路图,发现我的电路图和别人的不一样。我是按照郭天翔的那本《新概念51单片机C语言教程 入门、提高、开发、拓展全》第130页的串口电路画的图,电路图中MAX232的TIOU1接串口的第3脚。而其他书上有些电路图却是MAX232的TIOU1接到了串口的第2脚。于是我将MAX232的TIOU1接串口的第2脚,再下程序,终于可以正常下载了。2.刚开始写的测试程序输出的波形失真很大。我想可能是波形的ROM表里的数据值过小,导致DA输出的误差很大。因而卧将波形的ROM表里的数据值调大,在测试时发现波形变得好多了。3.调试波形的时候我发现矩形波的失真比较大。我想到可能是低通滤波器的截止频率太低了,因而我将RC低通滤波器的电阻由1K换成了100欧姆,效果好了很多。
4.4系统仿真波形:矩形波
1.008.jpg (6.13 KB, 下载次数: 34)
19:23 上传
1.009.jpg (6.62 KB, 下载次数: 7)
19:23 上传
1.010.jpg (6.68 KB, 下载次数: 23)
19:23 上传
4.5效果分析:由4.2的频率理论值与实际值,可知频率在T,2T,3T,4T,5T,6T,7T,8T上频率误差很小。最终的波形输出效果也很不错。
4.6测量仪器示波器直流稳压电源万用表
5结束语基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。通过单片机控制一个模数转换器DAC0832产生所需要的电流,然后使用运算放大器LM324可以将其电流输出线性地转换成电压输出,再将电压经过运算放大器的放大,可以得到足够幅度的信号。通过程序的控制,可以产生一系列有规律的波形。这样一个信号发生装置在控制领域有相当广泛的应用范围。最终做出来的信号发生器满足了题目中的所有要求:1.产生五种波形。正弦波、三角波、矩形波、梯形波,锯齿波。2.最大频率为798.6HZ。并且频率可按按1T,2T,3T,4T,5T,6T,7T,8T变化。3.幅度可调,峰峰值在0——5V之间变化。当然还是存在不足的地方,比如不能实现频率的按一个小的步进调整。并且当频率太小时矩形波会有些失真。信号发生器可以生成更多的波形,只需要再加些波形表即可。在这里得感谢学校为我们提供个这样一个实践的机会,当然还得感谢实验室指导老师们的细心指导。
参考文献:[1] 郭天翔.新概念51单片机C语言教程 入门、提高、开发、拓展全.北京.电子工业出版社 2009.1[2] 童诗白.模拟电路技术基础[M].北京:高等教育出版社,2.
附录1:总电路图
1.011.jpg (79.36 KB, 下载次数: 41)
19:23 上传
附录2:源程序
#include&reg51.h&
#define uchar unsigned char
#define uint unsigned int
sbit csda=P2^2;
sbit wr=P2^1;
sbit s1=P3^2;
sbit s2=P3^3;
uchar k=0,p=0,delay=0;
uchar bxxz=0;pinglv=0;
uchar a=1,b=0,c=0,d=0,e=0;
uchar code sin[64]={
135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170,158,
146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128
};
uchar code juxing[64]={
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
uchar code juchi[64]={
0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,
146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,235,239,243,247,251,255
};
uchar code tixing[64]={
0,13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,208,221,234,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,
247,247,247,247,247,247,247,242,229,216,203,190,177,164,151,138,125,112,99,86,73,60,47,34,21,8
};
uchar code sanjiao[64]={
0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
};
void delay1()
{
& && && && &&&int a,b;
& && && && &&&for(a=1;a&0;a--)
& && && && && && && && && & for(b=122;b&0;b--);
}
void int0() interrupt 0
{& && && && &
& && && && &&&EX0=0;
& && && && &&&delay1();
& && && && &&&if(s1==0){& && && && && && && && && &
& && && && &&&bxxz++;
& && && && &&&if(bxxz==5)
& && && && && && && && && & bxxz=0;
& && && && &&&switch(bxxz)
& && && && && && && && && & {
& && && && && && && && && & case 0 :
& && && && && && && && && && && && && && &{a=1,b=0,c=0,d=0,e=0;}
& && && && && && && && && && && && && && &
& && && && && && && && && & case 1 :
& && && && && && && && && && && && && && &{a=0,b=1,c=0,d=0,e=0;}
& && && && && && && && && && && && && && &
& && && && && && && && && & case 2 :
& && && && && && && && && && && && && && &{a=1,b=0,c=1,d=0,e=0;}
& && && && && && && && && && && && && && && && && && &
& && && && && && && && && & case 3 :
& && && && && && && && && && && && && && &{a=0,b=0,c=0,d=1,e=0;}
& && && && && && && && && && && && && && &
& && && && && && && && && & case 4 :
& && && && && && && && && && && && && && &{a=0,b=0,c=0,d=0,e=1;}
& && && && && && && && && && && && && && &
& && && && && && && && && & }
& && && && &&&delay1();
& && && && &&&while(!s1);& && && && &
& && && && && && && && && & }
& && && && &&&while(!s1);
& && && && &&&EX0=1;
}
void int1() interrupt 2
{
& && && && &&&EX1=0;& && && && &
& && && && &&&delay1();
& && && && &&&if(s2==0){& && && && && && && && && &
& && && && &&&p++;
& && && && &&&if(p==8)
& && && && && && && && && && & p=0;
& && && && &&&switch(p)
& && && && && && && && && & {
& && && && && && && && && & case 1 :
& && && && && && && && && && && && && && &pinglv=3;
& && && && && && && && && && && && && && &
& && && && && && && && && & case 2 :
& && && && && && && && && && && && && && &pinglv=6;
& && && && && && && && && && && && && && && && && && &
& && && && && && && && && & case 3 :
& && && && && && && && && && && && && && &pinglv=9;
& && && && && && && && && && && && && && &
& && && && && && && && && & case 4 :
& && && && && && && && && && && && && && &pinglv=12;
& && && && && && && && && && && && && && &
& && && && && && && && && & case 5 :
& && && && && && && && && && && && && && &pinglv=15;
& && && && && && && && && && && && && && &
& && && && && && && && && & case 6 :
& && && && && && && && && && && && && && &pinglv=18;
& && && && && && && && && && && && && && &
& && && && && && && && && & case 7 :
& && && && && && && && && && && && && && &pinglv=21;
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &
& && && && && && && && && & default :
& && && && && && && && && && && && && && &pinglv=0;
& && && && && && && && && && && && && && &
& && && && && && && && && & }
& && && && && && && && && & delay1();
& && && && && && && && && & while(!s2);& && && && &
& && && && && && && && && & }
& && && && &&&while(!s2);& && && && &
& && && && &&&EX1=1;
}
void main()
{
& && && && &&&csda=0;
& && && && &&&wr=0;
& && && && &&&EA=1;
& && && && &&&IT0=1;
& && && && &&&EX0=1;
& && && && &&&IT1=1;
& && && && &&&EX1=1;
& && && && &&&while(1)
& && && && &&&{
& && && && && && && && && & while(a)
& && && && && && && && && & {
& && && && && && && && && & delay=
& && && && && && && && && & P0=sin[k];
& && && && && && && && && & k++;
& && && && && && && && && & if(k==64)
& && && && && && && && && && && && && && &k=0;
& && && && && && && && && & while(delay)& && && &&&
& && && && && && && && && && && && && && && & delay--;
& && && && && && && && && & }
& && && && && && && && && & while(b)
& && && && && && && && && & {
& && && && && && && && && & delay=
& && && && && && && && && & P0=juxing[k];
& && && && && && && && && & k++;
& && && && && && && && && & if(k==64)
& && && && && && && && && && && && && && &k=0;
& && && && && && && && && & while(delay)& && && &
& && && && && && && && && && && && && && && & delay--;
& && && && && && && && && & }
& && && && && && && && && & while(c)
& && && && && && && && && & {
& && && && && && && && && & delay=
& && && && && && && && && & P0=juchi[k];
& && && && && && && && && & k++;
& && && && && && && && && & if(k==64)
& && && && && && && && && && && && && && &k=0;
& && && && && && && && && & while(delay)& && && &&&
& && && && && && && && && && && && && && && & delay--;
& && && && && && && && && & }
& && && && && && && && && & while(d)
& && && && && && && && && & {
& && && && && && && && && & delay=
& && && && && && && && && & P0=tixing[k];
& && && && && && && && && & k++;
& && && && && && && && && & if(k==64)
& && && && && && && && && && && && && && &k=0;
& && && && && && && && && & while(delay)& && && &&&
& && && && && && && && && && && && && && && & delay--;
& && && && && && && && && & }
…………限于本文篇幅 余下代码请从51黑下载附件…………复制代码
完整论文下载:
(384 KB, 下载次数: 134)
17:14 上传
点击文件名下载附件
可以看看下载积分: 黑币 -5
共享资料的黑币奖励!
很给力!棒棒哒
看起来很不错,有没有器材清单
xiegh 发表于
看起来很不错,有没有器材清单
做出来了吗?
串口通信电路要程序吗?
很好的一个分享
delay=请问这句是什么意思 啊
不错,赞一个
Powered by

我要回帖

更多关于 单片机交通信号灯 的文章

 

随机推荐