第四章 硬件电路设计
p2.3p2.2R165.1KS16VCC+5S1S2S3S4S5S6S7S8S9S10S12S11U5S13S15S14U61234567AVccBQHQAQGQBQEQCQFQDCLRGNDCLK74LS1641413121110981234567AVccBQHQAQGQBQEQCQFQDCLRGNDCLK74LS164141312111098p2.4GND
图4-8 8051与键盘接口电路
图中,P2.2为行线,接有上拉电阻 R=5V/1 mA=5kΩ。 因而选用5.1KΩ的电阻,上拉电阻保证了没有键输入时,I/O口线上有确定的高电平输入。由P2.3端输出列扫描信号,通过移位寄存器74LS164输出端QA~QH接至键盘作为键盘列线。扫描信号通过74LS164移位,实现逐列置低电平,达到扫描各键的目的。
4.7 显示电路
应用系统中常用的显示器有:发光二极管显示器,简称LED;液晶显示器,简称LCD;荧光显示器。前面两种显示器使用最多,下面就这两种显示器的基木原理和使用方法做简要说明。
? LED显示器
LED显示块由发光二极管显示字段组成,有7段和“米”字段之分,显示块有共阳极和共阴极两种。把每个显示字段对应于一个二进制位,这些二进制位组成字型编码,这样不同的显示字符就对应于不同的字型码,显示字符时,在显示I/O驱动线输出相应的字型码,就可以显示不同的字符。N位LED显示器需要N片LED显示块拼接。
LED显示方式分静态显示和动态显示。静态显示时显示器中的各位相互独
- 31 -
第四章 硬件电路设计
立,而且各位显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。这种显示方式接口编程容易,管理简单,但占用口线资源较多。在显示位较多时,一般都采用动态显示方式。LED动态显示时,为了简化硬件电路,通常将所有的段选线并联在一起,由一个(C7段LED)或两个(“米”字段LED)8 位I/O控制,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的I/O口线控制,实现各位的分时选通。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一时刻只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的字形码,这样同一时刻只有一位显示出字符。在下一时刻,只让下一位的位选线处于选通状态,同时,在段选线上输出相应位将要显示字符的字符码。由于人眼的视觉暂留,只要每位显示间隔足够短,如此循坏就可以使各位显示出将要显示的字符,达到显示目的。
上面所述是LED显示的基本原理,根据这些基本原理,选择不同的软硬件方法都可以实现LED显示。
? 液晶显示器LCD
LCD是一种极低功耗显示器,目前,高分辨率的LCD点阵式显示器有显示灵活,显示图型字符美观等优点,在很多系统中应用非常广泛。
显示设计使用现有的液晶显示功能模块SMG12232B-2,该模块能提供122*22的分辨率,带中文字库,更重要的是它可以有并行和串行两种输入方式,接口方便,这样我们可以使用单片机的异步通讯口驱动显示模块,软硬件实现都非常简单,外围电路非常简洁。
图4-9是单片机与显示器的接口电路。
- 32 -
第四章 硬件电路设计
VCCR17R18R19R20R21R22R23R2410K10K10K10K10K10K10K10KU11234567891011121314151617181920P10/T2P11/T2EXP12P13P14P15P16P17RST/VPDRXDTXDINT0INT1T0T1WRRDX2X1Vss8051VCCP00P01P02P03P04P05P06P07EA/VPPALE/PROGPSENP27P26P25P24P23P22P21P2040393837363534333231302928272625242322212109876543151416U7VCCDB0DB1DB2DB3DB4DB5DB6DB7CS2CS1A0WRRDRSTGND1213111SMG12232B-2GND
图4-9 显示器与单片机接口电路
- 33 -
第五章 系统软件设计
第五章 系统软件设计
本章主要介绍接触式IC卡读写器的程序设计。本设计的所有程序用C51语言编写,由主程序和子程序组成。其中子程序包括比较校验数据子程序、插卡子程序、显示中断子程序。
5.1 主程序
主程序主要完成初始化并检测系统的状态,如果是刚上电状态,则恢复掉电瞬间保存的数据。主程序的流程图如图5-1所示。
主程序如下:
#include< at8051.h> //头文件 #define uint unsigned int #define uchar unsigned char #define addrl 0x40
uint data consl; //全局变量定义 uchar data cons2[2]={0,0}; main ( )
{ uchar data *p; //指针定义
if(consl==0) //判断是否刚上电状态
{ p=cons2;
Read24c02(p,addrl,2); //从24c02中读出掉电时保存的数据 consl=OxOOOF; //修改标志位 }
ITO=1; //外部中断0下降沿触发 EXO=1; //外部中断0开中断 EA=1; //CPU开中断 IDL=1; //设置节电工作方式 do{ }while(1);
- 34 -
第五章 系统软件设计
}
图5-1主程序流程图
5.2 插卡子程序
当系统检测到有卡插入时,这时进入插卡子程序。在单片机的控制下给IC 卡供电,并且指示灯亮。然后判断插入的卡是否短路,如果短路则给IC卡下电。单片机从卡中读出卡标识,判断是用户卡是否合法,并调跳到相应的子程序。插卡子程序流程图如图5-2所示。
- 35 -