【摘 要 】在开发单片机系统时,常需要对系统进行调试,本文主要介绍了一种基于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四个按键进行测试,本文所使用软件开发环境为R STUDIO+WINR.
首先我们需要编写显示相应字符的字符码和显示子程序:
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<8,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.结束语
本文的所制作的测试电路主要是在开发直线加速器治疗床电机控制系统时辅助系统的研发,方便在研发过程中对系统进行测试,加快了系统的开发.该测试电路可以通过修改控制器单片机上的测试程序从而应用在教学领域,方便初学者快速的熟悉单片机的软硬件环境,开发简单的单片机程序.