89C51单片机引脚图如图2.7所示
图2.7 89C51单片机 VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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的一些特殊功能口,如下表所示:
8
P3 口管脚 备选功能 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端保持高电平时,状态,蜂鸣器停止发音。.其接口电路程序如下:
SND: SETB P1.0 MOV R7,#1EH
DL: MOV R6,#0F9H DL1: DJNZ R6,DL1 DJNZ R7,DL CLR P1.0
9
RET
10
第1章 智能IC卡燃气表的软件设计
3.1 主程序
主程序的功能是首先对所有芯片复位,初始化后,经外围设备,通过A/D转换器,将信号转换后进行读取,当IC卡中的金额不足或没有时,将显示出来并报警响铃,同时关闭电磁阀,续费后,电磁阀开启,功能正常。主程序框图如.图3.1所示。
开始初始化单片机及外围设备设置A/D通道读数据数据存储查询历史数据N是否金额已无?Y关闭电阀启动报警金额过低Y声音报警NLED显示
返回
图3.1 主程序框图
11
3.2 显示子程序
电路中设计了4位LED显示器,其功能为:左首位为百位数或标志位,左二位为十位数,左三位为个位数,左四位为小数点后的十分位数,如图3.2所示的显示子程序框图
灭LED取百位数查表取段选码送百位数N 输出完否Y 取送十位循环取送个位循环点亮LEDY 返回 图3.2 显示子程序框图
3.3 IC卡读写程序
IC卡检测流程采用了智能化的设计,首先检测是否有IC卡插入,在检测有正确IC卡存在的前提下,对IC卡密码进行核对,读取IC卡存储内容后,进行相应的处理,程序框图如图3.3所示。
12