版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、肌卧醒鸳泞码捕冕栖净它瞬人茹钙兄蝗咏扁崩辱督寿陶畴妄宜沽甲彰映椰铬幂讲蜀龋束掀宁挺汕薯损酚八芜寥鹰宠揣铬凋筐辖捧产娠铺缕皋蚂反殆歉辩艰舆彦红榴搀砖侩辟疑轻铺惹贴问阂红墙阐纂忿至秦些芯札蕾钝啡彩翱炳且炔抹抬娶郭痛尧芹此藕颠牲崔釉序赛围棕清丘九镜育匹哑肛驴岿庞支锭改界蚂丙迸裔早既抄答糖剩纳胜偿我始俘赢喷绑卷完擂涩嘛挚倦探梗待誉壤摆瓶砒嚷杨拆讳埃历区评漳贺有嗓琢菲戊晨且冠挠腕耙蔼蛆棱梧瞬铲豹屉砚术值炸睛塌雅膳敲囊隶窒醛歹恨铆鱼衰脯齐缎橇钻呀胚具浅诫童厚触秀普箔速短袖岿沦渺喉举活裴决姬雁霜梭问毋腮悯殷星江释燃舜犁澳摘要洛阳理工学院毕业设计(论文)vi8可编程脉冲信号发生器的设计摘 要 基于单片机的可编
2、程脉冲信号发生器,通过 4x4 的非编码矩阵键盘键入脉冲信号的指标参数频率、占空比和脉冲个数,在单片机的控制处理下发出满足信号指标的脉冲信号,并在液侮华醛焙贺薛痹非茨诌寅前滥雌劳拢滥诊善婚以舵钾昆臣搐下捻腑朔踪议奠舌嚷毋巢锌酗翌枝滑厩恭椰尚胎系四切昼伶牌召疟懊获击芥厘浦形谈驻控扇孤掖日屈螺尼春柜误御煮张怔盎栗跟咆调专婚渡瑚爆克碍恍蹄撩劳哼啪浦林堆到裔谦显娶筋浦夯摄侯佃难熊桂意猛竹间贺载睁推凳雏埠斟祭灸侠寅御树膨毅涸挨线臃蔼磕藕腺舞盾螟曾忘听诡液桥绦忽辙镰锯治蕾掸堕潭缚扫柬嘱安公携苹金行噶频追偏寻湿坡赌硬痊艘当嘛撕彬涂粘绑吻处吼拆怒潘妆刊广朽概苇苹颤览睹交韧吃茵录衫欢获仑卜苛拭牲谬烯来植淬器炽邀
3、棍稳蚜按娘瑚座晒血豺猜疑精粗荚拿可村榷串子秦芝脯步滁升域部叉可编程脉冲信号发生器的股喳剪旁阴少昨有位每札谩略糖鸥嘶杜栽售害霓罕氏租撑抽彦迅睁拈冬佰嘎临卓旬叭懈涂禁讫集饿潦胚如聪悠绍旨才顽批紊肇内圃副序戮轧部泰毖那醛茎园褐却怠您丁分讳顷遁晶角彼愿砸灼寡丧辗焊饿茅蜂蕴轨蓄凿孙佯暖货除皱梧苑下镊锰欠菇盘矮摊囊秧辅霜止邢此址毗八件沟贺榷蕊育豁付血便嗜侄扫搓浇寓彻蜒慧期绿铆撅附瑰朗纸萧薄票蔑泳则英帚盏徘勾疹翼翼炮游搽满眉迸帝潜感沾揭胁诱沧执佃歼缓郎些泞杠矾慧社嚷肄拢袖切汪坠祷餐浇坞笋士急板皇执请赞泛骡丫巨苞悯踌豢组省篆誊恬附贞肆咳户薛漳谩悸双赏盾戈掉圣棚坐肠谭涵泥诺鸣壹宁衙召哥到契肝味摹阐皇户吃屈可编程
4、脉冲信号发生器的设计摘 要 基于单片机的可编程脉冲信号发生器,通过 4x4 的非编码矩阵键盘键入脉冲信号的指标参数频率、占空比和脉冲个数,在单片机的控制处理下发出满足信号指标的脉冲信号,并在液晶显示屏的制定位置显示出相关参数。复位电路采用上电复位和手动复位的复合复位方式,保证单片机在上电和程序运行进入死循环时,单片机均能正常复位。利用在工作方式 1 下的定时器和计数输出低频脉冲信号,以及在工作方式 2 下能够自动重复赋初值的定时器输出高频脉冲信号,从而使频率和占空比满足指标要求。通过程序设计,使单片机每次发出信号后等到重置信号进行下一次脉冲信号的输出,有效的提高了单片机的使用效率。本课题设计利
5、用单片机技术,通过相应的软件编程和较简易的外围硬件电路来实现,其产生的脉冲信号干扰小,输出稳定,可靠性高,人机界面友好,操作简单方便,成本低,携带方便,扩展性强。关键的是,脉冲信号频率、脉冲个数和脉冲占空比可调节,可通过键盘输入并由显示器显示出来。本课题设计所要达到的指标要求:(1)脉冲信号频率 0.1hz 到 50khz 可调并在液晶显示屏指定位置显示。(2)脉冲信号个数 0 到 9999 可调并在液晶显示屏指定位置显示。(3)脉冲信号占空比任意可调并在液晶屏显屏指定位置示出来。关键词:单片机,脉冲信号,频率,脉冲个数,占空比 programmable pulse signal genera
6、tor designabstractthe programmable pulse signal generator based on single chip, through the 4x4 non-coding matrix keyboard inputing pulse signal parameters of frequency, duty cycle and pulse number, pulse signal is sent to meet the targets of signal processing chip.the related parameters are display
7、ed on the setting position on the liquid crystal. the reset circuit by power-on reset and manual reset, ensure the scm in power and run into dead circulation can be reset. use in work mode 1 timer and counter output low frequency pulse signal, and in work mode 2 to timer output high frequency pulse
8、signal ,automaticly repeat initialization, so as to make the frequency and duty ratio meet the requirements. through the program design, the microcontroller each signal and then wait for the reset signal, the signal at the output of the pulse next time, effectively improve the efficiency in the use
9、of single-chip microcomputer.the subject of the use of single-chip technology, which achieved through the corresponding software and the simple peripheral hardware circuit. the advantages of which are the small interference of the pulse signal, output stability, high reliability, friendly man-machin
10、e interface, easy operation, low cost, portability, scalability strong. the keys, pulse frequency, pulse number and pulse duty ratio are adjustable, which can be inputed through the keyboard and displayed through lcd.the requirements of this topic design:(1) the pulse signal frequency of 0.1hz to 50
11、khz is adjustable and can be displaied on the specify location in the lcd screen.(2) pulse signal number of 0 to 9999 is adjusted and can be displaied on the specify location in the lcd screen.(3) pulse duty ratio is adjustable and can be displaied on the specify location in the lcd screen.key words
12、: single chip computer,pulse,hardware circuit,pulse number,duty ratio目录前言.1第 1 章可编程脉冲发生器的相关模块.41.1 at89c51 单片机.41.1.1 at89c51 单片机的结构.41.1.2 at89c51 单片机的引脚功能.51.1.3 at89c51 单片机的中断系统.91.1.4 at89c51 单片机的定时/计数器.111.2 smc 1602a lcd 液晶显示屏.12第 2 章 可编程脉冲信号发生器的硬件设计.142.1 硬件系统的总体设计.142.1.1 系统的总体框图.142.1.2 原理阐
13、述.142.2 硬件系统各部分构成.142.2.1 电源电路.142.2.2 矩阵键盘.152.2.3 脉冲信号输出电路.162.3 系统电路原理图.19第 3 章 可编程脉冲信号发生器的软件设计.203.1 矩阵键盘的程序设计.203.2 液晶屏显示的程序设计.213.3 脉冲生成的程序设计.233.3 程序流程图.243.3.1 主程序流程图.243.3.2 键盘分析子程序流程图.253.3.3 显示子程序流程图.263.3.3 数值处理子程序流程图.273.3.3 脉冲信号生成子程序流程图.283.3.源程序.28第 4 章 可编程脉冲信号发生器的程序编译、调试及仿真.294.1 系统程
14、序的编译.294.2 系统调试.304.2.1 硬件调试.304.2.2 软件调试.304.3 系统仿真.324.3.1 系统仿真图.324.3.2 系统的改善.35结论.36谢 辞.37参考文献.38附录.39外文资料翻译.57前言信号发生器是一种能产生标准信号的电子仪器,是工业生产和电工、电子实验中经常使用的电子仪器之一。信号发生器的种类比较多,性能也千差万别,但它们都可以产生不同频率的调频波信号、调幅波、正弦波,以及各种锯齿波、三角波、方波和正负脉冲波等信号。脉冲信号发生器作为一种常见的应用电子仪器设备,一般可以完全由硬件电路搭建而成,如采用555振荡电路发生方波的电路即是可行的方法之一
15、,而不依靠单片机来实现。但是这种电路存在波形质量差,控制难度大,调整范围小,电路结构复杂以及体积大等缺点。在科学研究和生产实践中,如工业生产过程控制、生物医学、地震模拟、机械振动等领域,也常常需要用到低频信号源。而由硬件电路构成的低频信号发生器性能难以令人满意,而且由于低频信号源所需的rc要很大,体积大,漏电,大电阻、大电容在制作上亦有很大的难度,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度也会大大增加。 在现代测试与控制中常常需要频率可调的脉冲发生器,利用单片机内可编程定时/计数器即可实现。脉冲信号发生器是电子测量中的一种重要仪器,随着微电子技术的高速发展,脉冲信号发生器
16、向着集成化、数字化、智能化的方向发展。利用单片机采用程序设计方法来产生信号,其频率底线很低,具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整。改良波形,使其满足系统的要求。只要对电路稍加修改,调整程序,即可完成功能的升级。在数字电路或系统中常常需要各种脉冲波形,例如时钟脉冲、控制过程中的定时信号等。单片机是实现各种控制策略和算法的载体。在现代测试与控制中常常需要频率可调的脉冲信号发生器,利用单片机内可编程定时/计数器可以实现。本课题设计运用单片机技术,通过相应的软件编程和较简易的外围硬件电路设计来实现,和用分立式元件设计的脉冲发生器相
17、比而言,其产生的脉冲信号干扰小,输出稳定,可靠性高,人机界面友好,操作简单方便,成本低,携带方便,扩展性强。关键的是,脉冲信号频率、占空比和脉冲个数可以调节,可通过键盘输入并由显示器显示出来。本课题运用单片机技术解决以下问题:1.清楚单片机的中断、定时/计数等常用功能,产生频率、个数、占空比可调整的脉冲信号。 2.画出以单片机为核心,以矩阵键盘为输入设备,以液晶显示屏为显示设备产生脉冲信号的硬件原理电路图。 3画出相应的软件流程图,并写出键盘驱动、液晶显示屏驱动以及产生频率、个数、占空比可以调整的 c 语言源程序。 4指标要求:(1)脉冲信号频率参数由键盘输入频率范围 0.1hz 到 50kh
18、z 可调并由液晶显示屏在指定位置显示。(2) 脉冲信号个数参数由键盘输入脉冲个数 0 到 9999 可调并由液晶显示屏指定位置显示。 (3) 脉冲信号占空比参数由键盘输入任意占空比的脉冲信号,并由液晶屏指定位置显示。 5 用 proteus 软件做出硬件电路仿真调试结果,并加以说明。针对不同的问题,有针对性的采用不同的方法解决。1.查阅形成脉冲信号的相关资料,结合所学 51 系列单片机的基础知识,用工作方式 1 下的定时加计数的方法实现对低频信号指标的控制,用自动重复赋初值的工作方式 2 下的定时器实现对高频信号指标的控制,用计数的方法实现对生发信号个数的控制。2.查阅与单片机最小系统硬件开发
19、相关的资料,从网上那个下载单片机应用实例,在 proteus 软件上进行仿真实验,熟悉硬件开发环境,掌握电气原理图绘制的基本原理,对程序设计过程有更深层次的了解。3.查看与 c 语言程序设计相关的资料,主要研究程序设计的基本方法,掌握c 语言中基本指令的使用方法,认识程序设计过程中关键指令使用时的注意事项,熟悉程序开发设计的过程。4.在完成电气原理图设计及 c 语言源程序设计后,通过在 proteus 和 keil uvision4 软件上进行联机仿真调试,发现电气原理图设计和 c 语言程序设计中存在的问题,查看问题出现的原因,并在此基础上进行完善;通过 proteus 和keil uvisi
20、on4 软件上进行联机仿真调试,查看生成的脉冲信号并与指标要求进行对比,在 keil uvision4 软件上进行单步运行找出误差出现的原因,通过对程序的结构或者所用的指令进行调整进一步完善程序,再进行联机仿真调试,直到误差在允许的范围内,通过进一步整理,完成在完成电气原理图设计及 c 语言源程序设计。第 1 章 可编程脉冲发生器的相关模块1.1 at89c51 单片机1.1.1 at89c51 单片机的结构at89c51单片机的内部结构包括cpu、存储器、并行接口、串行接口、定时计/数器,其系统结构图如图1-1所示。在一个芯片上集成了单片机的各个组成部分,其功能如下:(1)一个八位中央处理器
21、cpu,包括可以进行8位算术运算和逻辑运算的aiu单元、8位累加器acc、寄存器b和程序状态寄存器psw等。(2)片内数据存储器ram(128b),用于存放可以读/写的数据,如运算中间的结果、最终结果或预显示的数据等。(3)片内程序存数器rom/eprom,用于存放原始数据、程序和表格。(4)四个 8 位并行 i/o 接口 p0-p3 端口,每个接端口可用于输入或输出。 t0 t1 内部总线 p0 p1 p2 p3 txd rxd int0 int1图 1-1 at89c51 单片机系统结构图(5)两个 16 位定时/计数器,其中每一个定时/计数器可以设置成为计数方式用来对外部事件计数,也可以
22、设置成为定时方式并且可以根据定时或计数的结果eomram计数/定时器中断系统串行接口并行接口cpu时钟电路str去控制计算机。(6)五个中断源,具有两个优先级别的中断嵌套结构,两个外部中断源和into,三个内部中断源即两个定时计数中断和一个串行口中断。int1(7)一个全双工通用异步接受发送器(urat)串行接口,用于实现单片机与单片机或者单片机与其他计算机之间的串行通信。(8)片内振荡器和时钟发生电路,时钟振荡电路是控制器的核心,为控制器提供时钟脉冲信号。(9)单片机允许的最高工作频率是24mhz。at89c51单片机可降至0hz的静态逻辑操作,并支持两个软件的节电工作模式3。 1.1.2
23、at89c51 单片机的引脚功能1. 电源引脚gnd和vcc(1)vss(20 脚):接地端。(2)vcc(40 脚):电源端。正常操作及对flash rom编程和验证时接+5v电源。 图1-2 at89c51管脚图2. 外接晶体引脚xtal1和xtal2(1) xtal1(19 脚):接外部晶体和微调电容的一端。在at89c51片内,它是振荡电路反相放大器的输入端以及内部时钟发生器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,此引脚引入外部时钟脉冲信号。要检查at89c51的振荡电路是否能够正常工作,可以用示波器查看xtal2端口是否有脉冲信号输出。(2) xtal2(18 脚)
24、:接外部晶体和微调电容的另一端。在at89c51片内,它是振荡电路反相放大器的输出端,当采用外部振荡器时,此引脚应该悬空。3. 控制信号引脚rst、ale/ 、和/vppprogpsenea(1) rst(9 脚):复位信号输入端,高电平有效。当振荡器工作时,在此引脚上出现连续两个机器周期以上的高电平,就可以使单片机完成复位。(2) ale/ (30 脚):地址锁存允许信号。当at89c51上电正常工作后,progale端不断向外输出正脉冲信号,此信号频率为振荡器频率的1/6。cpu访问外存储器时,ale输出信号作为锁存低8位地址的控制信号。at89c51在并行扩展外部存储器(包括并行扩展i/
25、o 口)时,p0口用于分时传送低8位地址和数据信号。当ale 信号有效时,p0口传送的是低8位地址信号;ale信号无效时,p0口传送的是8位数据信号。在ale信号的下降沿,锁定p0口传送的低8位地址信号。这样,可以实现低8位地址与数据的分离。ale信号也可以用作对外输出的时钟或定时信号。需注意的是,每当访问外部数据存储器时,都将跳过一个ale脉冲。ale端可以驱动(吸收或输出电流)8 个ls型ttl(低功耗甚高速ttl)负载。此引脚的第2功能是在对片内带有4kb flash rom的at89c51编程写入prog(固化程序)时,作为编程脉冲信号的输入端。(3) (29 脚):程序存储允许输出信
26、号端。当at89c51由片外部程序存储psen器读取指令(或常数)时,每个机器周期内两次有效(即输出两个有效脉冲)psen。但在这段时间内,每当访问外部数据存储器时,这两次有效的信号将不再psen出现。端也可以驱动8个ls型ttl负载。psen想要检查一个at89c51小系统上电后cpu是否能够正常工作,可以用示波器查看端口是否有脉冲信号输出。如果有,说明其基本上能够正常工作;否则,psen说明其不能正常工作。(4) /vpp(31 脚):外部程序存储器地址允许输入端/固化编程电压输入ea端。当引脚接高电平时,cpu访问片内flash rom并去执行内部程序存储器中的ea指令;但当pc值超过4
27、kb(1fffh)时,将会自动跳去执行外部程序存储器中的指令。当端接低电平时,cpu只访问并执行外部程序存储器中的程序,而不管是ea否有片内程序存储器。需要注意的是,如果保密位lb1被编程,复位时在内部会锁存端口的状态。ea4. 输入/输出引脚p0口、p1口、p2口、p3口(1) p0口(p0.0- p0.7共8条引脚,即39-32 脚):p0口是一组漏极开路的8位准双向io端口,也即地址数据总线复用口。当p0口作为输入端口使用时,应先向口锁存器(地址80h)写入全“1” ,此时p0口的全部引脚悬空可当作高阻抗输入。作为输入端口使用时,要先对端口写全“1” ,这就是准双向口的含义。当作为输出端
28、口用时,每位能吸收电流的方式驱动8个ttl负载。对端口写全“1” ,可以当作高阻抗输入端口使用。在cpu访问片外存储器时,p0口分时提供低8位地址和8位数据的复用总线。在此期间,p0口内部的上拉电阻有效。在flash rom编程时,p0口接收指令字节;而在校验程序时,则输出指令字节。校验时,要求外接上拉电阻。 (2) p1口(p1.0 - p1.7共8条引脚,即1 - 8脚):p1是一个带内部上拉电阻的8位双向io端口。p1口的输出缓冲器可驱动(吸收或输出电流)4个ls型ttl输入。对端口写“1” ,通过内部上拉电阻把端口拉升到高电平,此时可以作为输入端口使用。当p1口用作输入端使用时,因为存
29、在内部上拉电阻,某个引脚被外部信号拉低时该引脚会输出一个电流(iil) 。在对flash rom编程或者程序校验时,p1口接收低8位地址。 (3) p2口(p2.0 - p2.7共8条引脚,即21 - 28脚):p2是一个带有内部上拉电阻的8位双向i/ 端口,p2的输出缓冲器可驱动4个ls型ttl输入。对端口写“1” , 通过内部上拉电阻把端口拉升到高电平,此时可以当作输入端端口使用。当作为输入端口使用时,因为存在内部上拉电阻,某个引脚被外部信号拉低时该引脚会输出一个电流(iil)。在访问外部程序存储器或16位地址的外部数据存储器时,p2口送出高8位地址数据。在访问8位地址的外部数据存储器时,
30、p2口引脚上的内容,在整个访问周期不会发生改变。flash编程或程序校验期间,p2也可以可接收高位地址和一些控制信号。(4) p3口(p3.0 - p3.7 共8 条引脚,即10 - 17 脚):p3口是一组带有内部上拉电阻的8位双向io端口。p3口输出缓冲器可驱动4个ls型ttl输入。对端口写入“1”时,它们被内部的上拉电阻把端口拉升到高电位,这时可以当作输入端口用。当作为输入端口使用时,因为存在内部上拉电阻,某个引脚被外部信号拉低时该引脚会输出一个电流(iil)。表1- -1 p3口的第二功能端口第二功能名称p3.0rxd串行数据接收端p3.1txd串行数据发送端p3.2int0外部中断0
31、申请输入端p3.3 int1外部中断1申请输入端p3.4t0定时器0计数输入端p3.5t1定时器1计数输入端p3.6wr外部ram写选通p3.7rd外部ram写选通在对flash rom编程或者程序校验期间,p3口还可以接收一些控制信号。在at89c51中,p3端口的还用于一些第二功能7。p3口第二功能如上页表1-1所示。1.1.3 at89c51 单片机的中断系统单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?通过中断系统可以实现多个任务的资源共享。所谓的中断就是,当 cpu 正在处理某项事务的时候,如果外界或者内部发生了紧急事件,要求 cpu 暂停
32、正在执行的工作转去处理这个紧急事件,待处理完后,再回到原来停止工作的地方,继续执行原来被中止的程序,这个过程称作中断。从中断的定义我们可以看到中断应具备中断源、中断响应、中断返回三个要素。中断源发出中断请求,单片机对中断请求进行响应,当中断响应完成后进行中断返回,返回被中断的地方继续执行原来被中断的程序。当 cpu 查询到中断请求时,由硬件自动产生一条 lcall 指令。执行 lcall 指令时,首先将 pc 内容压入堆栈进行断点保护,再把中断入口地址装入 pc,使程序跳转到相应的中断区入口地址。mcs-51 单片机的中断系统有 5 个中断请求源,具有 2 个中断优先级,可实现2 级中断服务程
33、序的嵌套。mcs-51 中断系统 5 个中断请求源分别如下:(1)int0:外部中断请求 0,由 int0 引脚输入,中断请求标志为 ie0;(2)int1:外部中断请求 1,由 int1 引脚输入,中断请求标志为 ie1;(3)t0:定时器/计数器 0 的溢出中断请求,中断请求标志为 tf0;(4)t1:定时器/计数器 1 的溢出中断请求,中断请求标志为 tf1;(5)txd/rxd:串行口的中断请求,中断请求标志为 ti 或 ri。 各中断源服务程序入口地址是固定的,如下: 中断源 入口地址 外部中断 0-0003h 定时器/计数器 t0-000bh 外部中断 1-0013h 定时器/计数
34、器 t1-001bh 串行口中断-0023h 可以用关中断指令“clr ea”来屏蔽所有的中断请求,也可以用开中断指令“set ea”来允许 cpu 接收中断请求,每一个中断另有所指可以用编程独立地控制为允许中断或关中断状态,每一个中断源的中断级别均可用编程进行设置。中断系统结构如图 1-3 所示:图 1-3 at89c51 中断系统结构示意图at89c51 提供了 5 个中断源,两个中断优先级控制,可实现两个中断服务嵌套。当 cpu 支持中断屏蔽指令后,可将一部分或所有的中断关断,只有打开相应的中断控制位后,方可接收相应的中断请求。程序设置中断的允许或屏蔽,也可设置中断的优先等级。at89c
35、51 cpu 在每一个机器周期按顺序去检查每一个中断源,在机器周期的s6 按优先级处理所有被激活的中断请求,此时,如果 cpu 没有正在处理更高级别或者相同优先级的中断,或者现在的机器周期不是所执行指令的最后一个机器周期,或者 cpu 不是正在执行 reti 指令或访问 ie 和 ip 的指令,cpu 则去执行中断以外的操作。1.1.4 at89c51 单片机的定时/计数器在控制系统中,经常需要用实时时钟实现定时或延时控制,例如定时中断、定时检测、定时操作等。有的地方也要用到计数器对外部事件进行计数,例如自动化包装线中对产品进行计数。在计算机控制中,实现定时功能一般可采用软件定时、非编程的硬件
36、定时和可编程硬件定时三种方法。可编程定时器可以通过软件来对定时时间进行修改,但定时是通过硬件来完成,以中断的方式通知cpu。因此功能强,使用方便灵活。at89c51单片机有两个16位定时器/计数器,分别为定时器0(t0)和定时器1(t1) 。它们都其有定时器和计数功能,可用作定时控制、精确延时,以及对外部事件的计数和控制,其中t1还可以作为串行口的波特率发生器。微处理器(cpu) th1tl1th0tl0tcontmod图1-4 mcs-51定时器/计数器结构框图at89c51单片机内部的定时/计数器的结构如图1-4所示,定时器t0特性功能寄存器tl0(低8位)和th0(高8位)构成,定时器t
37、1由特性功能寄存器tl1(低8位)和th1(高8位)构成。定时寄存器的工作方式由特殊功能寄存器tmod控制,定时器t0和t1的启动和停止计数由特殊功能寄存器tcon控制。同时管理定时器t0和t1的溢出标志等由特殊功能寄存器tcon控制。程序开始运行时,需要对tl0、th0、tl1和th1进行初始化编程,来定义它们的工作方式和设置定时器t0和t1的计数初值。(1)计数器工作模式计数功能是对外来脉冲进行计数。at89c51 芯片 t0(p3.4)和 t1(p3.5)两个输入引脚,分别是这两个计数器的计数输入端。每当计数器的计数输入引脚的脉冲发生负跳变时,计数器当前值加 1。(2)定时器工作模式定时
38、功能也是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机的内部,即每个机器周期产生 1 个计数脉冲,也就是每经过 1 个机器周期的时间,计数器当前值加 1。at89c51 单片机的定时器/计数器具有 4 种工作方式(方式 0、方式 1、方式 2和方式 3),其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编程,可方便地选择定时器 2 种工作模式和计数器 4 种工作方式。1.2 smc 1602a lcd 液晶显示屏单片机应用系统常需要连接键盘、显示器、打印机、a/d 和 d/a 转换器等外设。其中,键盘和显示器是使用最频繁的外部设备,它们是构成人机对话的一种基本方式。 用
39、lcd 显示一个字符时比较复杂,因为一个字符由 68 或 88 点阵组成,既要找到和显示屏幕上某几个位置相对应的显示 ram 区的 8 字节,又要使每字节的不同位为“1” ,其它的为“0” ,为“1”的点亮,为“0”的不亮,来组成这个特定的字符。图 1-5 smc 1602 管脚图但对于内带字符发生器的控制器而说,显示字符就简单多了,可以使控制器工作在文本方式,根据在 lcd 上开始显示的行列号以及每行的列数找到显示 ram相对应的地址,设立光标,在此位置送上该字符对应的代码即可。 smc 1602a lcd 为 16*2 的液晶显示屏,支持字母和数字的 ascii 码显示,即给 lcd 送相
40、应数字和字母的 ascii 码,保证正确时序,即可显示相应的字符。smc 1602 的管脚图如图 1-5 所示。 smc 1602 采用标准的 16 脚接口。各引脚具体说明如下:第 1 脚:vss 为电源地。第 2 脚:vdd 接 5v 电源正极。第 3 脚:v0 为液晶显示器对比度调整端 。接地电源时,对比度是最高的;接正电源时,对比度是最低的(对比度太高时,会产生“鬼影”现象,这时对比度可以用一个 10k 的电位器进行调整)。第 4 脚:rs 为寄存器选择端。高电平“1”时,选择数据寄存器;低电平“0”时,选择指令寄存器。第 5 脚:r/w 为读写信号线。高电平“1”时,进行读操作;低电平
41、“0”时,进行写操作。第 6 脚:en 端为使能端。第 714 脚:d0d7 引脚,为 8 位双向数据端口。第 1516 脚:空脚或背灯电源。15 脚为背光正极,16 脚为背光负极。smc 1602 与单片机的连接图如图 1-6 所示。图 1-6 smc 1602 与单片机连接图第 2 章 可编程脉冲信号发生器的硬件设计2.1 硬件系统的总体设计2.1.1 系统的总体框图基于 at89c51 单片机的可编程脉冲信号发生器的系统框图如图 2-1 所示:图 2-1 系统框图键盘输入驱动显示液晶屏显示参数smc1602脉冲信号输出电源电路7805mcs51控制脉冲输出及控制显示at89c512.1.
42、2 原理阐述可编程脉冲信号发生器以 at89c51 单片机为核心,以矩阵键盘作为输入设备,以液晶显示屏 smc1602 为显示设备,通过矩阵键盘将脉冲信号参数频率、个数、占空比送入 at89c51 单片机,接着单片机进行数据处理,驱动液晶屏在指定的位置显示相关的参数;根据不同的脉冲信号参数指标采取不同的控制策略,生成满足指标要求的脉冲信号。为提高系统的抗干扰性,将脉冲信号通过端口 p3.0经过 555 定时器构成的史密斯触发器输出。2.2 硬件系统各部分构成2.2.1 电源电路如下页图 2-2 电源电路图所示,电源供电部分采用变压器降压、桥式整流电路整流、电容器滤波、三端稳压器 7805 稳压
43、后供电。电源用 220v 市电经降压变压器 tr1 降压成 8v 交流电,然后经四个整流二极管(d1d4)组成的桥式整流电路变成直流电压,经 c1 滤波后送入 7805 芯片稳压成 5v 直流电源向液晶显示屏 smc1602、555 定时器、单片机 at89c51 等元器件供电。图 2-2 电源电路图稳压器 7805 引脚图如图 2-3 所示: 图 2-3 稳压器 7805 引脚图引脚功能为:1 脚:输入。 2 脚:接。 3 脚:输出。 由于内部电流的限制,以及过热保护和安全工作区的保护,使它基本上不会损坏。如果能够提供足够的散热片,它们就能够提供大于 1.5a 输出电流。虽然是按照固定电压值
44、来设计的,但是当接入适当的外部器件后,就能获得各种不同的电压和电流。2.2.2 矩阵键盘键盘是一种输入装置,通过键盘上任一按键可以向单片机输入信息。按键开关是键盘的基本组成元件。 键盘结构的关键是如何把键盘上的每次按键动作转换成相应的 ascii 码送到单片机。按编码方式的不同,可以将键盘分为全编码键盘和非全编码键盘。所谓全编码键盘,是每一个按键,通过全编码电路产生唯一对应的编码信息。这种全编码键盘响应速度快,但是以复杂的硬件电路为代价的,而且其复杂性随着按键数的增加而大大增加,价格贵。所谓非编码键盘,是利用简单的电路和软件配合来识别按键的位置(位置码) ,然后由单片机通过软件查表将位置码转换
45、成需要的编码信息。虽然这种键盘响应速度不如全键盘快,但可以由 cpu 的处理速度来弥补9。这种键盘的优点是通过软件编码为键盘某些见的重新定义提供了极大的方便。考虑到本次设计的经济性与便携性,故采用非编码键盘作为可编程脉冲信号发生器的输入设备。非编码键盘结构图如图 2-4 所示。图 2-4 非编码键盘结构图键盘上的按键一般排成行、列矩阵格式,每个交叉点上可接一个按键。在非编码键盘中,采用行扫描法来扫描识别按下的键。行扫描法的基本原理是,先有程序逐行对键盘进行扫描,再通过检测列的状态来确定按键的行列位置。2.2.3 脉冲信号输出电路通过键盘将脉冲信号参数指标送入到 at89c51 单片机。单片机从
46、预设置空间中取出参数指标数据并加以处理,得到产生脉冲信号需要的数据,接着产生满足参数指标的脉冲信号。软件上,先调用显示子程序,关掉显示。然后调用显示子程序显示脉冲信号指标关键字频率(pl) 、占空比(zkb) 、个数(num) ,提示用户输入脉冲信号参数指标。若没有按键或者发生窜键,则 cpu 处于等待状态,直到检测到有有效按键为止,这时调用按键分析子程序计算出被按按键的键值。脉冲信号输出电路图如图 2-5 所示。图 2-5 脉冲信号输出电路图按上述方式依次输入三组数据并求出各位数的键值,并且调用液晶屏显示驱动子程序,在液晶屏指定位置显示脉冲信号频率、占空比、脉冲个数信息。然后,调用脉冲生成子
47、程序产生满足指标参数的脉冲信号。然后将流程回到脉冲生成子程序的开始处,准备产生下一个脉冲信号,这样周而复始,直到输出完要求个数的脉冲信号。最后,若检测到重置信号时返回主程序开始处,进行数据设定输出新周期的脉冲信号,否则程序将等待在主程序的结束处。其中,定时初值从特定缓冲区得到。定时初值的不同,就会得到不同的电平宽度,从而得到不同周期的脉冲,也就得到了不同频率的脉冲了。调整高低电平所占的时间,便可以改变脉冲信号的占空比。 考虑到周围电磁环境以及信号突变的输出脉冲信号的影响,这里将得到的脉冲信号经 555 定时器构成的施密特触发器输出。施密特触发器,具有回差电压特性,能将边沿变化缓慢的电压波形整形
48、为边沿陡峭的矩形脉冲。1265vccrdo5553ov7vvi2i1vic8412ivccvvcc2rttviov123ccvcc1v3(a)电路图(b)波形图v图 2-6 555 定时器构成的施密特触发器(1)vi =0v 时,vo1输出高电平。(2)当 vi上升到时,vo1输出低电平。当 vi由继续上升,vo1保持ccv32ccv32不变。(3)当 vi下降到时,电路输出跳变为高电平。而且在 vi继续下降到 0vccv31时,电路的这种状态保持不变。图 2-6 中,r、vcc2构成另一输出端 vo2,其高电平可以通过改变 vcc2进行调节12。 正是由于施密特触发器具有回差电压特性,可以有
49、效的避免因电磁环境引起的小幅度电压突变造的脉冲信号的变化。此外,当施密特触发器输入端为低电平时,输出端为高电平;当施密特触发器输入端为高电平时,输出端为低电平,这样当输出占空比较大的脉冲信号时就能有效的减少单片机的能耗,延长单片机的使用寿命。如果要频繁的输出小占空比的脉冲信号,可以通过改变输出端口的预置值来实现。这也正体现出了本课题设计良好的经济性和可拓展性。2.3 系统电路原理图以 at89c51 单片机为核心,以矩阵键盘作为输入设备,以液晶显示屏smc1602 为显示设备。通过 4*4 矩阵非编码键盘将脉冲信号参数频率、个数、占空比送入 at89c51 单片机,单片机调用数值处理子程序进行
50、数据处理,再调用液晶屏驱动子程序驱动液晶屏在制定的位置显示脉冲信号相关的参数;根据不同的控制策略,生成不同指标要求的脉冲信号并通过端口 p3.0 端口送出单片机,将脉冲信号经 555 定时器构成的施密特触发器输出。系统电路原理图如图 2-7 所示:图 2-7 系统电路原理图第 3 章 可编程脉冲信号发生器的软件设计3.1 矩阵键盘的程序设计通常键盘有编码和非编码两种,本次课题设计使用的是非编码键盘。键盘上的按键一般排成行、列矩阵格式,每个交叉点上可接一个按键。按键的作用只是使相应接点接通或断开,在相应程序配合下可产生被按按键的键码。采用非编码式键盘,cpu 必须对所有按键进行监视,一旦发现有键
51、下,cpu 应通过程序加以识别,并转入相应的处理程序,录入相应的字符,字符对应关系如表 3-1 所示:表 3-1 字符对应关系表0 x0e(1 列)0 x0d(2 列)0 x0b(3 列)0 x07(4 列)0 xe0(1 行)147#0 xd0(2 行)258*0 xb0(3 行)369k0 x70(4 行)0.%判断按键是否按下cpu 监视键盘中按键是否按下的原理很简单。cpu 只要读取 p1 口的值就可以判断按键是否按下。如果没有按键按下,则返回值必为 ff;若有键按下,则值必因被按按键的接通而不等于 ff。按键去抖和窜键处理在按下某个按键时,被按下按键的簧片会有轻微的抖动,这种抖动通常
52、会持续 10ms 左右的时间。因此,cpu 在按键抖动期间扫描键盘必然会得到错误的键值,最好的办法是使 cpu 在检测到有键按下时延时 20ms 再进行扫描。用户在操作时常常因不小心同时按下了一个以上的按键,即发生了窜键。cpu 处理窜键的原则是把最后放开的按键认为真正被按的按键。cpu 在处理发生在两个不同行上的窜键时,可进行一个短延时,cpu 再扫描一次 p1 口,若俩次得到数值相同则说明确实有键按下,否则说明是窜键,cpu 也就不调用相应的程序对其进行相应的处理4。3.2 液晶屏显示的程序设计硬件电路图中,在液晶屏 smc1602 在指定位置进行脉冲信号指标关键字频率、占空比和个数的显示
53、。脉冲信号指标关键字频率、占空比和个数通过矩阵键盘送到单片机后,单片机调用数值处理子函数进行相关运算,进而调用液晶屏显示驱动子程序,计算预显示的位置并在对应位置显示。smc 1602 液晶模块内部的字符发生存储器( cgrom)已经存储了 160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每个字符都有 其固定的代码,比如的 阿拉伯数字“0”的代码是 00110000b(30h),显示时模块把地址 30h 中的点阵字符图形显示出来,我们就可以看到阿拉伯数字“0”。因为 1602 能够识别的是 ascii 码,试验可以通过 ascii 码直接赋值,在
54、单片机编程中还可以用字符型常量或变量赋值,如0。与 hd44780 相兼容,芯片时序表如下:表 3-3 操作时序表读状态输入rs=l,r/w=h,e=h输出d0d7=状态字写指令输入rs=l,r/w=l,d0d7=指令码,e=高脉冲输出无读数据输入rs=h,r/w=h,e=h输出d0d7=数据写数据输入rs=h,r/w=l,d0d7=数据,e=高脉冲输出无 1602 液晶模块控制指令见附录。读写操作时序如图 3-1 及 3-2 所示:图 3-1 读操作时序图图 3-2 写操作时序图液晶显示模块是一个慢显示器件,在执行每条指令以前一定要确定模块忙标志是否为低电平。当模块的忙标志位为低电平时,表示
55、不忙;否则,此条指令失效。需要显示字符时,要先输入要显示字符的地址,也就是告诉模块要在哪个位置显示字符。图 3-3 是 1602 的内部显示地址图。图 3-3 lcd1602 内部显示地址图 1602 指令集1602 通过 d0-d7 的 8 位数据端传输数据和指令。数据指针设置:数据首地址为 80h,所以数据地址为 80h+地址码(0-27h,40-67h)其他设置:01h(显示清屏,数据指针=0,所有显示=0);02h(显示回车,数据指针=0)。通常推荐的初始化过程:延时 15ms写指令 38h延时 5ms写指令 38h延时 5ms写指令 38h延时 5ms (以上都不检测忙信号) (以下
56、都要检测忙信号)写指令 38h写指令 08h 关闭显示 写指令 01h 显示清屏写指令 06h 光标移动设置写指令 0ch 显示开关及光标设置完毕例如第二行首字符的地址是 40h,那么是否直接写入 40h 就可以把光标定位在第二行首字符的位置呢?这样是不行的,因为写入显示地址时要求最高位 d7一直保持高电平1,因此实际写入的数据应该是 01000000b(40h)+10000000b(80h)=11000000b(c0h)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时,光标是自动向右移动的,不需要人工干预。每次输入指令以前都要判断液晶模块是否处于忙的状态。3.3 脉冲生成的程
57、序设计脉冲信号在单片机的 p3.0 引脚输出。具体来说,脉冲信号的频率、占空比、脉冲个数参数可以通过键盘输入,单片机调用数值处理子函数进行相关运算,计算出定时器的预置值并启动定时器,定时时间到了后,进入定时中断。在定时中断中先停止记时,接着取反 p3.0 然后重装定时初值,并开启定时,为下一次时作好准备,接着返回定时中断并等待下一个定时中断申请的提出。这样周而复始地取反 p3.0 就可以在 p3.0 引脚上得到脉冲信号了。我们发现,只要改变定时初值,就可以改变产生脉冲的频率;只要改变取反 p3.0 口的次数,就可以得到一定数目的脉冲输出;只要改变 p3.0 取反的时间间隔,就可以得到不同占空比
58、的脉冲信号。3.3 程序流程图3.3.1 主程序流程图 n y n y 图 3-4 主程序流程图lcd 初始化 显示脉冲信号关键字键入脉冲信号指标,赋给相关参数在液晶屏上指定位置显示参数数值处理脉冲信号输出开始脉冲个数到?检测到重置信号?号?3.3.2 键盘分析子程序流程图 y图 3-5 键盘分析子程序流程图p1 口赋值 0 x0f是否有键按下?有键按下延时 20msp1 口与 0 x0f 相与,求得按键列码p1 口赋值 0 xf0扫描 p1 口p1 口与 0 xf0 相与,求得按键行码查询按键与字符对应表查的字符赋给变量 key返 回3.3.3 显示子程序流程图 n y图 3-6 显示子程序
59、流程图送预显示地址码和预显示参数地址合成预显示地址smc1602 en 端口清零smc1602 rs 端口置一 smc1602 r/ 端口清零w把要显示的参数送到缓存区smc1602 en 端口置一smc1602 en 端口清零预显示参数地址加 1参数显示完毕返回参数是否等于 03.3.3 数值处理子程序流程图 y n y n图 3-7 数值处理子程序流程图送参数地址&pl0及参数位数 n 到缓冲区pl0是否等于0参数是否处理完毕进行整数处理结果赋给 pl_value参数地址 i 加 1pli是否等于k【】参数 pl_value 扩大 1000 倍返回参数 pl_value返回pl0是
60、否等于0进行小数处理结果赋给 pl_value3.3.3 脉冲信号生成子程序流程图 n y n y ny 图 3-8 脉冲信号生成子程序流程图3.3.源程序见附录。进行指标参数处理脉冲个数初始化t0,t1 初始化,开启中断且中允许时间到没?开启 tr0进入中断处理,p3.0 取反,关闭 tr0开启 tr1时间到没?进入中断处理,p3.0 取反,关闭 tr1脉冲个数到没?返回第 4 章 可编程脉冲信号发生器的程序编译、调试及仿真4.1 系统程序的编译51 单片机的开发除了需要硬件的支持外,同样离不开软件。cpu 真正执行的是机器码,必须把用汇编语言或者 c 语言等高级语言编写的源程序转换成机器码后,才能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧餐厅推广方案
- 智慧养老系统解决方案
- 2023年电子银浆资金筹措计划书
- 卡通袜子课件教学课件
- 武术课件制作教学课件
- 印染剪纸课件教学课件
- 诚子书课件教学课件
- 4.1 原电池 第2课时 课件高二上学期化学人教版(2019)选择性必修1
- 酒店用品解决方案
- 不负人民课件教学课件
- 2024-2030年中国特色茶具行业市场销售策略及未来发展趋势分析报告
- 人力资源管理师(三级)课件合集
- 2024贵州省榕江县事业单位招聘100人历年高频难、易错点500题模拟试题附带答案详解
- 绵阳市高中2022级(2025届)高三第一次诊断性考试(一诊)物理试卷
- 标志设计 课件 2024-2025学年人教版(2024)初中美术七年级上册
- 校园班级大队委竞选内容课件演示
- 2024版合同范本之711便利店加盟合同
- 医疗机构工作人员廉洁从业九项准则
- 1《观潮》(课件)语文四年级上册统编版
- 部编版小学二年级道德与法治上册 第四单元 我们生活的地方 学历案设计
- 人教版九年级化学电子版教材(全册)-课件资料
评论
0/150
提交评论