重庆科技学院单片机实验课程指导new(7)

2018-12-06 21:06

#define THCO 0xee #define TLCO 0x0 unsigned

char

code

Duan[]={0x3F,

0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //共阴极数码管,0-9段码表

unsigned char Data_Buffer[4]={1,2,3,4}; //四个数码管显示数值,数组变量定义

sbit P24=P2^4; //四个数码管的位码口定义 sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7; //sbit P34=P3^4; void main() {

TMOD=0x20; SCON=0x50;

TH1=0xfd; //设置波特率为9600 TL1=0xfd;

TR1=1; //开定时器1 ES=1;

TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

while(1); }

void timer0() interrupt 1 {

static unsigned char Bit=0; //静态变量,退出程序后,值保留 TH0=THCO; TL0=TLCO;

31/39

//方式控制字

Bit++;

//先关位码

if(Bit>=4)Bit=0; P2|=0xf0;

P0=Duan[Data_Buffer[Bit]]; //开段码 switch(Bit) {

case 0: P24=0;break; case 1: P25=0;break; case 2: P26=0;break; case 3: P27=0;break; }

}

void seri()interrupt 4 {

unsigned char temp; if(RI==1) {

temp=SBUF; RI=0;

if(temp>=0&&temp<=9)//接收到的数据为0-9时显示到数码管上 { TI=0; SBUF=temp; while(TI==0); TI=0; } }

32/39

//送位码

}

Data_Buffer[0]=temp; Data_Buffer[1]=temp; Data_Buffer[2]=temp; Data_Buffer[3]=temp; //P34=!P34;

7.思考题

利用单片机的串行口向PC机发送数据0x55,运行结果可以通过在PC的接收软件上看见,验证接收数据是否正确。

实验七 AD转换器实验

一、实验目的

学会用51单片机模拟I2C总线接口,实现与PCF8591 8位AD转换器的接口,学会用单片机实现数据采集的方法。 二、实验设备及器件

PC机 一台

51单片机实验板一台(含PCF8951芯片) 万用表、示波器 三、实验内容

编写一段程序,采集PCF8591 AD通道的模拟信号值,将采集的电压值用四位数码管显示出来。

四、实验电路原理图

AIN0-AIN3为4路模拟输入信号,时钟信号SCL接至单片机P36,数据线SDA接至P37。 五、参考例程

#include \#include #define uchar unsigned char #define uint unsigned int

#define PCF8591 0x90 //PCF8591 地址 #define THCO 0xf8 //11.0592MHZ晶振 #define TLCO 0xcb //定时2ms时间常数值 unsigned char Data_Buffer[4]={1,2,3,4};

33/39

uchar code

Duan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};

sbit P24=P2^4; sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7; bit flag=0;

bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val); bit ISendByte(unsigned char sla,unsigned char c); unsigned char IRcvByte(unsigned char sla); /******************************/ void main(void) //主程序 {

unsigned int v;

unsigned char AD_CHANNEL=1; unsigned int D[5]={0,0,0,0,255};

TMOD=0x11; TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

//四个数码管的位码口定义

//设置定时器0工作模式,16位计数模式

//启动定时器

//使能定时器中断 //开总中断

while(1) {

if(flag==1) {flag=0;

ISendByte(PCF8591,0x41);

v=IRcvByte(PCF8591);

Data_Buffer[0]=0; Data_Buffer[1]=v/100;

34/39

Data_Buffer[2]=v/10;

Data_Buffer[3]=v; }

} }

void timer0() interrupt 1 //定时器中断服务子程序 {

static unsigned int count=0;//软计时变量定义

static unsigned char Bit=0; //静态变量,退出程序后,值保留

TH0=THCO; TL0=TLCO; Bit++; if(Bit>=4)Bit=0; P2|=0xf0;

//先关位码 //开段码

P0=Duan[Data_Buffer[Bit]]; if(Bit==0)P0|=0x80; switch(Bit) {

case 0: P24=0;break; case 1: P25=0;break; case 2: P26=0;break; case 3: P27=0;break; }

count++; if(count>=250) {

count=0; flag=1; } }

//送位码

//半S时间到

六、思考题

35/39


重庆科技学院单片机实验课程指导new(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:政治选举及美国选举常用词汇

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

马上注册会员

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