基于74HC164的单片机测试电路
- 格式:doc
- 大小:14.50 KB
- 文档页数:3
浅谈单片机系统中I/O的扩展--基于74HC164和74HC165在我们的单片机应用系统中,常常会遇到I/O口不够的情况。
譬如说接有外部RAM而且要求有16个以上的按键,8位数码管以上的显示。
而且还不包括其它的外围器件。
这时整个系统的I/O资源就很吃紧了。
系统的扩展性也不好。
这时我们就需要考虑对单片机的I/O进行扩展了。
虽然专门的I/O扩展芯片市场上也有不少,但对于我们一般的应用,没有必要整的那么复杂。
用一些简单的移位寄存器芯片一样可以实现我们的目标。
下面我们首先来认识一下74HC164这款芯片。
这款芯片的作用是把串行输入的数据并行输出。
注意,它没有锁存功能,在允许输出的情况下,每一个时钟的上升沿,数据依次从最低位移向最高位。
因此,在做数码管的输出显示的时候会出现拖影的想象,在设计此电路时要注意考虑此情况。
下面是它的引脚图。
A1,A2是数据输入端,一般情况下两者连在一起,作为串行数据的输入端。
Qa----Qh j就是并行数据的输出端了。
CLOCK 和RESET分别为时钟和复位端下面我们再看看它的真值表,有了真值表我们才知道如何正确的去编写程序去驱动它(其它复杂的器件还需要对照时序图编写相应的驱动程序)呵呵,怎么样,这个表很简单吧,相信大家都能够看的懂。
当Reset为低电平时不管时钟为高电平还是低电平也不管输入引脚A1,A2为何值,输出的并行数据均为低电平。
当Reset 为高电平时,只有在时钟的上升沿,A1A2上的值才被移位输出。
看懂了这张表那么剩下的事情就好办多了。
下面我以级联的8块74HC164驱动8位共阴的数码管为例来阐述它的用途。
当然它的用途并不仅仅在于此。
你可以发挥你的聪明才智去应用它到你的设计中。
以上的连接中Reset脚要全部接高电平。
所有的Clock引脚都要连接在一块。
第一块74HC164的AB引脚接在一块作为串行数据的输入端。
第二块74HC164的AB引脚接在第一块74HC164并行数据输出端的H脚上。
74HC164应用实例:驱动数码管两例(电路图和源程序)————————————————————————————————作者:————————————————————————————————日期:4HC164应用实例:驱动数码管两例(电路图和源程序) 文章编号:100816210758 文章分类: 电路 > 电子元件 点击:... 关键词: 74HC164文章来源:百合电子工作室收集整理 摘要: 74HC164应用实例:驱动数码管的两个实例分别提供了汇编源程序和C 源程序...实例174HC164是串行输入,并行输出接口器件,可用在单向的并行输出/并行地址锁存等. 74HC164因为价格便宜,容易使用特别适合使用在在需要用到数码管显示IO 口又比较紧张的电子产品中,下面浅谈使用方法:1. 首先先了解他的引脚功能和逻辑图,如下图:图1 引脚名称和用途图2 真值表通过真值表我们可以了解到,A,B两个输入端是互锁的,CLK上升沿时数据移入移位寄存器中,CLEAR为清零用的,接低电平时所有端口都输出低电平,了解了真值表之后开始运用了,先给出如下原理图:图3 原理图图中,采用义隆的EM78P153作为控制芯片,P50作为CLK时钟信号,注意平时数据不传输时,时钟信号是不发送的应一直保持低电平或者高电平,数据需要传输的时候才输出时钟信号^_^ ,继续P51作为移位数据输出端,接到74HC164的B端,A端接高电平,当然也可以AB端短路,然后连接到DATA移位数据端,P52作为数码管的选通信号(也可以叫消隐^_^), 作用是使数据传输过程暂时关闭显示,以免显示出不需要的数据,原因是应为164不带锁存功能,数据传输过程是一位一位的向高位移位输出的,所以要等数据全部移入后才打开始点亮数码管.注意了哦,通过查看164的规格书发现,164输出高电平电流比输出低电平电流要小,亦称灌电流大,扇出电流弱,所以适合选用共阳数码管,如图,本人偷懒没有画出那个数码管的8字该介绍的介绍的差不多了,废话少说,该开始干活了,任务是: 显示0-9 每秒+1 ,到9后又返回0,一直循环显示,根据任务得到如下流程图:1. 显示部分:将需要显示的数值送入A ==>查表求得显示段码==>将段码逐位移入164==>8位移完后点亮数码管==>延时==>返回第一步执行2. 中断部分:进入中断==>保存现场(以备调查取证,送你入狱^_^)==>重置TCC==>够1秒钟将需要显示的数据+1,并重置,不够就退出;根据以上要求就开始写代码调试了,要注意一点,数据移位时一定要记得高位在前哦,否则显示错误别怪我没有说清楚,我当年实验时就因为这个数据移位方向反了排查了半天,甚至以为是时钟频率不对,又以为时许不对.....搞了半天,NND后来重看DATASHEET才发现,原来是低级错误啊,呜呼哀哉.......,希望你不要重蹈我覆辙,哎哟!! 谁! 谁! 谁扔砖头上来? 啥? 你扔的? 我废话太多.........,那俺少来两句,继续上菜, 咦好像没啥可说的了,上源程序吧1.;中断部分:2.3.;;;;;;;;;;中断;;;;;;;;4.INTPUT:5.MOV TEMPA, A;6.MOV A,@130;7.MOV TCC,A;255-130=1258.CLR RF;9.;;;;;此处填写250Us处理程序10. BS WKREG,T500US11.;;;;;;;;;;;;;;;;;;;;;;;;;12. DJZ R1MS13.JMP INTEXT;14.MOV A,@415.MOV R1MS,A;重置16. BS WKREG,T1MS17.;;;;;;;此处填写1ms处理程序18.19.;;;;;;;;;;;;;;;;;;;;;;;;;;20. DJZ R20MS21.JMP INTEXT;22.MOV A,@2023.MOV R20MS,A;重置24.;;;此处填写1秒处理程序25. BS WKREG,T20MS26.;;;;;;;;;;;;;;27. DJZ R1S28.JMP INTEXT;29.MOV A,@5030.MOV R1S,A;31.;;;;;;;;;32.INC NUMBER33.MOV A,NUMBER34. SUB A,@1035. JBS SR,236.JMP INTEXT37.MOV A,@038.MOV NUMBER,A39.40.41. INTEXT:42.MOV A,TEMPA;43.RETI;;;;;;;;;;;;;;;;;;;;;44.45.46.47.48.49.;显示部分:50.51.;==============TXDATA==============52.TXDATA:53. BS P5,CC154.MOV A,@855.MOV DATALOP,A;56.TXLOP:57. BC WKREG,T500US58. BS P5,CLK;clk=高59.NOP;60.NOP61. JBS DATA_BUF,762.JMP $+363. BS P5,DATA;64.JMP $+265. BC P5,DATA66.DD1MS: JBS WKREG,T500US67.JMP $-168. BC P5,CLK69. BC WKREG,T500US70. JBS WKREG,T500US71.JMP $-1;72.RLC DATA_BUF73. DJZ DATALOP74.JMP TXLOP75.;;;;;;;;;;76. BC WKREG,T500US77. BS P5,CLK;clk=高78. BC WKREG,T500US79. JBS WKREG,T500US80.JMP $-1;81. BC P5,CLK82.;;;;;;;;83. BC P5,CC184.85.RET;;;;;;;86.87.;数据查表88.;===============DSPTBL============89.DSPTBL: ADD PC,A90. RETL @0B01000000;091. RETL @0B01111001;192. RETL @0B00100100;293. RETL @0B00110000;394. RETL @0B00011001;495. RETL @0B00010010;596. RETL @0B00000010;697. RETL @0B01111000;798. RETL @0B00000000;899. RETL @0B00010000;9100.101.102.;循环体部分;103.104.;;;;;;;;;;主程序;;;;;;;;;;;105.MLOOP:106.MOV A,NUMBER107.CALL DSPTBL108.MOV DATA_BUF,A109.CALL TXDATA110. BC WKREG,T1MS111. JBS WKREG,T1MS112.JMP $-1113.NOP;114.115.JMP MLOOP;;;;;;;;;;;;;;;;;;;;实例2在实际应用中驱动数码管常用的方式分动态扫描和静态驱动。
使用74LS164制作流水灯单片机初学者对于流水灯实验一定特别的熟悉,这个实验逻辑清晰,效果明显,在各类单片机以及微机控制相关材料中都会进行讲解。
当我们学习了一段时间单片机之后,或者在进行单片机系统设计时,会发现51单片机的引脚有时并不是很够用,有时候需要尽量节省单片机I/O引脚。
如何节省I/O引脚是我们在设计单片机系统时,经常需要考虑的一个问题。
下面以8个LED组成的流水灯效果的实现为例,讲解如何节省单片机的I/O引脚。
通常我们会采用如图1所示的电路图,通过单片机直接驱动8个LED,但是这种控制方式消耗了8个单片机引脚。
图1 常规流水灯电路我们也可以使用三八译码器来完成流水灯的效果。
其控制电路图如图2所示(这种控制方式在我之前上传的文档中有详细介绍,感兴趣读者可以查看)。
这种控制方式虽然可以在一定程度上可以节省单片机I/O接口的使用,如下图所示,最少只需要使用3个I/O口。
但是这种方式也存在一定的缺点,这种控制方式只能同时点亮1个LED 灯,如果想实现两个以及以上的LED灯点亮的效果,那么这种电路将无法直接实现效果。
图2 三八译码器拓展I/O口下面我们看一下能够使用其他的芯片,来进一步降低单片机I/O 口的消耗。
使用串行转并行芯片74LS164来制作流水灯效果,其控制原理图如图3所示。
从原理图中可以看出,使用了74LS164芯片控制流水灯之后,只占用了单片机的两个I/O口。
一个用于输出时钟脉冲,另外一个用于输出串行数据。
图3 74LS164控制流水灯原理图与前面采用译码器控制的流水灯相比,使用74LS164控制的流水灯效果具有如下两个显著优点:1.占用单片机I/O口少,最少仅为2个。
2.控制功能强大,74LS164驱动的流水灯点亮的个数没有限制,可以任意数量点亮。
编程思路:单片机以最快的速度通过串口控制8个LED灯的点亮状态,由于此过程极短,人眼无法分辨,通过延时函数稳定输出效果,并延时一定时间,再次以最快的速度通过串口控制8个LED灯的亮灭状态,并执行延时函数实现等待效果,如此反复,就可以实现流水灯的效果,且可以实现任意的流水灯的效果。
基于74HC164扩展单片机系统I_O端口的研究基于 74HC164 扩展单片机系统 I/O 端口的研究在单片机系统的设计与应用中,I/O 端口的数量往往成为限制系统功能扩展的一个关键因素。
当单片机自身的 I/O 端口资源不足时,我们就需要寻找有效的方法来进行扩展。
74HC164 作为一种常见的移位寄存器,为我们提供了一种简单且实用的解决方案。
74HC164 是一款 8 位串行输入、并行输出的移位寄存器。
它具有工作速度快、功耗低等优点,非常适合用于扩展单片机的 I/O 端口。
其基本工作原理是通过串行数据输入引脚(DS)和移位时钟引脚(CP),将输入的数据逐位地移入寄存器中,并在并行输出引脚(Q0 Q7)上同时输出。
在使用 74HC164 扩展单片机 I/O 端口时,我们首先需要了解单片机与 74HC164 之间的连接方式。
通常,将单片机的一个 I/O 引脚连接到74HC164 的 DS 引脚,用于串行数据的输入;另一个 I/O 引脚连接到CP 引脚,用于提供移位时钟信号。
通过控制这两个引脚的状态,我们就可以实现数据的串行输入和移位操作。
例如,假设我们要将一个 8 位的数据 10101100 输出到扩展的 I/O 端口上。
首先,将单片机连接到 74HC164 的相关引脚,并将数据的最低位(即最右边的位)“0”通过 DS 引脚输入到 74HC164 中。
然后,在CP 引脚上产生一个上升沿脉冲,将该位数据移入寄存器。
接着,再将数据的次低位“0”输入到 DS 引脚,并再次在 CP 引脚上产生上升沿脉冲,以此类推,直到将整个 8 位数据都移入寄存器中。
此时,8 位数据就会同时出现在 74HC164 的并行输出引脚 Q0 Q7 上。
通过这种方式,我们可以使用少量的单片机 I/O 引脚来控制多个74HC164 芯片,从而实现大量 I/O 端口的扩展。
但在实际应用中,还需要考虑一些细节问题。
比如,数据的传输速度。
74LS164 串入并出实验在单片机系统中,如果并行口的IO资源不够,而串行口又没有其他的作用,那么我们可以用74LS164来扩展并行IO口,节约单片机资源。
74LS164是一个串行输入并行输出的移位寄存器。
并带有清除端。
其中; Q0—Q7 并行输出端。
A,B串行输入端。
MR 清除端,为0时,输出清零。
CP 时钟输入端。
BNE TRAN_PROC_1TRAN_PROC_END:RET**********************************************74LS165并入串出实验74L165是并行输入,串行输出移位寄存器。
80C51单片机内部的串行口在方式0工作状态下,使用移位寄存器芯片可以扩展一个或多个8位并行I/O口。
其引脚如图所示。
A,B,C,D,E,F,G,H 并行输入端。
QH串行输出端。
CLOCK:时钟输入端。
CLOCK INHIBIT:时钟禁止端。
当时钟禁止端CLK2为低电平时,充许时钟输入。
SHIFT/LOAD:移位与置位控制端。
SER:扩展多个74LS165的首尾连接端。
本练习TXD(P3.1)作为移位脉冲输出端与74LS165的移位脉冲输入端CLOCK相连;RXD (P3.0)作为串行输入端与74LS165的串行输出端QH相连;P3.2用来控制74165的移位与置入。
74LS165电路原理:本练习利用串行口扩展了1片74LS165,从而实现了8个按键的输入,在单片机的P1口连接了8个LED发光二极管,程序中实现了用按键控制发光二极管的亮与灭。
流程为8路开关-74165-3PIN数据线-8路指示灯。
由此可以看出通过165传输,只用了3条数据线,就实现了8个开关控制8个灯的目的。
从而节约了控制的连线。
中北大学课程设计说明书学生姓名:XXXXXX 学号:1005xxxxx学院:信息与通信工程学院专业:电子信息科学与技术题目:74HC164级联实现四位数码管显示电路设计指导教师:程耀瑜职称: 教授李文强职称:讲师2013 年 1 月 17 日中北大学课程设计任务书2012/2013 学年第一学期学院:信息与通信工程学院专业:电子信息科学与技术学生姓名:xxxxxxx 学号:100xxxxxxx 课程设计题目:74HC164级联实现四位数码管显示电路设计起迄日期:1月4日~1月15日课程设计地点:中北大学指导教师:程耀瑜,李文强系主任:程耀瑜下达任务书日期: 2010 年 1 月 3 日课程设计任务书目录一、设计目的 (6)二、设计任务 (6)三、设计条件 (6)四、设计内容和要求 (6)1、74CH164的逻辑功能、逻辑图、引脚说明、波形图 (7)2、七段显示数码管 (9)3、74164QUARTUS 2仿真 (10)4、分步设计 (10)5、电路设计图 (11)6、仿真波形图 (12)六、设计总结 (15)1、设计总结 (15)2、设计中的优点与不足 (15)3、心得体会 (15)六、计参考资料 (16)一、设计目的本课程设计主要针对模拟电子技术和数字电子技术课程要求,培养学生在查阅资料的基础上,进行实用电路设计、计算、仿真、调试等多个环节的综合能力,同时培养学生用课程中所学的理论独立地解决实际问题的能力。
另外还培养学生用专业的、简洁的文字,清晰的图表来表达自己设计思想的能力。
二、设计任务设计一个74HC164级联实现四位数码管显示电路,通过在74HC164上输入时钟信号(CP)和控制信号(D),在数码管上显现出来相应的信号。
三、设计条件本设计是基于在学习过数字电子技术基础和模拟电子技术基础且在完成电子技术实验后设计的,通过在电脑上利用各种软件设计而成,包括Quartus II 5.0,Multisim2001等设计仿真软件。
74ls164与单片机的串并转换(串转并\串进并出)
74LS164串转并实验本实验是用74LS164把输入的串行数转换成并行数输出,74LS164为串行输入并行输出移位寄存器,其引脚图及功能如下:
A、B:串行输入端;
QA~QH:并行输出端;
CLR:清零端,低电平有效;
CLK:时钟脉冲输入端,上升沿有效。
实验采用单片机串行工作方式0和P1端口两种方式串行输出数据。
串行口工作方式0时,数据为8位,从RXD端输出,TXD端输出移位信号,其波特率固定为Fosc/12。
在CPU 将数据写入SBUF寄存器后,立即启动发送。
待8位数据输完后,硬件将状态寄存器的TI位置1,TI必须由软件清零。
串行口工作方式0数据/时钟是自动移位输出,用P1端口输出数据时,要编程位移数据,每输出一个数据位,再输出一个移位脉冲。
内容及步骤:
本实验需要用到单片机最小系统(F1区)、十六位逻辑电平显示(I4区)和74LS164(G3区)。
1、选用89C51单片机最小应用系统模块,用八位数据线连接74LS164的并行输出JD5G 与十六位逻辑电平显示模块JD2I,将74LS164的串行输入端A/B(1和2脚)接到RXD 上,CLK接到TXD上,CLR接INT0。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加TH23_74164.ASM 源程序,进行编译,直到编译无误。
4、全速运行程序,观察发光二极管亮灭情况,先右移动两次,再左移动两次,然后闪烁两次。
74LS164和74LS165工作原理及其在单片机中的应用基于Proteus仿真前言:本文详细介绍了74LS164和74LS165工作原理,并分别举例它们在单片机中的应用,所举例子包含proteus仿真电路图,源程序,程序注释详细清楚。
1、74LS164在单片机中应用举例本例在单片机串行口外接一片8位串入并出移位寄存器74LS164芯片,构成单片机输出接口电路,控制8只LED滚动显示。
(1)74LS164芯片如右图所示,它是8位串入并出移位寄存器,串行输入数据,然后并行输出。
各引脚功能如下:A、B(1、2引脚):数据输入端,数据通过这两个输入端之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
当其中任意一个为低电平,则禁止新数据输入;当其中有一个为高电平,则另一个就允许输入数据。
因此两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
Q0~Q7(3~6,10~13引脚):数据输出端CP(8号引脚):时钟输入端。
CP每次由低变高时,数据右移一位,输入到Q0,Q0 是两个数据输入端的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
MR:复位清除端,当MR为低电平时,其它所有输入端都无效,同时所有输出端均为低电平。
GND(7号引脚,在proteus中已隐藏):接地端VCC(14号引脚,在proteus中已隐藏):电源端,接+5V电源74LS164 内部逻辑图(2)如下图所示,本例单片机串行口工作于方式0,即移位寄存器输入/输出模式。
串行数据通过RXD输出,TXD则用于输出移位时钟脉冲。
数据输入端1接高电平,数据输入端2接单片机RXD引脚。
时钟输入端接TXD引脚,复位端悬空。
数据输出端通过限流电阻接8只LED灯。
C程序如下:#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charvoid delay(uint x){uchar i;while(x--)for(i=0;i<120;i++);}void main(){uchar c=0x80;SCON=0x00; //串行口工作在方式0while(1){c=_crol_(c,1);SBUF=c;while(TI==0); //等待发送结束TI=0; //发送结束,TI置0delay(400);}}Proteus仿真运行结果如下:2、74LS165在单片机中的应用举例本例在单片机串行口外接一片8位并入串出移位寄存器74LS165,连接移位寄存器并行输入端的是8位拨码开关,其开关动作对应的8位二进制序列将通过移位寄存器串行输入到单片机串口,并通过单片机P0端口的8只LED显示出来。
单片机控制的电子密码锁(电路图+流程图+原理图)-课程设计单片机控制的电子密码锁(电路图+流程图+原理图) 摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。
系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。
除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。
本系统成本低廉,功能实用关键词:AT89S51,AT24C02, 电子密码锁,矩阵键盘一、引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。
设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。
考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。
二、方案论证与比较方案一:采用数字电路控制。
其原理方框图如图1-1所示。
图2-1 数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。
用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。
电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。
密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。
方案二:采用一种是用以AT89S51为核心的单片机控制方案。
基于74HC164的单片机测试电路
作者:张俊张耿旭郑杰
来源:《电子世界》2012年第06期
【摘要】在开发单片机系统时,常需要对系统进行调试,本文主要介绍了一种基于
74HC164芯片的调试电路,应用在atmega128单片机系统上,配合调试程序,可以很方便的对单片机系统进行测试,也适合初学者学习单片机。
【关键词】单片机;74HC164;atmega128单片机
1.前言
74HC164是高速硅门CMOS器件,与低功耗肖特基TTL(LSTTL)器件的引脚兼容,是一种8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
本文中使用了74HC164和8位的数码管作为输出部分,输入部分采用了四个键盘设计了该系统。
2.硬件设计
本测试电路以atmega128为核心,原理图如图1所示。
从左到右依次为4个8位数码管,74HC164芯片的8个输出引脚分别对应8位数码管的8位输入引脚,最左边的74HC164芯片的输入引脚DSA、DSB一起接到atmega128的PC0口上,接收单片机发送的数据,最后一位输出引脚接在右边的74HC164芯片上的输入引脚DSA、DSB上,往右的芯片都是同样的接法。
4个寄存器的CLK脚都接在单片机PA0口上,接收单片机发送的时钟信号,上升沿触发[1]。
在程序初始化之后,当需要显示4位数字时,单片机只需要依次的发送相应字符的字符码,就可在数码管上一次显示想要显示的字符。
单片机PC0口每发一个电平,PA0发送一个上升沿,电平信号往右移一位。
3.软件设计
在设计完硬件电路后,可以通过编写测试程序下载到单片机中,使用S1、S2、S3和S4四个按键进行测试,本文所使用软件开发环境为AVR STUDIO+WINAVR。
首先我们需要编写显示相应字符的字符码和显示子程序:
int LED[19][8]=//数码管数字显示表
{{0,0,1,1, 1,1,1,1},// 0
{0,0,0,0, 0,1,1,0},// 1
{0,1,0,1, 1,0,1,1},// 2
{0,1,0,0, 1,1,1,1},// 3
{0,1,1,0, 0,1,1,0},// 4
{0,1,1,0, 1,1,0,1},// 5
{0,1,1,1, 1,1,0,1},// 6
{0,0,0,0, 0,1,1,1},// 7
{0,1,1,1, 1,1,1,1},// 8
{0,1,1,0, 1,1,1,1},// 9
};
void display_led(int mun)
{ int i;
for(i=0;i
{
if(LED[mun][i]==1)
data_h;//PC0口置高电平
else
data_l;//PC0口置低电平
clk_l;//PA0口置低电平
clk_h;//PA0口置高电平,发送上升沿 }
}
然后编写主程序,主程序流程图如图2所示,整个主程序为一循环函数,在循环扫描
S1、S2、S3和S4四个按键。
S1、S2为功能选择键,增加或减少function的值,之后显示在数码管上,使用switch语句建立多分支选择结构,根据function值选择进入相应的分支,每个分支为一循环函数,按下S3键则进入该循环,S4退出循环函数并跳出分支选择结构,继续进入主程序的循环,本例子只列出9个分支,图2为主程序流程图。
4.结束语
本文的所制作的测试电路主要是在开发直线加速器治疗床电机控制系统时辅助系统的研发,方便在研发过程中对系统进行测试,加快了系统的开发。
该测试电路可以通过修改控制器单片机上的测试程序从而应用在教学领域,方便初学者快速的熟悉单片机的软硬件环境,开发简单的单片机程序。
参考文献
[1]耿德根,宋建国,马潮,等.AVR高速嵌入式单片机原理与应用(修订版)[M].北京:清华大学出版社,2005.
[2]全为民.AT89C51自动扫描键盘/显示器的设计及其应用[J].微型机与应用,2001(5):16-17.
作者简介:张俊(1986—),男,广东湛江人,广东工业大学机电工程学院硕士研究生,主要研究方向:嵌入式运动控制。