单片机TA89C51(精选11篇)
单片机TA89C51 篇1
1 系统总体分析与设计
1.1 总体方案
1) 温度监控:对温室温度进行测量, 并通过升温或降温达到植被的最佳温度。
2) 湿度监控:对温室湿度进行测量, 并通过喷雾或去湿达到植被的最佳湿度。
3) 控制处理:当温度、湿度越限时报警, 并根据报警信号提示采取一定手段控制。
4) 显示:LCD就地显示输入值和相应的温湿度, 数码管摆放在生产现场用于显示当前的温湿度。
1.2 实施措施
1) 实际环境温度与给定界限比较, 执行加热/制冷措施。
2) 实际环境湿度与给定界限比较, 执行加湿/去湿措施。
3) 越限报警:当温湿度越限时声光报警。
4) 键盘显示:负责用户的输入及相关数据的显示, 其中包括LED和LCD显示。
1.3 硬件系统设计
经过上面的总体方案和实施措施的讨论后可以开始着手硬件系统的设计, 硬件系统是应用系统的基础、软件系统设计的依据。
主机与主要部件的选择:
根据总体功能和性价比及其运行速度等因素的考虑, 选用MCS-51系列的89C51为主机, 满足上面的要求而且设计方便, 不需要再存储扩展。
数据存储片内设有128B, 外部有8279的256B, 而由于存入的数据是随时更新的且不计小数位, 存入8个16进制数字, 其总共需要的容量只有16B, 已经够用。对外部模拟量 (温度、湿度) 采样, 选用ADC0809能够满足要求。
温室温湿度控制系统是以89C51单片机作为中央控制装置, 模数转换器ADC0809, 风扇, 加热设备, 加湿设备, 排潮设备, 键盘显示芯片等, 其功能和原理如下:
1) 89C51作为中央控制装置, 负责中心运算和控制, 协调系统各个模块的工作。
2) 四路采样温度信号采样简单平均处理, 温度保存为整数。
3) 四路采样湿度信号采样简单平均处理, 温度保存为整数。
4) 模数转换器ADC0809:即由模拟信号转换为数字信号。它共有8个模数转换通道。模数的转换共有2种方法。一种是利用INT0中断, 当一次转换结束后, ADC0809使INT0产生中断, 通知系统转换完毕;另一种使用延时方法, 开始转换后系统延时100微秒等待转换完成。本方案采用延时转换的方法。
5) 键盘显示芯片:用8729识别键盘, 负责用户的输入及相关的数据的LED显示。例如选择系统的工作模式, 用户输入温度及湿度的界限数据, 显示实时的温度及湿度值等等。
6) 风扇:负责系统的降温工作。
7) 加热设备:负责系统的加热工作。
8) 喷雾设备:负责系统的加湿工作。
9) 排潮设备:负责系统的去湿工作。
2 温湿度采样与控制系统
2.1 温湿度采样系统
为了更精确的反映温室的温度和湿度, 取温湿度各4路信号采样简单平均处理作为温室的温度和湿度。在分辨率达到的前提下, 温湿度的精度为1%。
2.2 温湿度控制系统
首先, 系统启动后, 提示用户输入温度的上限与下限的温度值。用户输入之后, 系统自动求出中间值, 根据实际温度的情况采取相应的方案。
如果该时刻的实际温度值低于用户给定的下限温度值时, 系统立即启动报警装置, 且系统处于升温状态, 直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止升温。反之, 如果实际温度值高于用户设定的上限值时, 系统也会立即启动报警装置, 且系统处于降温状态, 直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止降温。
选择中间值作为控制参数, 防止升温———降温———升温的死循环, 因为温度低于下限时会一直升温, 可能导致温度高于上限系统又开始降温, 这样系统便一直重复升温———降温———升温过程, 导致设备在某一个温湿度点附近频繁的启停, 使设备寿命下降, 而且没有实际意义。
选择中间值的一定区间, 是防止达到中间值时, 采取了停止升温或者降温措施, 温度还是会持续上升或下降一会儿, 这时候温度可能不是正好在中间值处, 系统便还是采取升温或者降温的措施, 而此时的温度值可能已经是很适合植被生长的需要的温度值。所以本方案选在中间值的正负一度区间内, 认为此区间内都是适合的, 不产生任何控制动作变化, 这样就能解决设备频繁启停问题。
2.3 键盘显示系统
键盘显示系统采用8279芯片控制16键的键盘和8个七段数码管, 以实现用户的输入与数据输出。16个键分别是“0”到“F”, 对应的键值是0到15不需要键值的转换。七段数码管采用共阴极。
2.4 报警系统
报警系统由声音报警和警报灯报警组成。声音报警通过P1.0口接SD口控制系统的音效模块发声, 用CPU控制P1.0产生一定频率的方波就可以实现音效模块的发声。音效模块是一个带有扬声器的放大电路。
3 硬件调试方案
3.1 硬件电路的调试
此部分的任务是在系统连接好后, 调试各个组件能否正常工作, 能否实现软件设计的预期目标。其步骤如下:
1) 按照系统设计, 将系统需要的各个组件连接好。
2) 实验说明书, 了解各个组件的工作原理, 开始着手调试芯片。
3) 试ADC0809芯片。按照说明书调用CON_W.ASM汇编程序, 运行, 观察现象。现象正确, 说明ADC0809芯片正常, 可以使用。
4) 电机, 按照说明书调用直流电机相应的汇编程序, 运行, 观察现象。
3.2 功能模块的调试方案
把各个功能模块编写成单独的源文件进行调试, 调试成功以后, 再将各部分联合在一起。
整个系统的编写、调试是从8279开始的。控制8279原理虽然简单, 但需要细节却很多, 如选择显示寄存器与送段码的顺序, 8279的初始化等待时间等。
用户温度输入数据时上限、下限分别在七段数码管的0、1、2、3位置显示, 湿度输入数据时上限、下限分别在七段数码管的4、5、6、7位置显示。读键存储的过程是循环程序。可循环等待直到用户输入正确并确认为止。
温湿度判断控制模块也一个非常重要的模块, 由于温湿度对于植被的生长起着决定性的作用, 因此, 如果这两个因素控制不好, 这个系统就失败了, 这就需要我认真的考虑这一模块的控制方式, 调试阶段比较顺利。
摘要:本文利用8051单片机设计一个温室的温湿度控制系统, 对给定的温湿度进行控制并实时显示, 其中温湿度信号各有四路, 系统采用一定的算法对信号处理以确定采取某种控制手段, 在本系统中采用温度优先模式, 循环处理。
关键词:89C51,8729键盘显示,LCD显示,ADC0809
参考文献
[1]蔡菲娜.单片微型计算机原理和应用[M].杭州:浙江大学出版社, 2003.
[2]周坚.单片机轻松入门[M].北京:北京航空航天出版社, 2002.
[3]孙育才.MCS-51系列单片微型计算机及其应用[M].南京:东南大学出版社, 2004:231.
[4]公孙茂, 马宝匍, 孙晨.单片机入口接口实例集[M].北京:北京航空航天出版社, 2002:120.
单片机TA89C51 篇2
随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,人对它的认识也逐步加深。秒表计时器秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。本设计就是利用所学到的电子元器件将脉冲源用数码管显示出来,以制承诺简易的秒表。
以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。
采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
目录
一、设计任务.................................................................................................................3
二、设计题目.................................................................................................................3
三、功能分析.................................................................................................................3
四、总体设计.................................................................................................................3
4.1硬件设计...............................................................................................................4
4.1.1 89C51单片机...........................................................................................4
4.1.2晶体振荡电路...........................................................................................5
4.1.3复位电路...................................................................................................6
4.1.4按键电路...................................................................................................7
4.1.5显示电路.................................................................................................8
4.2引脚控制...............................................................................................................9
五、电路原理图...........................................................................................................10
六、程序流程图及程序设计......................................................................................11
6.1程序流程图.........................................................................................................11
6.2程序设计.............................................................................................................12
七、程序仿真...............................................................................................................21
八、心得体会...............................................................................................................22
九、致谢.......................................................................................................................23
十、参考文献...............................................................................................................24
一、设计任务
以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。
二、设计题目
秒表的设计
三、功能分析
采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
四、总体设计
本实验利用单片机的定时器/计数器定时和计数的原理,通过采用Proteus仿真软件来模拟实现。模拟AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计时的开启、暂停、继续、与复位。其中有三个数码管来显示数据,两个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒得数码管的个位加一,并且十分之一秒显示清零
重新从零计数。同理当个位满十进一后个位也清零重新计数,当计时超过范围(即超过99.9秒)后,所有数码管全部清零从新计数
4.1硬件设计
4.1.1 89C51单片机
MCS-51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分:
(1)CPU:89C51的CPU是8位的,另外89C51内部有1个位处理器
(2)R0M:4KB的片内程序存储器,存放开发调试完成的应用程序
(3)RAM:256B的片内数据存储器,容量小,但作用大
(4)I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线
(5)中断系统:共5个中断源,3个内部中断,2个外部中断
(6)定时器/计数器:2个16位的可编程定时器/计数器
(7)通用串行口:全双工通用异步接收器/发送器
(8)振荡器:89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号
(9)总线控制:89C51对外提供若干控制总线,便于系统扩展
89C51单片机引脚如下图:
4.1.2晶体振荡电路
89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相
振荡器的输出,该反相放大器可以配置为片内振荡器。
这里选用51单片机12MHZ的内部振荡方式,电路如下:C2、C3起稳定振荡频率、快速起振的作用。
晶振电路
4.1.3复位电路
采用上电复位,上电后,由于电容充电,使RST持续一段时间的高电平,从而实现上电复位操作。这不仅能使单片机复位,还能是单片机的外围设备同时复位,当程序出现错误时,可以随时使电路复位。
电路图如下:
复位电路
4.1.4按键电路
当按键被按下时,相应的引脚被拉低,经扫描后,获得键值,并执行键功能程序,因此按下不同的按键,将执行不同的功能程序。
电路图如下:
按键电路
4.1.5显示电路
采用3个LED数码管,LED是七段显示器,内部有7个条形发光二极管和1个小圆点发光二极管,根据各管的亮暗组成字符。
在用数码管显示时,有静态和动态两种选择,这里采用LED动态显示,用P0、P1、P2口驱动显示,由于P0口没有上拉电阻,因此P0口需要外接上拉
电阻才能输出高电平,这里使用8个4.7k的电阻作为上拉电阻。
电路图如下:
显示电路
4.2引脚控制
P0.0—P0.7、P2.0—P2.7、P1.0—P1.7对应三个数码管的a、b、c、d、e、f、g段和小数点位;P0控制数码管十位的显示,P2控制数码管个位的现实,P1控制小数点后一问的显示,P3.2、P3.3、P3.4分别接。
五、电路原理图
用Proteus软件画出主电路图如下:
六、程序流程图及程序设计
6.1程序流程图
6.2程序设计
程序的各个组成模块及工作流程描述:
(1)秒表的初始化
根据程序流程图,先进行秒表的初始化,即:①将I/O口P3全写一,为秒表的控制输入做好准备;②将数码管全部置零,使其处于秒表计时的初始状态;③将工作寄存器R0~R2以及30H初始化,留待后面的计时程序备用;④将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差,此为经实物测试之后的修正值),即将定时器定为每10ms溢出;⑤开总中断允许和定时器0中断允许。初始化完成后,即进入之后的按键扫描程序。
(2)按键检测程序
轮流检测开始计时(P3.2)、暂停计时(P3.3)、秒表清零(P3.4)三个按键。若发现有一个按键出现低电平(可能被按下),则延时10ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。
(3)开始计时
若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时允许控制位TR0置位,则定时器开始运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。
(4)计时程序
定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。程序跳转至中断服务程序TIME0。由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。
(5)显示程序
将数码管的段选码放在数表TAB中。每次100ms计时完成后,将R0中的值(初值为0)送入A,然后自加1。.若R0中的值没到10,则使用累加器A查表,并将查得的数码管段选码送入毫秒位数码管。之后将30H中的数置零,中断返回。若发现R0中的数到10了,则将R0置零,并转入秒位进位子程序SECOND,向秒位进位,之后,继续照常向毫秒位送数。
在秒位进位子程序SECOND中,由于要用到累加器A,因此先将其推入堆栈保护。将R1中的值(初值为10)送入A,然后自加1。.若R1中的值没到20,则使用累加器A查表,并将查得的数码管段选码送入秒位数码管。若发现R1中的数到20了,则将R1重置为10,并转入十秒位进位子程序SECOND1,向十秒位进位,之后,继续照常向秒位送数。完成后,弹出ACC和PSW,子程序返回。
十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。
(6)暂停计时
若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。
(7)秒表清零
若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。此动作完成后,返回按键检测程序,等待操作者的下一次指令。
(8)延时程序
用于按键延时防抖,延时10ms。
程序清单如下:
ORG 0000H;程序开始
AJMP START;跳转到主程序START ORG 000BH;定时器0中断的地址入口
AJMP TIME0;定时器0溢出,跳转到中断程序TIME0 START:;主程序
MOV P3,#0FFH;输入端口P3全写1 MOV P0,#3FH;MOV P1,#3FH;
MOV P2,#0BFH;数码管初始化
MOV 30H,#00H;MOV R0,#00H;MOV R1,#0AH;MOV R2,#00H;MOV TMOD,#01H;MOV TH0,#0D8H;MOV TL0,#0FEH;SETB EA;SETB ET0;READ:;L1:JB P3.2,L2;LCALL DELAY;JB P3.2,L1;AJMP RUN;L2:JB P3.3,L3;
工作寄存器初始化
定时器0工作于方式1
定时器0预置数(D8FEH=55550D)
开总中断允许
开定时器0中断允许
读键程序
按键延时防抖
确认计时键被按下,开始/继续计时15
LCALL DELAY;按键延时防抖
JB P3.3,L2;AJMP PAUSE;确认暂停键被按下,暂停计时
L3:JB P3.4,L1;LCALL DELAY;JB P3.4,L3;AJMP STOP;RUN:;SETB TR0;AJMP READ;PAUSE:;CLR TR0;AJMP READ;TIME0:;INC 30H;MOV A,30H;
按键延时防抖
确认清零键被按下,秒表重置
计时键按下,跳转至此
定时器0开始/继续运行
暂停键按下,跳转至此
定时器0溢出,中断,跳转至此16
CJNE A,#0AH,TIME1;30H单元中的值到10了吗?(计时到10毫秒了吗,也就是说,该向毫秒位送数了吗?)MOV DPTR,#TAB;30H中的值到10了,顺序执行
MOV A,R0;INC R0;CJNE R0,#0AH,GET;R0MOV R0,#00H;LCALL SECOND;进位
GET:;MOVC A,@A+DPTR;MOV P1,A;MOV 30H,#00H;TIME1:;MOV TH0,#0D8H;MOV TL0,#0FEH;RETI;中的值到10了吗?(该向秒位进位了吗?)
到了,R0清零,调用进位子程序SECOND,向秒位没到,跳过进位子程序
查表并向数码管毫秒位送数
重置30H单元
给定时器0重新预置数
中断返回
SECOND:;秒位进位子程序
PUSH ACC;PUSH PSW;将ACC和PSW推入堆栈保护
MOV A,R1;INC R1;CJNE R1,#14H,GET1;R1了吗?
MOV R1,#0AH;LCALL SECOND1;位进位
GET1:;MOVC A,@A+DPTR;MOV P2,A;POP PSW;POP ACC;PSW,ACCRET;SECOND1:;中的值到20了吗,也就是说,该向十秒位进位到了。R1重置,调用进位子程序SECOND1,向十秒没到,跳过进位子程序
查表并向数码管秒位送数
出栈
子程序返回
十秒位进位子程序
PUSH ACC;PUSH PSW;将ACC和PSW推入堆栈保护
MOV A,R2;INC R2;CJNE R2,#0AH,GET2;R2
MOV R2,#00H;GET2:;MOVC A,@A+DPTR;MOV P0,A;POP PSW;POP ACC;PSWRET;STOP:;MOV P3,#0FFH;MOV P0,#3FH;MOV P1,#3FH;
中的值到10了吗,也就是说,该将此位归零了到了,R2清零
没到,跳过清零程序
查表并向数码管十秒位送数,ACC出栈
子程序返回
清零键按下,跳转至此 吗?
MOV P2,#0BFH;数码管清零
MOV 30H,#00H;MOV R0,#00H;MOV R1,#0AH;MOV R2,#00H;CLR TR0;MOV TH0,#0D8H;MOV TL0,#0FEH;AJMP READ;DELAY:;MOV R3,#50D;D1:MOV R4,#100D;D2:DJNZ R4,D2;DJNZ R3,D1;RET;工作寄存器初始化计时器0停止计时定时器0预置数
延时10ms子程序
子程序返回
TAB: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH;数码管段选码数表
END;程序结束
七、程序仿真
将以上程序清单导入先前做好的Proteus仿真电路,汇编之后,按 键开始进行仿真。
仿真结果如下:
仿真结果描述:
按“开始”键,秒表开始计时;按“暂停”键,秒表暂停计时;再按“开始”键,秒表继续计时;按“清零”键,秒表清零。
八、心得体会
虽然秒表是一个非常简单的功能,但要在单片机中使用汇编语言来实现这个功能,仍然花了我不少心思。
首先是计时的问题,由于单片机计时器最大只能计时65.5ms,因此要实现毫秒位的变化,我采用了软件计时的方法,单片机只需计时10ms,然后用软件重复10次,即可达到计时100ms的目的。
显示方面,为了使编程简单,我使用了静态显示。不过这使得占用I/O口线过多,而且连线复杂繁琐,为实物的制作带来了不便。在以后的学习和应用中我会努力加深动态扫描显示的理解,争取熟练运用。
根据书本知识,我们一开始只给P0口加上了上拉电阻,但是实物做成后我们发现P1和P2口得输出显示非常暗,初步确定是驱动能力不足的问题后,我们给二者也加上了上拉电阻,结果使得显示正常了。由此我们了解到,实践才是检验真理的唯一标准,有时候书本上的知识需要经过实践的改进,才能运用到实际中。
此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。然而,在吸取经验的同时,我也吃了不少教训。在编程、仿真、焊接方面都走了不少弯路。但是,学则要有所收获,经过此次的锻炼,我在很多方面都已经有所提高,知识也掌握得更加扎实了。
在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。
九、致谢
本设计是在李芳老师的悉心指导下完成的,李老师渊博的知识,严谨的治学态度,一丝不苟的工作作风,平易近人的性格都是我学习的楷模。在论文的研究及整理期间,李老师给了我很大的支持和鼓励,才使得论文得以顺利的完成,在此谨向导师表示忠心的感谢和崇高的敬意。
同时还要感谢同学们,他们也给了我很大的支持和帮助。
十、参考文献
1)《微控制器与接口技术》.虞沧.电子工业出版社.2012.10 2)李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社.2005.10 3)夏继强.单片机实验北京:北京航空航天大学出版社.2001.4)孙德辉,郑士富.微型计算机控制系统.北京:冶金工业出版社.2002
5)肖洪兵.跟我学用单片机.北京:北京航空航天大学出版社.2002.8 6)陈汝全.实用微机与单片机控制技术.电子科技大学出版社.1995.7 7)王涌.单片机与嵌入式系统应用[J],2002(3):58-61 8)罗亚非.凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社.2003.5 9)李庆.Keil C51 使用详解 V3.0[M].北京:北京理工大学出版
10)李华.MCS-51系列单片机实用接口技术.北京航空航天大学出版社.1993,162-229 11)温钢云,黄道平.计算机控制技术.广州:华南理工大学出版社.2002 12)肖洪兵.单片机应用技术.自编教材
13)孙德辉,郑士富.微型计算机控制系统.北京:冶金工业出版社.2002 14)韩来吉.用 89C51实现急救车优先的交通灯控制系统[J] 15)陈志强,芮延年,城市路口交通灯多级智能控制方法的研究J.2007 16)李广弟.单片机基础.北京:北京航空航天大学出版社.2001,56 17)马忠梅等.单片机的C语言应用程序设计.北京航空航天出版社.1999
单片机TA89C51 篇3
关键词: SerialPort;串行通讯;波特率
1 引言
PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通讯,是许多测控系统中常用的一种通信解决方案。
在Microsoft.Net技术广泛应用的今天人们采用了许多方法在Visual Studio.Net中来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件,这是最简单、最方便的方法,但需要注册;第二种方法是自己用API写串口通信;第三种方法是采用微软推出的最新版本Visual Studio 2005开发工具,NET Framework 2.0类库中包含的SerialPort类,方便地实现了所需要串口通讯的多种功能。本文着重讨论了Visual Studio 2005开发工具中SerialPort类的设计方法。
2 SerialPort类常用属性、方法和事件
2.1 命名空间
System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问。
2.2 串口的通讯参数
①通讯端口号:
[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM端口,该属性返回类型为String。
②通讯格式:
SerialPort类分别用[BaudRate]、[Parity]、[DataBits]、[StopBits]属性设置通讯格式中的波特率、校验位、数据位和停止位。
2.3 串口的打开和关闭
SerialPort类中打开关闭串口相应的是调用类的Open()和Close()方法。
2.4 数据的发送和读取
SerialPort类调用重载的Write和WriteLine方法发送数据,其中WriteLine可发送字符串并在字符串末尾加入换行符。读取串口缓冲区的方法有许多,其中除了ReadExisting和ReadTo,其余的方法都是同步调用,线程被阻塞直到缓冲区有相应的数据或大于ReadTimeOut属性设定的时间值后,引发ReadExisting异常。
2.5 DataReceived事件
DataReceived事件在接收到了[ReceivedBytesThreshold]设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发。
3 PC机与8051实现串行通讯需要解决的问题
3.1 TTL电平与RS232电平的转换
89C51单片机采用的是TTL电平且采用正逻辑[1],而PC机采用RS232与外部设备进行通讯,RS232采用负逻辑,因此MCS51单片机串行口与PC机的RS232接口相连进行通讯时必须进行电平的转换。通常采用MAX232电平转换芯片。
3.2 单片机与PC机通讯时波特率的设定
PC机与51单片机双方进行通讯时必须采用相同的波特率,PC机的波特率默认为9600b/s, 51系列单片机有两个定时/计数器,四种工作方式,一般用定时器工作于方式2(可重新装载的8位定时器/计数器)作为定时波特率发生器。因此单片机与PC机进行异步通讯时的波特率可由公式3.1得出:
其中SMOD是单片机电源控制寄存器(PCON)中的位7,开机(RESET)时,SMOD的设定值为0,亦可用指令“ANL PCON,#7FH”清除为0。fosc为单片机的晶振频率。根据需要的波特率即可得计数初值TH1。
4 单片机与PC机通讯时通讯协议的约定及部分初始化程序
在单片机与PC机的通讯中,单片机一般作为下位机负责从控制对象采集数据(如压力、流量等),上位机则进行现场可视化检测。传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。以下给出单片机和VC# 环境下部分的通讯程序。
4.1 串口通讯协议约定
波特率为9600b/s,无奇偶校验位,传输的数据位为8位,停止位为1位,用串行口工作于方式1。单片机的晶振频率fosc=11.059MHz,定时器T1工作于方式2作为波特率发生器,根据计数初值的计算公式(3.1)可得计数初值TH1为0FDH 。
4.2 单片机的串行通讯程序
单片机串行通讯程序,给出了初始化程序:
ORG0000H
AJMP START;转到初始化程序
ORG0023H
AJMP PGUART ;转到串行中断服务子程序
START: MOVSP,#60H ;堆栈指针初始化
MOVP0,#0FFH ;端口初始化
MOVP1,#0FFH
MOVP2,#0FFH
MOVP3,#0FFH
MOVTMOD,#20H;定时器T1工作于模式2,自动重装载
MOVTH1,#0FDH;TH1、TL1初值为"0FDH",9600bps
MOVTL1,#0FDH
MOVSCON,#50H;串行口工作于方式1,允许接收
SETB TR1 ;启动定时器T1
SETB ES ;允许串行口中断
SETB EA ;开总中断
MAIN:...... ;主程序处理其他任务,等待串口中断
AJMP MAIN
PAUSE:...... ;串口中断服务子程序,接收处理数据
RETI
END
4.3 上位机的串行通讯程序
例:发送及接收数据的程序:
private void button1_Click(object sender, EventArgs e)
{
string a;
SerialPort Ser1 = new SerialPort("com1", 9600, Parity.None, 8, StopBits.One);
Try
{
Ser1.Open();
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
if (textBox1.Text == "")
{
MessageBox.Show("Err");
Ser1.Close();
}
else
{
a=textBox1.Text;
try
{
//p.WriteLine(a);
p.Write(a);
}
catch(InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
textBox2.Text = Ser1.ReadByte().ToString();
Ser1.Close();
}
}
5 结束语
单片机与上位机的通讯在工业现场中应用的比较广泛,本文对C#提供的串行通讯SerialPort类来实现PC机与51单片机的通讯进行了探讨。实践证明,这种方案是可行的,能保证双方通讯正常。
参考文献
[1]蔡朝洋.单片机控制实习与专题制作.北京航空航天大学出版社.
单片机TA89C51 篇4
关键词:AT89C51单片机,PWM,L293D
一、前言
随着汽车工业的迅速发展, 关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目, 全国各高校也都很重视该题目的研究。特别在智能控制方面, 小车按固定的轨道运行 (寻迹) 以及遇见紧急情况 (行人) 可以避开 (避障) , 在工厂里的智能控制方面非常重要。因此智能电动小车的设计也越来越重要。下面我们就从智能电动小车的设计展开论述。
二、总体设计框图及控制原理
本智能电动小车设计采用AT89C51作为控制器, 开始由手动启动小车, 并复位, 当经过规定的起始黑线, 由超声波传感器和红外光电传感器检测, 通过单片机控制小车开始避障、调速;系统的自动避障功能通过超声波传感器正前方检测和红外光电传感器左右侧检测, 由单片机控制实现;在电动车进驶过程中, 采用双极式H型PWM脉宽调制技术, 以提高系统的静动态性能。
系统控制框图如图1所示:
三、分部硬件设计
1、小车本体选择
为了方便我们选用四轮式行走机构, 它具有以下特点:结构简单、运动平稳、移动速度快、易于控制。车体框架, 基于方便, 我们以对称结构为基础设计。电动小车整体图如图2所示。
2、单片机小系统避障设计
AT89C51是片内有ROM/EPROM的单片机, 因此, 这种芯片构成的最小系统简单﹑可靠。用AT89C51单片机构成最小应用系统时, 只要将单片机接上时钟电路和复位电路即可, 如图3所示。
3、避障电路设计
避障系统采用的是超声波检测。接收电路的输出端接单片机的外部中断源输入口。系统定时发射超声波, 在启动发射电路的同时启动单片机内部的定时器, 利用定时器的技术功能记录超申博发射的时间和接收到发射波的时间。但收到超声波的反射波时, 接收电路输出端产生一个负跳变, 在单片机的外部中断源输入口产生一个中断请求信号, 单片机相应外部中断请求, 执行外部中断服务子程序, 读取时间差, 计算距离。避障电路如图4所示。
4、小车寻迹电路设计
利用红外线在黑线和白纸对光的反射系数不同的特点, 在小车在行驶过程中不断向地面发射红外光, 根据接收到的反射光强弱来判断是否是黑线。利用这个原理, 可以控制小车行走的路迹。当红外发射管发射红外线信号, 经白色反射后, 被接收管接收, 一旦接收管接收到信号, 光敏三极管导通, 比较器输出低电平, 而红外线信号经黑色吸收后, 光敏三极管截止, 比较器输出高电平, 这就实现了通过红外检测信号的功能。将检测到的信号送到单片机进行分析处理。然后将处理后的结果发送到电机驱动模块, 进行校正。为了保证小车沿黑线行驶, 我们采用了四个线外探测头进行并行排列, 进行两级方向纠正控制, 这样控制精度得以提高。在小车行走过程中, 若向左方向偏离黑线, 则右侧的探头就会检测到黑线, 把信号传送到单片机。进行处理校正。控制其向右转, 反之, 向左转。电路如图5.在该电路中, 加比较器LM339的目的, 是使模拟量转化为开关量, 便于处理。为使发射有一定的功率, 发射回路要求不小于20mA的电流。
5、电机驱动电路设计
智能小车行走功能的实现依靠电机的驱动和调速。一个电动车整体的运行性能, 首先取决于它的电池系统和电机系统。通常使用的电机类型:步进电机和直流电机。直流电机:功率大, 速度快需要齿轮减速器, 电流通常大, 控制 (PWM) , 体形较小, 操作方便。
我们采用L293D芯片, 其驱动电路如图6所示。使用电机驱动芯片L293D, 不仅可以大大简化驱动电路, 而且功率容量大, 有利于电机转速的稳定。L293D在电机控制中可以灵活的应用, 如对电机输出能力的控制, 在单片机中可以进行脉宽调制 (PWM) , 实现对电机转速的精确控制。
四、测试数据及实物图
1、测试数据
(1) 寻迹模块:
寻迹模块硬件数据测试, 当红外对管下是白色和黑色时所对应的电压值如下表。
所测对应电压值为正常范围。
(2) 避障模块:
避障模块硬件数据测试, 用示波器对输出端进行测试, 所得波形如图7所示。
所测波形属正常范围。
(3) 电机驱动模块:电动机能正常运转。
2、实物图及结论
智能电动小车实体如图8所示, 小车总体的运行情况比较良好, 能够按照设定的路线进行寻迹, 能够进行简单的避障, 但是性能方面还有待进一步进行提高, 能够应用于实际现场中, 提高工厂中的智能控制化。
参考文献
[1].张红莲.基于单片机的超声波测距系统的设计[M].PLC&FA.2008.9
[3].卓晴, 黄开胜, 邵贝贝.学做智能车[M].北京航空航天大学出版社.2007.3
[2].李全利, 仲伟峰, 徐军.单片机原理及应用[M].清华大学出版社.2006.2
[4].张丹, 贺西平.基于单片机的超声波测距系统的设计[J].纺织高校基础科学学报.2008.5
[5].韩志军, 沈晋源, 王振波.单片机应用系统设计[M].机械工业出版社.2005.1
[6].徐建军.MCS-51系列单片机应用及接口技术[M].人民邮电出版社.003
[7].冯建华, 亮.单片机应用系统设计与产品开发[M].人民邮电出版社.2004
[8].李云钢, 逢兴, 龙志强.单片机原理与应用系统设计[M].中国水利水电出版社.2008.6
[9].潘超群.单片机控制技术在通信中的应用:MCS-5系列[M].电子工业出版社.2008.8
单片机TA89C51 篇5
随着科学技术的快速发展和人民生活水平的不断提高,我们生活中的各式各样的电子产品也在被每时每刻地更新换代着。每当我们乘坐火车进行长途旅行时,每当我们在操场上锻炼身体时,每当我们在大街上闲逛时,每当我们在校园里练习听力时,随身听都是我们不可分离的好伙伴。便携式音乐播放器(随身听)最大的贡献就是改变了人们欣赏音乐的方式,使人类可以随时随地地欣赏音乐,进而使自由享受音乐变成了一种时尚的个人体验进而形成了一种随身听文化。便携式音乐播放器的个人保有量在各种数码产品中也是位列前茅,从最早的磁带机,到后来的CD机,再到现在大行其道的MD机、MP3播放器,再到已初露峥嵘的硬盘播放器,便携式音乐播放器陪伴着我们度过了无数美好的时光。然而在这满天飞的播放器中有一种播放器却被我们时常用着,虽然我们看不到却能听到它的存在,它也是陪伴我们一起成长的一个伙伴,它就是号音自动播放器。在机关、院校的日常作息中需要计时和号音来提示人们,采用人工操作不仅效果差,而且容易出错,采用单片机设计的号音自动播放器摆脱了传统闹钟的刺耳声音,取而代之的是美妙的音乐,能为人们的日常生活提供准确的计时,且成本低廉,值得推广。
二、课题任务的主要内容
利用AT89C51型单片机和LM386型音频功率放大器设计自动计时号音播放器。本系统主要完成作息定时和号音播放功能,因此用定时器T1中断方式产生100ms基准时间,再根据作息表上各段时间的长短对基准时间用软件计时。可以用查表方式取得计数参数,计时到后将播放子程序地址送DPTR,转入播放子程序,放2遍对应号音后再继续计时。
三、已具备条件
应用电子技术专业的毕业生已完成电子线路、数字电路基础、单片机原理、单片机应用系统设计等课程的学习,并通过实践课的教学达到相应的电路设计、软件编程等能力目标。
四、设计思路与方案
该号音自动播放系统中主要有AT89C51、LM3861N1、扬声器、数码管显示组成。
本设计利用单片机AT89C51的定时和计数功能,来完成时间的显示和定时功能。并且,通过对定时器初值的设定来产生不同频率的声音,利用定时器中断来完成对音乐节拍长度的控制。通过音频功率放大器,将单片机输出的信号放大,再通过喇叭播放乐曲。最后还可在数码管上显示时间,当定时时间到后,喇叭自动播放一段连续的音乐。
单片机TA89C51 篇6
关键词:AT89C51;DDS技术;信息源;设计
1.引言
在电子及信息系统设备和领域中,无论是系统测试,还是应用系统,都少不了一个重要角色――信号源的参与。信号源可以根据不同的场合、需求和特点,提供输出一定波形幅值、频率可调,且频率准确、稳定的信号;甚至信号源还可以输出相位关系确定的多路波形信号。在这种背景之下,传统的模拟信号源已经明显落伍,不能满足现代电子技术设计测试的需要,而直接采用数字合成(Direct Digital Frequenly Synthesis,简称DDS)技术为满足这些目标提供了可能。直接数字频率合成技术具有频率分辨率高、带宽输出相对较宽、频率转换速度快、相位变换连续等优点,可以非常方便地实现对相位、幅度和频率的数字调制,能够满足数字化信号处理应用要求。由DDS技术产生的全数字化信号源,更具智能化、功能更强大、操作更便捷。DDS技术为信息源的设计提供了可靠保障,笔者使用单片机AT89C51为核心,以AD9850芯片作为DDS技术的实现载体,提出了一种信号源的设计与实现方法。
2.DDS技术基本原理
DDS技术是一种基于相位出发合成波形的全数字频率合成技术,该技术是建立在采样定理基础上,首先完成对所需波形进行采样,将采样值数字化后存入存储器作为查找表,然后再通过查表将数据读出,经过D/A转换器转换成模拟量,把存入的波形重新合成出来,进而实现信号的输出。DDS技术除具有上文所提到的优点外,还具有生成的正弦/余弦信号具有正交特性,相关输出信号得到有效数字化等特点,更便于信号的利用与效能的发挥。
DDS工作过程为:首先,将存于数表中的数字波形经数模转换器D/A,形成模拟量波形;改变寻址的步长来改变输出信号的频率,步长即为对数字波形查表的相位增量,由累加器对相位增量进行累加,累加器的值作为查表地址;D/A输出的阶梯形波形,经带通滤波,形成符合质量要求的模拟波形。DDS的核心是相位累加器。相位累加器由N位加法器与N位累加寄存器级联构成。每来一个时钟脉冲fs,加法器将控制字k与累加寄存器输出的累加相位数据相加,把相加后的结果送到累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。用相位累加器输出的数据作为波形存储器的相位取样地址。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。
3.主要芯片介绍
基于单片机AT89C51的AD9850DDS信息源,采用的主要芯片主要有两块,其中单片机AT89C51是系统的核心,AD9850为DDS信息源的主体部分。
A.AT89C51
AT89C51单片机是一种带有4K字节闪烁可编程可擦除只读存储器的低功耗、低电压、高性能CMOS8位微处理器。该单片机采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚具有较好的兼容性。AT89C51单片机基本结构如图1所示。
a.主要特性
与MCS-51兼容,具有4K字节可编程FLASH存储器。寿命可达1000写/擦循环,数据保留时间长。全静态工作:0Hz-24MHz,三级程序存储器锁定,具有128x8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,具有低功耗的闲置和掉电模式和片内振荡器和时钟电路。
b.引脚功能
AT89C51单片机共有40个管脚,详见图2。
VCC:供电电压。GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写"1"时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址"1"时,它利用內部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入"1"后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口: P3.0 RXD(串行输入口)、P3.1 TXD(串行输出口)、P3.2 /INT0(外部中断0)、P3.3 /INT1(外部中断1)、P3.4 T0(记时器0外部输入)、P3.5 T1(记时器1外部输入)、P3.6 /WR(外部数据存储器写选通)、P3.7 /RD(外部数据存储器读选通)。P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
B.AD9850
AD9850是AD公司生产的最高时钟为125 MHz、采用先进的CMOS技术的直接频率合成器,主要由可编程DDS系统、高性能模数变换器(DAC)和高速比较器三部分构成,能实现全数字编程控制的频率合成。AD9850基本结构如图3所示。
a. AD9850主要工作性能
单电源工作:+3.3V或+5V。接口简单,可用8位并行口或串行口直接装载频率和相位调制数据。片内有高性能D/A转换器和高速比较器,可输出正弦波和方波。最高工作时钟125MHz,32位频率控制字保证在125MHz的工作时钟下频率分辨率达0.0291Hz。5位调相控制字,可实现相位调制功能。频率转换速率极快,可达2.3€?07次/秒。低功耗:在125MHz时钟频率、+5V电源工作时,功耗为380mW;110MHz时钟、+3.3v工作时,功耗为155mW。工作温度范围宽:-40℃~+85℃。
b. 基本工作原理
AD9850内含可编程DDS系统和高速比较器,可实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,由一个加法器和一个N位相位寄存器组成,N一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0€啊?60€胺段У囊桓鱿辔坏恪2檠戆咽淙氲刂返南辔恍畔⒂成涑烧也ǚ刃藕牛缓笄疍AC输出模拟量。相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相应地正弦查询表。每经过一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。输出的正弦波频率fout=M*fc/ 2的N次方,fc为外部参考时钟频率。
AD9850 采用32 位的相位累加器将信号截断成14 位输入到正弦查询表,查询表的输出再被截断成10 位后输入到DAC,DAC再输出两个互补的电流。DAC 满量程输出电流通过一个外接电阻RSET调节,典型值3.9千欧。将DAC 的输出经低通滤波后接到AD9850內部的高速比较器上即可直接输出方波。在125MHz的时钟下,32 位频率控制字可使AD9850 输出频率分辨率达0.0291Hz。
c. 引脚功能
AD9850共有28个引脚,具体如图4所示。
图3 AD9850芯片结构框图 图4 AD9850引脚功能
D0-D7:8位数据输入口,可分次并行转载40位控制数据,D7(第250脚)也可以作为串行数据输入端使用;DEND:数字地;DVDD:数字电源;WCIK:数字写入脉冲;FQ-UD:频率刷新功能信号;CLK IN:外部参考时钟输入,可以是CMOS电子的脉冲序列;AGND:模拟电源;REST:DA 输出电流的了控制电阻连接端,通常接一只3.9K欧的电阻到地;QOUT:内部比较器输出端;QOUTB:内部比较器互补输出端;VINN:内部比较器的负相输入端;VINP:内部比较器的正相输入端;DACBL:内部的旁路端,通常悬空;IOUTB: DA 的互补输出端。
4. DDS信号源设计
基于单片机AT89C51的AD9850DDS信息源系统,控制核心采用单片机AT89C51,DDS芯片选用AD9850,系统产生信号为正弦波、方波和三角波,信号频率范围为:100-100KHz,频率步进<=100Hz,输出波形范围在为:0~5V(峰-峰值),可按0.1V调整,编程语言采用Keil C语言。
A.总体设计
基于单片机AT89C51的AD9850DDS信息源系统,主要由主控制器模块、正弦信号发生模块、输出电压放大模块、人机界面模块构成。系统基本结构框图如图5所示。
图5 基于单片机AT89C51的AD9850DDS信息源系统框图
B.硬件设计
信号产生模块用于输出三路正弦波、方波、三角波。其中正弦、方波信号由AT89C51单片机和AD9850DDS产生。数字输入值范围为0x000H~0xFFFH,其对应输出的模拟电压幅值为0 V~VREF-1LSB V(VREF参考电压为+5 V),1LSB的电压幅值即为5/4 096 V,从而产生所需信号。
基准调压电路,可使正弦信号以0 V为基准电压,上下对称、稳定输出。由于任意一路D/A转换器输出的正弦波形幅值变化范围仅在0 V-5 V,即正弦波的基准电压为2.5 V。因此,需要给输出的正弦波形升高一个电压基准。根据运算放大器的特性,此时U1B的反相输入端(引脚6)的电压值也为2.5 V。当正弦波经过差动放大电路(U1B及其外围电路R1、R2)和滤波电容C1后,波形输出端会获得电压幅值介于-2.5 V和+2.5 V之间的正弦波形。
C.软件设计
单片机软件部分具体编程方法为:通过程序循环传输D/A转换器波形的离散幅值数据,模拟基准时钟的功能;在单片机内部RAM取3个字节(24位)作为相位累加器;周期波形的幅值在相位上按256份等分,计算出的离散幅值数据组成波形数据表存储单片机内部ROM 中;程序每循环一次相位累加器累加一个频率控制字,从而得到一系列的相位值,直到相位累加器溢出,才完成波形一个周期的相位累加;取相位值序列的高8位数据,查
ROM表转换相位幅值,得到离散波形幅值;幅值序列通过D/A转换及滤波电路得到输出波形。
初始化程序如下:
参考文献
[1]刘旭东.基于DDS的毫米波汽车防撞雷达扫频源设计[J]电讯技术.2010.04
[2]马令坤,张震强,党宏社.DDS频率合成器杂散的分析与仿真[J]微电子学与计算机.2007.07
[3]徐晓林,刘四新.基于DDS芯片AD9851的步进频率源的设计与实现[J]大众科技.2009.05
[4]吴海超,邢斯瑞.基于AD9850的嵌入式信号源设计与实现[J]现代电子技术.2009.16
[5]吴士云,叶建芳,石 燚.DDS+PLL高性能频率合成器的设计与实现[J]现代电子技术.2010.05
单片机TA89C51 篇7
近年来, 随着高科技和信息技术的发展, 智能机器走进了智能住宅, 住宅智能化已然成为人类住宅一场新的革命。现代社会家庭正在以家庭智能化带来的多元信息和安全、舒适、便捷的生活环境作为新的目标和追求。然而, 由于目前广大家庭的窗户在智能控制方面的不足, 小孩在室内玩耍时爬上窗台酿成惨剧的情况时有发生, 小偷通过开着的窗户入室盗窃案件屡见不鲜, 对人们的生命财产安全造成极大损失。同时, 愈演愈烈的雾霾天气造成的空气污染、有毒气体对人的生命安全造成威胁、室外高温或者下雨天时开着窗户导致室内环境变差, 这些都对保持良好的居家环境产生了不利影响。
目前, 平移式窗户被广泛使用, 而市场现有的智能产品多是包括窗户本身以及控制系统在内的完整系统, 需要重新更换窗户, 在实际应用中存在较多不便。因此, 在现有窗户的基础上, 设计一种价格低廉、拆卸方便、多功能的平移式窗户启闭器是解决这些现实问题的有效途径。
2 硬件设备
整个单片机系统基于51单片机开发板, 配以多种精心设计的传感器和电机, 成本低、功能全。
系统中的STC89C52RC芯片采用的是8051核在系统可编程芯片, 最高工作时钟频率为80 MHz, 片内含8 KBytes可反复擦写1 000次的Flash只读程序存储器, 器件兼容标准MCS-51指令系统和80C51引脚结构。芯片内集成了通用8位中央处理器和ISP Flash存储单元, 具有在系统可编程 (ISP) 特性, 配合PC端的控制程序即可将用户的程序代码下载进单片机内部, 省去了购买通用编程器这一步, 而且速度较快、功耗低。
防盗和防小孩爬窗功能中的光电传感器采用集发射和接收于一体的E18-D80NK-N传感器, 发射光经过调制后发出, 接收头对反射光进行解调输出, 可有效避免可见光干扰透镜的使用, 能够检测80 cm内的情况, 价格便宜、易于装配、使用方便。
对于空气质量的检测, 结合当今大家比较关注的有毒气体污染和包括PM2.5在内的粉尘污染, 采用有害气体和粉尘、PM2.5空气质量检测器相结合的传感器。
MQ-2/MQ-2S气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡 (Sn O2) 。当传感器所处环境中存在一氧化碳、甲烷等有害气体时, 传感器的电导率随空气中可燃气体浓度的增加而增大, 传感器可将电导率的变化转换为与该气体浓度相对应的输出信号;PM2.5空气质量检测器可以探测1μm以上的粉尘粒子, 使系统根据不同需要作出反应。
对于湿度和温度的检测, 则分别采用模拟输出湿度传感器模块和DS18B20数字温度传感器。
执行机构主要由12 V25GA370直流减速电机马达驱动, 力矩大、噪声小、质量轻、功耗小, 配以L298N电机驱动板, 能够满足带动窗户的需求。
报警采用5 V有源单片机用蜂鸣器, 功耗小、成本低。
整个硬件在能够较好地实现功能的前提下, 其成本可以控制在100元以下, 具有很高的实用性。
3 智能设计
智能窗户启闭器要实现防盗、防小孩爬窗、防空气污染、防室外高温、防雨等基本功能, 主要包括传感器系统、控制系统、执行器系统等子系统;同时, 启闭器要实现在现有平移式窗户基础上可拆卸的机械设计, 成本较低。图1所示为该启闭器各模块及其结构原理图。
当室外有小偷靠近或室内小孩爬窗时, 窗户内、外安置的红外传感器分别将信号传输至单片机, 驱动与之相连的电机反转, 实现关窗, 同时, 蜂鸣器响起, LED灯闪亮, 提醒人们检查、处理;当室外下雨、高温、空气质量较差、有害气体泄漏时, 与之对应的湿度传感器、温度传感器、PM2.5烟雾传感器、有害气体传感器会及时将信号传输给单片机, 驱动电机开、关窗。一段时间后, 如果各传感器均没有检测到相应问题, 单片机控制窗户重新开启, 以通风换气, 改善室内环境。图2所示为智能窗户启闭器的工作流程图。
该窗户启闭器采用了红外、烟雾可燃气体、温度和湿度传感器等多传感器检测, 集防盗、防小孩爬窗、室外防湿、防高温、防空气污染等环境自适应功能于一体, 人性化程度高, 可以为用户提供一个良好的室内环境。
4 结构设计
为满足方便在现有平移式窗户上直接安装使用的要求, 智能窗户启闭器采用如下机械结构:控制系统主体部分集成安装在一块系统板上, 方便拆卸, 将马达电机连接的主动轮固定在窗户上边框, 两个轻质的定滑轮分别固定在下边框两底角处, 主动轮与从动轮之间通过质量轻、韧度强的PE线连接, 在需要控制移动的平移式窗户下端固连一定滑轮, 连接在该PE线上, 马达电机的正反转会带动该扇窗户左右移动, 达到开、关窗的目的。该结构设计简单、成本低廉、实用性强。
5 总结和展望
作为智能住宅的代表, 国家在《2000年小康型城乡住宅科技产业工程项目实施方案》中, 将建设智能化小康示范小区列入国家重点发展方向。智能窗户作为智能家居中不可或缺的一环, 具有广阔的市场前景。统计数据表明, 2009年, 我国窗户消费需求突破500亿元, 并且已安装窗户大多是普通推拉式窗户。
本文针对普通推拉式窗户设计了一种基于51单片机STC89C51的智能窗户启闭器, 通过传感器感知外界环境, 进而控制窗户启闭, 实现智能化家居。结果表明, 该启闭器能够初步完成预定的设计功能, 具有机械结构简单、易于在现有窗户上安装的特点, 可帮助普通家庭轻松实现对现有窗户的智能控制, 具有很好的市场前景和实用价值。
参考文献
[1]侯海涛.国内外智能家居发展现状[J].建材发展导向, 2004 (5) .
[2]罗伟.单片机应用[M].北京:人民邮电出版社, 2010.
单片机TA89C51 篇8
关键词:蜂鸣器,驱动电路,电子琴电路设计
0 引言
声音的产生是一种音频效果, 振动的频率高, 则为高音, 频率低, 则为低音, 人耳比较容易辨认的声音频率大概是0~20 kHz。在数字电路中, 以脉冲信号驱动蜂鸣器, 已产生声音, 在同样频率下, 人类的耳朵是很难区别正弦信号或脉冲信号所产生的音效。
1 音调的产生
1.1 发声电路
蜂鸣器的驱动电路通常有以下两种电路 (如图1、2所示) 。图1中, P1.0口输出1 (高电平) 时, 可以通过达林顿管提供较大的驱动电流, 以驱动蜂鸣器。图2中, 当P1.0口输出1时, 内部的MOSFET不导通, 晶体管的BE之间不会有输入电流, 所以蜂鸣器上也不会有输出电流, 蜂鸣器就不会激磁。当P1.0口输出为0时, 蜂鸣器就会激磁。
1.2 音调
在音乐中, 通常是以Do、Re、Mi、Fa、So、La、Si分别代表某一频率的声音。表1示出了音调—频率关系。
2 简易电子琴设计
制作一个7键的简易电子琴, 按下按钮K1时, 发出Do的声音, 按下按钮K2, 发出Re的声音, 以此类推。电路图设计如图3所示。当K1未被按下时, 单片机的P2.0口由VCC电源带电阻将其口拉成高电平;当K1被按下, P2.0口直接接地, 该接口变为低电平。同理K2~K7。
K1~K7这7个按键分别按下, 单片机的P3.7口发出不同的频率方波, 从而产出不同的声音。不同频率的方波, 可以通过编写延时函数的方法来得到, 也可以通过定时中断的方法使P3.7口输出不同的方波。
根据表1中的频率, 通过编程使简易电子琴发出美妙的音乐。对于延时函数中的参数m和x, 取m=1, x的取值和按键之间的关系如表2所示。
除了使用延时函数产生音调和节拍, 还可以采用定时器中断产生节拍。用定时器中断产生音调和节拍比用延时函数来的更准确, 而且程序还能处理其他事情;而用延时函数产生音调时程序不能处理其他事情, 所以作者建议使用定时器中断来产生音调和节拍。
表2中示出了不同音调的延时函数的参数, 整个程序的流程图如图4所示, 7个按钮分别采用7个子程序, 主程序在等待按键的按下, 当前某个按键按下后, 转去执行相应按键所对应的子程序。为节省单片机资源, 本文采用定时中断产生节拍。该电子琴的程序如下所示。
3 结语
单片机TA89C51 篇9
随着科技的不断发展, 频率的测量在各个方面都发挥着重要的作用。 大多数频率计由时序逻辑电路构成, 具有运算速度慢, 体积较大等缺点。 针对以上不足, 设计了该频率计。
在目前所有的基础理论和专业技术基础上, 该设计以STC89C51 为该数字频率计的控制核心, 采用C语言进行程序编程, 单片机进行智能控制, 之后结合外围的设计电路, 最终设计出数字频率计。 该频率计具有诸多优点, 在各种测试场所都可以有广泛的应用。 通过本设计, 使自己对频率计有了更深的认识, 为今后的教学工作打下基础。
2 系统总体设计
2.1 设计概述
数字频率计作为一种便捷的测量工具, 在科技领域中发挥着越来越重要的作用, 如: 通信仪器、 视频设备等, 是必不可少的测量仪器, 主要用它来测量信号的频率, 并在显示模块上以十进制数显示出来。
本数字频率计测量频率采用的是定时、 计数的方法, 显示器采用LCD1602 液晶屏, 测量范围为100Hz~1MHz的正弦波。
2.2 基本原理
该设计的基本设计原理是通过放大整形电路及单片机的计算将被测信号的频率显示在显示装置上, 用计数的方法实现对信号频率的测量。
本数字频率计的核心部分为单片机, 结合定时器和计数器来实现对信号频率和周期的测量。 通过程序的编写来实现1s的闸门时间的设定, 以及计数和中断。 可以测得在1s的闸门时间内通过的脉冲数目, 利用该脉冲数目可以间接地得出原待测信号的频率, 可以综合得出一个表达式: f=1/N, 式中N即为在单位时间内测得的经过整形的脉冲信号的个数[1]。
3 系统硬件
3.1 系统结构硬件框图
为了实现该数字频率计的设计, 该硬件结构从总体上讲可以分为3 大部分: 信号处理部分、 信号采集部分及液晶显示部分。 单片机部分主要负责脉冲信号的采集, 由它完成对脉冲信号的计数和显示等, 信号处理部分主要实现将被测信号转换为脉冲信号便于计数, 外部硬件结构还有LCD显示、信号处理等。 各个部分之间的关系如图1 所示[2]。
3.2 硬件电路
3.2.1 信号放大整形模块
放大整形电路包括衰减器、 放大器、 74HC14 施密特触发器。
74HC14: 74HC14 是一款兼容TTL器件引脚的高速CMOS器件, 逻辑功能为6 路斯密特触发反相器, 其耗电量低, 速度快。 在电子工业中, 现已基本取代74LS14 (TTL器件)。
在实际情况中信号是多种多样的, 幅度是不一定的, 会使得信号不利于测量, 幅度大会造成对器材的损害, 幅度小信号可能不能被很好地采集。
3.2.2 分频模块
分频模块主要由74HC390 十进制计数器构成, 如图2 所示。
为了满足要求中的测量范围, 本设计采用两个74HC390,完成100 次分频。
3.2.3 LCD显示模块
1602采用标准的16脚接口,其中:
第1脚:VSS为电源地;
第2 脚: VCC接5V电源正极;
第3 脚: 可以调节屏幕的对比度。 V0 为液晶显示器对比度调整端, 接正电源时对比度最弱, 接地电源时对比度最高(对比度过高时会产生 “ 鬼影” , 使用时可以通过一个10K的电位器调整对比度);
第4脚:该引脚RS为数据指令选择端;
第5脚:该引脚RW为数据读写选择端;
第6脚:E引脚为使能端;
第7~14 脚: D0~D7 为8 位双向数据端;
第15~16 脚: 空脚或背灯电源。 15 脚背光正极, 16 脚背光负极。
4 系统软件
4.1 程序流程图
如图3 所示。
4.2 工作原理
单片机的计数器输入口接受整形电路输出的脉冲信号,将定时器0 打开并初始化, 设置为1s的闸门时间, 则信号的频率就是计数器所记得的脉冲信号的个数。 将数据给到LCD液晶显示屏上显示。
5 测试
5.1 测试方案
(1) 软件仿真, 将程序在电脑上编译运行, 检查结果是否正确。
(2) 将各个模块连接在一起, 输入单个脉冲信号进行装置的逻辑检测。
(3) 将程序烧录至单片机上, 并通入待测信号, 检查输出数据是否正确。
5.2 测试结果
如表1 所示。
6 结语
以STC89C51 单片机为核心的数字频率计, 性能稳定、 成本低廉、 易于功能拓展、 人机交互性良好、 有利于工业化生产。 该频率计具有诸多优点, 在各种测试场所都可以有广泛的应用。 通过本设计, 锻炼了自己综合应用知识的能力, 为今后的工作打下基础。
摘要:提出一种数字频率计的设计方案,以单片机STC89C51为控制核心,实现频率的测量。硬件由放大电路、整形电路、计数显示电路组成;软件由数据显示模块和信号频率测量模块组成。
单片机TA89C51 篇10
1 总设计方案
本设计的主要原理是在运动的过程中,通过传感器把自行车运动过程中的速度大小转换为频率不一样的脉冲信号,将这些脉冲信号输送到单片机中,就能将运动过程中的速度大小给测量出来,考虑到运动过程中的其他因素,比如信号的干扰、衰减等,为了保证数据的精准,在把信号送入单片机前就对脉冲信号进行一定的处理,单片机就能够精确的计算出自行车的速度和运动的总里程,并把这些数据存储到合适的存储器中,由LCD1602显示出速率和里程值等信息。如图1。
1.1 单片机的选择。
51单片机的发展已经相当成熟了,价格便宜,其微处理器有个显著优势:在进行编程的时候可以支持单个位的操作。其它芯片都是在字节中通过逻辑门与或非来对位进行处理,而51系列可直接对位进行处理。当配置内部特殊功能寄存器时,只需写出这个寄存器在头文件中所定义的名称,直接给这个寄存器赋值1或者0,这就是按位操作的好处。此方法能够降低编程的工作量,使程序变得简洁,从而减少了开发的困难程度。本次选用的51系列是AT89C51单片机。
1.2 传感器的选择。
霍尔传感器是利用霍尔效应把磁输入信号转换成电信号的器件。霍尔集成电路的组成部分是:霍尔元件、整形电路、放大器、集电极开路输出等,霍尔元件是磁敏元件,当垂直于霍尔元件的磁场的强度发生改变的时候,其两端的电压会变化,通过放大、整形后输出脉冲电信号。根据此电信号系统主控芯片能够计算出速度、里程等。本设计选用A3144开关型霍尔传感器,其工作的温度范围较大,最低为-40℃,最高为150℃,并且芯片拥有很强的稳定性和体积小、灵敏度高。
1.3 显示模块的选择。
显示模块显示内容主要是数字和字母,需要同时显示出速度、总里程、时间等信息。最经常使用到的显示器一种是发光二极管显示器也就是LED显示器,另外是液晶显示器LCD。这两种显示器的性价比高,驱动电路很简单,易得到人们的青睐。考虑到码表设计在显示方面的需求,故选用1602LCD液晶显示器,其使用广泛,是一款字符型的液晶,专门进行字母,数字,符号等的显示,并且功耗低、体积小、显示内容丰富,基本可以满足自行车码表的显示需要。
1.4 时钟电路模块的选择。
自行车码表的时钟电路是通过DS1302来实现的,是由美国DALLAS公司生产的高性能的时钟芯片,具有功耗低等优势。芯片跟单片机之间通过SPI的方式进行通信。该芯片价格便宜,控制也比较简单,而且可以记录100年的时间,是一款性价比非常高的时钟芯片。
2 软件系统的程序设计
系统开机后,单片机首先进行自身内部模块的初始化,比如定时器,外部中断,再进行LCD1602的初始化。初始化完成后单片机驱动LCD1602显示自行车行驶的总里程数,然后霍尔传感器就会使用磁电效应来产生一个周期性脉冲对单片机的外部中断0口发出一个中断信号,中断结束后读取数据,调用程序计算运动过程当中的速度,并判断是否超过预定最大速度,调用显示程序,通过中断累计路程,然后在LCD上就能显示出时间、速度、里程等信息。如图2。
3 结论
本文是基于51系列单片机的自行车码表的设计,主要设计模块是单片机芯片控制、霍尔传感器信息采集,LCD显示、键盘输入数据以及报警模块等组成。其中霍尔传感器信息采集和单片机芯片控制模块的完成耗时最多,芯片控制模块用C语言编写程序,本模块要完成的功能很多,比如对其他模块的数据处理、控制等功能,是本次系统设计的核心,所以耗用时间最长。
摘要:本设计以AT89C51为核心控制芯片,测量自行车在运动过程当中的即时速率、累计路程,选A3144霍尔传感器,实时时钟芯片(DS1302)用来获取日期数据,通过LCD1602液晶显示出来。并采用报警器设置,当行驶的速度高于预设的速度行驶时,系统会产生自动报警,提醒已达到设定的最大速度,来保证骑行的安全性。
关键词:单片机,测速,里程,霍尔传感器
参考文献
[1]郭文川.MCS-51单片机原理、接口及应用[M].北京:电子工业出版社,2013.
[2]马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2001.
[3]王文海.单片机应用与实践项目化教程[M].北京:化学工业出版社,2010.
[4]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005,7.
单片机TA89C51 篇11
在日常数字逻辑电路实验中编码译码显示实验电路是编码、译码、显示三个电路的综合运用, 在数字逻辑实验电路中具有重要的地位, 在实验的过程中, 时常会出现显示结果的抖动, 经研究出现这种现象主要原因是:编码电路的编码信号输入采用手工拨盘方式, 产生的编码输入信号往往不稳定;另外, 电路控制性能较差, 不能达到自动复位, 为此有必要对现有电路进行改进, 在电路的设计上采用89C51单片机为控制电路制作而成, 自动提供稳定编码输入信号, 显示结果稳定性和电路控制性能大大提升, 提高了教学实验质量。
1编码译码显示实验电路的基本结构
编码译码显示电路的基本结构如图1所示, 主要由控制电路、编码信号发生器、编码译码显示电路等组成, 控制电路产生编码信号作为编码译码显示电路输入信号, 译码电路将编码信号转换成对应的七段数码显示信号, 送至LED数码管显示。
2系统硬件设计
控制系统和编码信号发生器采用89C51单片机实现。89C51性价比较高, 采用12 MHz晶振, 其内部带有4 KB的FLASH ROM, 无须外扩程序存储器。编码译码电路没有大量运算和暂存数据。89C51内部的128 B片内RAM已能满足要求, 无须外扩片外RAM。系统硬件设计如图2所示。
2.1 编码信号发生器电路
编码信号由89C51内部编程控制, 键盘输入“0~8”从P0.0~P0.7口送给编码器74LS147, “9”从P2.0口送给编码器, 具体编码见表1。
2.2 键盘设计
键盘采用4×3阵列结构设计, P1.0~P1.3为键盘扫描高4位, P1.4~P1.6为低4位。设计有“0~9”、Rst (复位) 、Ser (顺序) 。列线通过电阻接正电源, 并将行线所接的单片机的I/O口作为输出端, 而列线所接的I/O口则作为输入。当按键没有按下时, 所有的输出端都是高电平, 代表无键按下。行线输出是低电平, 一旦有键按下, 则输入线就会被拉低, 这样, 通过读入输入线的状态就可得知是否有键按下。
2.3 编码译码显示电路
编码译码显示电路主要由编码器 (74LS147) 、六反相器 (74AC04) 、译码器 (74LS247) 、七段LED数码管组成。编码器74LS147的1~5脚, 10~13脚为编码输入端, 低电平有效, 实验时可用接地作为低电平输入;14, 6, 7, 9脚为编码输出 (反码) ;16, 8脚为电源正负极。译码器74LS247的6, 2, 1, 7脚为译码输入 (高电平有效) ;9~15为译码输出;8, 16脚为电源正负极。六反相器 (74AC04) 主要是解决编码器74HC147和译码器74LS247信号匹配问题, 共有6组输入与输出, 只取其中4组。七段LED数码管主要是显示译码器输出状态。
电路主要原理是在74LS147的
3系统软件设计
软件设计由初始化、键盘扫描、编码程序三部分组成。开始进行初始化, P0、P2口按复位状态附值输出, LED无显示。然后4×3阵列式键盘开始进行扫描, 当判断有键按下时, 延时去键抖动, 判断是否务抖动, 当确定判断是有键按下时, 等待闭合键释放, 保存键值。根据键值调用编码程序, 将表1对应的编码送到P0, P2口输出, 主程序流程图如图3所示。
当按Ser (顺序序列) 键时, 依次按1~9编码值送至P0, P2口, 间隔0.5 s输出。Ser编码编码子程序如下:
4系统仿真与调试
Proteus是一个基于ProSpice混合模型仿真器的, 完整的嵌入式系统软、硬件设计仿真平台。编码译码显示电路能很方便地在此平台上进行调试和仿真, 延时时间同选用的单片机和所用晶体振荡器有关, 在调试时须注意。
5结语
提出了一款编码译码显示实验电路设计, 其控制系统和编码信号发生器采用89C51单片机实现, 经Proteus仿真和实验调试结果来看, 大大改善了电路的性能, 电路制作方便、操作简单, 在数字逻辑电路实验教学中具有一定的推广价值, 电路主要不足是不能实现故障自动检查, 如果能对电路故障进行自动检测, 电路性能将更加完善。
摘要:当前手工拨盘方式编码译码显示实验电路存在输入信号不稳定、控制性较差等缺点, 为了克服上述缺点, 电路设计采用89C51单片机为核心器件作为编码信号发生器和自动控制系统。通过Proteus平台仿真和实验调试, 电路能产生高质量输入信号和实现自动控制, 较好地解决了手工拨盘方式编码译码显示实验电路存在的缺陷。
关键词:89C51单片机,编码译码,显示,Proteus仿真
参考文献
[1]肖金球.单片机原理与接口[M].北京:清华大学出版社, 2004.
[2]肖明耀.数字逻辑电路[M].3版.北京:中国劳动社会保障出版社, 2003.
[3]王志功, 陈莹梅.集成电路设计[M].2版.北京:电子工业出版社, 2009.
[4]胡斌, 胡松.电子电路知识点:显示电路 (合订本) [M].北京:机械工业出版社, 2010.
[5]吴云.典型电子电路160例[M].北京:中国电力出版社, 2010.
[6]梅开乡, 梅军进.电子电路实验[M].北京:北京理工大学出版社, 2010.
[7]黄继昌, 张海贵, 徐巧鱼.数字集成电路应用集萃[M].北京:中国电力出版社, 2008.
[8]王守中, 聂元铭.51单片机开发入门与典型实例[M].2版.北京:人民邮电出版社, 2009.
[9]刘宁.创意电子设计与制作[M].北京:北京航空航天大学出版社, 2010.
[10]任文霞.电子电路仿真技术[M].北京:中国电力出版社, 2009.