压力传感器称重系统(9)

2019-08-31 15:49

五邑大学本科毕业设计

在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:P1:是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flash编程和程序校验期间,P1接收低8位地址。

P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @ DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @ RI)时,P2口线上的内容(也即特殊功能寄存器区中P2寄存器的内容),在整个访问期间不变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令,ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。

EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程电压Vpp。

XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。

37

五邑大学本科毕业设计

附录2 Protel原理图和Professional仿真图 Protel原理图:

123P23VCC1211

4P22Q110P21Q2Q6987D300kRb4kRcC2INT0VCCC11AP0404135吴明卫 20ufL*LEDDISD1D2D3FBDADPNPN300gRsvcc20ufRL4kvcc1234542Q5Q4Q3Q76D4DGCEP20压力传感器3U?U1C22VCC1918P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P1.0/T2P1.1/T2EXP1.2/ECIP1.3/CEX0P1.4/CEX1P1.5/CEX2P1.6/CEX3P1.7/CEX4P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15204039P1038P1137P1236P1335P1434P1533P1632P17123456782122232425262728P20P21P22P23Header 9111P102P113P124P135P146P157P168P179OCC1D2D3D4D5D6D7D8D74HC5731Q2Q3Q4Q5Q6Q7Q8Q1918171615141312Q1Q2Q3Q4Q5Q6Q7Q8CCCap100pFC3Cap100pFY1XTAL1XTAL1XTAL2JP49312930ADC0809INT02627B2812345IN-0IN-1IN-2IN-3IN-4EOCIN-5IN-6IN-7ALE1612GND11RSTEA/VPPPSENALE/PROGmsb2-12-22-32-42-52-62-7D0lsb2-821201918815141771011121314151617P3.0/RxDP3.1/TxDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDVCC123456789P10P11P12P13P14P15P16P17B2025P0.124P0.223P0.3229610VSSAT89C51X?111347813141718OELED0D1D2D3D4D5D6D7VCCADD-AADD-BADD-Cref(-)ref(+)ENABLESTARTCLOCKP2.05VGNDA13P2.0Q0Q1Q2Q3Q4Q5Q6Q7256912151619TitleANumberRevisionSizeA4Date:File:3SN74HC373DBLE (20)101-May-2008 D:\\桌面\\ap0404135.DdbSheet of Drawn By:412

38

五邑大学本科毕业设计

ISIS Professional仿真图

39

五邑大学本科毕业设计

附录3 程序

51单片机主程序:

include \调用函数 #define addo (5.0/255.0) //宏定义 #define zero 0.005

//用于校准AD的误差

void main() //主函数 {

uint cnt=0; //定义变量 while(1) //循环函数 {

switch(cnt++) //调用函数 {

case 0: decodenum(ad_action(0)*addo+zero,0);break;数

case 4: cnt=0;break; //返还

disp(); // led显示 } }

ADC0809的模数转换程序:

#include //调用函数库 #include //头文件 #include \头文件 #define uchar unsigned char //宏定义命令 #define uint unsigned int //宏定义 #define adin XBYTE[0x7fff]

void delayus(uint us) //延迟函数 {

while(us--); //循环开始 }

40

执行上面的函 //五邑大学本科毕业设计

uchar ad_action(uchar chn) //得到ADC转换数据 {

uchar read_data; //存放数据 adin=chn; /定义地址 delayus(6); //给充足的时间 read_data=adin; //读到数据 return read_data; //返还 }

LED数码管显示程序:

#include \调用ADC0809函数 #define LED_Data P0 //P2 //宏定义 #define A 10 //宏定义 #define U 11 //宏定义 sbit LED1=P2^3; //管脚定义 sbit LED2=P2^2; sbit LED3=P2^1;

sbit LED4=P2^0;//ED1=P3^0;LED2=P3^1;LED3=P3^2; LED4=P3^3; sbit dp=P0^7; #define LED_slect P2

static uchar dispdata[4]; //定义数值 void decodenum(float adv,uchar chn) //解码开始 {

uint temp; //定义 temp=(uint)(adv*100); //放大100 dispdata[0]=temp/100; dispdata[1]=temp/10; dispdata[2]=temp; dispdata[3]=chn; }

void select(uchar LED) //数码管通道选择 {

41


压力传感器称重系统(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:狄金森

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: