77范文网 - 专业文章范例文档资料分享平台

基于单片机的数字电压表设计(2)

来源:网络收集 时间:2019-04-09 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

sbit EOC=P3^7; //转换结束信号

sbit DISX=disdata^7;//小数点位

sbit FLAG=PSW^0; //循环或单路显示标志位 Uchar code

dis_7[11]={0x3F,0x06,0x5B,0X4F,0x66,0x6D,0x7D,0x07,0x7E,0x6F,0x00};

//数码管的字段码

uchar code scan_con[4]={0xF1,0xF2,0xF4,0xF8};//4个LED数码管的位选 Uchar data ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //0809的8个通道转换数据缓冲区

uchar data dis[5]={0x00,0x00,0x00,0x00,0x00};//显示缓冲区 /*主函数*/ main() {

P0=0xff; //初始化端口 P2=0x00; P1=0xff; P3=0xff; while(1)

{test(); //测量转换数据

scan();//显示数据

} } /*1秒延时*/ delay1ms(uint t) {uint i,j; for (i=0;i

/*检测按键子程序*/ keytest() {

if (KEY1==0) //检测循环或单路选择按键是否按下 {FLAG=!FLAG; //标志位取反,循环,单路显示却换 while(KEY1==0); }

if(FLAG==1) //单路循环时,检测通道选择按键是否按下

word文档 可自由编辑

{if(KEY2==0) {number++; if(number==8) {number=0; } while(KEY2==0); } } }

/*显示扫描子程序*/ scan() {

uchar k,n; int h;

if(FLAG==0) //循环显示子程序 {

dis[3]=0x00; //通道值清零 for(n=0;n<8;n++) //循环8次 {

dis[2]=ad_data[n]/51; //转换为BCD码 dis[4]=ad_data[n]Q; dis[4]=dis[4]*10; dis[1]=dis[4]/51; dis[4]=dis[4]Q; dis[4]=dis[4]*10; dis[0]=dis[4]/51;

for(h=0;h<500;h++) //每个通道显示时间控制为1s {

for(k=0;k<4;k++) //4位LED循环显示

{

disdata=dis_7[dis[k]]; if(k==2) {DISX=0;} P3=scan_con[k]; delay1ms(1); P3=0xff; }

word文档 可自由编辑

}

dis[3]++; //通道值加1 keytest(); //检测按键 } }

if(FLAG==1) //单路显示子程序 {

dis[3]=number;

for(k=0;k<4;k++)//4位LED扫描显示 {

disdata=dis_7[dis[k]]; if(k==2) {DISX=0;} P3=scan_con[k];

delay1ms(1);P3=0xff;

}

keytest(); //检测按键 } }

/*转换子函数*/ test() { uchar m;

uchar s=0x00; //初始通道位0 ad_con=s;//第一通道地址送0809控制口 for(m=0;m<8;m++) {

ALE=1;_nop_();_nop_();ALE=0;//锁存通道地址 START=1;_nop_();_nop_();START=0;//启动转换 _nop_();_nop_();_nop_();_nop_(); while(EOC==0);//等待转换结束

OE=1;ad_data[m]=addata;OE=0;//读取当前通道转换数据 s++;ad_con=s;//改变通道地址 }

ad_con=0x00;//通道地址恢复初值 }

word文档 可自由编辑

7 单片机概述

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有 8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32位I/O 口线,2个数据指针,三个16位定时器/计数器,5个中断优先级2层中断嵌套中断,全双工串行口, 片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件,可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 7.1 单片机引脚结构及说明

如图1-5所示

图1-5

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校

word文档 可自由编辑

验时,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的一些特殊功能口,如下所示: 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),不管

word文档 可自由编辑

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的数字电压表设计(2)在线全文阅读。

基于单片机的数字电压表设计(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/581277.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: