proteus和keil的仿真实验报告.doc

上传人:wj 文档编号:357483 上传时间:2023-04-29 格式:DOC 页数:5 大小:196KB
下载 相关 举报
proteus和keil的仿真实验报告.doc_第1页
第1页 / 共5页
proteus和keil的仿真实验报告.doc_第2页
第2页 / 共5页
proteus和keil的仿真实验报告.doc_第3页
第3页 / 共5页
proteus和keil的仿真实验报告.doc_第4页
第4页 / 共5页
proteus和keil的仿真实验报告.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

proteus和keil的仿真实验报告.doc

《proteus和keil的仿真实验报告.doc》由会员分享,可在线阅读,更多相关《proteus和keil的仿真实验报告.doc(5页珍藏版)》请在冰点文库上搜索。

proteus和keil的仿真实验报告.doc

北京联合大学

《基于proteus和keil仿真》实验报告

实验题目:

基于ADC0808模数转换器的数字电压表

学院:

信息学院专业:

电子信息工程

班级:

0808030301

组员:

华永奇学号:

2008080303107

组员:

朱圣峰学号:

2008080303137

组员:

陈柏宇学号:

2008080303113

组员:

李冉学号:

2008080303119

组员:

张茜学号:

2008080303104

一、实验任务:

利用单片机AT89C51与A/D转换器件ADC0808设计一个数字电压表,能够测量0~5V之间的直流电压值,并用4位数码管显示该电压值。

设计任务要求:

硬件设计:

利用Proteus软件绘制原理图;

软件设计:

利用Keil软件进行程序设计;

完成软硬件调试:

Proteus和Keil联调,实现选题要求的功能;

二、实验设计:

1、硬件设计:

1.1设计框图:

电压输入

显示

模数转换

1.2proteus原理电路

2、软件设计:

2.1程序源代码:

#include

#defineucharunsignedchar //宏定义

#defineuintunsignedint

//定义管脚

sbitSTART=P3^2;

sbitOE=P3^0;

sbitEOC=P3^1;

sbitP07=P0^7;

sbitCLK=P3^4;

uchardataled[4];

uintdatatvdata; //定义输出电压值变量

ucharcodetv[]={0xf7,0xfb,0xfd,0xfe};//led动态显示控制位选数组

ucharcodea[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,0x7f,0x6f};//led上显示段选数组,0~9,阴极管

voiddelay(void)//延时程序

{

uinti;

for(i=0;i<100;i++)

for(i=0;i<100;i++); //对于12mhz单片机,10ms延时

}

voidled_display(void)//数码管显示模块

{

uchark,temp;

led[0]=tvdata%10; //个位

led[1]=tvdata/10%10; //十位

led[2]=tvdata/100%10; //百位

led[3]=tvdata/1000; //千位

for(k=0;k<4;k++) //利用for循环进行动态显示

{

P2=tv[k];//位选信号赋值给P2口

temp=led[k];//段选信号赋值给临时变量temp

P0=a[temp]; //temp赋值给P0口

if(k==3) //点亮第四个数码管的小数点

{

P07=1;//高位点亮

}

delay(); //延时

}

}

voidmain(void) //主控制模块

{

ET0=1;//允许定时器中断

EA=1; //开启中断总开关

TMOD=0x02;//设置定时工作状态,定时器0工作在方式2

TH0=216; //在寄存器中装入初始值,

TL0=216;

TR0=1;//启动定时器0

while

(1)

{

START=1; //启动转换

START=0;

while(EOC==0);//等待模数转换结束

OE=1;//输入高电平,打开输出三态门,输出数字量

tvdata=P1; //读取P1口的值给输出电压值变量

tvdata*=5000/255.000;//因为输出值在0~255之间,所以应该放大到0~5000

OE=0;//关闭三态门,禁止输出

led_display();//LED上显示测得电压值

delay(); //延时

}

}

voidt0(void)interrupt1using0//定时中断函数,使用寄存器组0,产生adc0808的驱动时钟脉冲

{

CLK=~CLK; //clk电平取反

}

三、联调结果

5

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2