标题:
单片机ADC0804+串口仿真与程序(老郭书上例6.6.1)
[打印本页]
作者:
我心II永恒
时间:
2017-12-7 15:59
标题:
单片机ADC0804+串口仿真与程序(老郭书上例6.6.1)
参考郭天祥C51单片机教程!
如果感兴趣,请参考!
1、仿真时需要使用串口调试助手(网上随便下一个)
2、需要一个虚拟串口Configure Virtual Serial Port Driver软件
3、仿真时单片机晶振频率一定设置为11.0592MHZ
4、COMPIM(9针串口)器件的波特率以及串口号需要设定好
5、仿真串口时MAX232就不需要了
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
2.JPG
(175.19 KB, 下载次数: 67)
下载附件
2017-12-7 15:50 上传
1.JPG
(186.61 KB, 下载次数: 79)
下载附件
2017-12-7 15:49 上传
单片机+ADC0804源程序如下:
#include<reg52.h>
#include"stdio.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 flag_uart,flag_time,flag_on,t0_num,a,ad_val,flag;
float ad_vo;
sbit adwr=P3^6;
sbit adrd=P3^7;
sbit csad=P3^0;
u8 code distab[]={
0xc0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,
0x8E,0xFF,0x0C,0x89,0x7F,0xBF};
void delayms(u8 xms)
{
u16 i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0X21;
SCON=0x50; //串口模式1,允许接收
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=0xfd; //波特率 9600
TL1=0xfd;
PCON=0x00; //波特率不倍增
EA=1; //开总中断
ES=1; //开串口中断
ET0=1; //开定时器中断
TR1=1; //启动定时器1
// SM0=1;
// SM1=1;
// REN=1;
}
void display(u8 vaule)
{
u8 bai,shi,ge;
bai=vaule/100;
shi=vaule%100/10;
ge=vaule%10;
P0=distab[bai];
P2=0x01;
delayms(5);
P0=0xff;
P0=distab[shi];
P2=0x02;
delayms(5);
P0=0xff;
P0=distab[ge];
P2=0x04;
delayms(5);
P0=0xff;
}
u8 get_adc()
{
u8 adval;
adwr=1;
_nop_();
adwr=0;
_nop_();
adwr=1;
P1=0xff; //读P1口前其他全给1先
adrd=1; //选通ADSC
_nop_();
adrd=0; //A/D读使能
_nop_();
adval=P1; //AD读数据赋给P1口
adrd=1;
return adval;
}
void main()
{
init();
while(1)
{
if(flag_uart==1)
{
flag_uart=0;
ES=0; //关串口中断
TI=1; //发送中断标志位
switch(flag_on)
{
case 0: puts("Turn on ad!\n");
TR0=1;
break;
case 1: printf("Turn oFF ad!\n");
TR0=0;
break;
case 2: puts("Error!\n");
break;
}
while(!TI);
TI=0;
ES=1;
}
if(flag_time==1)
{
flag_time=0;
ad_val=get_adc();
ad_vo=(float)ad_val*5.0/256.0;
ES=0;
TI=1;
printf("The voltage is %fV\n",ad_vo);
while(!TI);
TI=0;
ES=1;
}
display(ad_val);
}
}
void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
t0_num++;
if(t0_num==20)
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
6.6.1.rar
(67 KB, 下载次数: 123)
2017-12-7 15:57 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
advantech
时间:
2018-1-18 22:21
51黑有你更精彩!!!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1