基于单片机的温度数据采集系统实验报告(4)

2019-02-15 12:22

for(i=0;i<8;i++) //第二次从低到高读数,下降沿有效 { if(d0==1&&di==1) data2|=0x01<

if(data1==data2) return(data1);

}

5.键盘电路设计

6个按键,P2.2-P2.7接6个按键,P3.4接公共端,采用 动态扫描方式检测键盘。

6.

uint keyscan()

{

uchar temp; P33=0;

temp=P2&0xf0; if(temp!=0xf0) {

Delayms(10); temp=P2&0xf0; if(temp!=0xf0) {

switch(temp) {

case 0x70:return 1;break; case 0xb0:return 2;break; case 0xd0:return 3;break; case 0xe0:return 4;break; } }

} }

显示模块采用6个共阳极数码管,采用动态扫描的方式进行示。电路图如下:

delay1(200); //Delayms(1);

{

P26=1;

P27=1;

delay1(200);

//Delayms(1);

void Display(void)//显示温度的函数

P25=0; //选中第一个位选

图6:显示模块

P26=0; //选中第一个位选

P27=0; //选中第一个位选

P0 =LED[ucADC/2/100]; ; //显示

P0 = LED[ucADC/20/10];//显示

}

P0 = (LED[ucADC/2]-0x80); //显示 //Delayms(1); delay1(200); P25=1;

P24=0; //选中第一个位选 P0 = LED[ucADC/2*10]; //显示 //Delayms(1); delay1(200); P24=1;

void display2(uchar a,uchar b)//显示通道的函数 { P23=0; P0=LED[a]; //Delayms(5); delay1(200); P23=1; P22=0; P0=LED[b]; //Delayms(5); delay1(200); P22=1; }

6.软件设计 其他应用到的程序:

void main( void) {

uint num; write=0;

flag=0; channel=0; init();

ucADC=read_add(2); TMOD=0x01; ET0=1; EA=1;

TH0=(65536-50000)/256; TL0=(65536-50000)%6; TR0=1; while(1) { num=keyscan(); switch(num) { case 1:channel=0; break; case 2:channel=1; break; case 3:flag=1;break; case 4:flag=0;break; } ucADC = GetValue0832(channel); Display();display2(channel,1); if(write==1) { write=0; write_add(2,ucADC); } } }

void t0() interrupt 1//定时器0 {

TH0=(65536-50000)/256; TL0=(65536-50000)%6; tcnt++;

if (tcnt==100) {

tcnt=0; write=1; if(flag==1)

channel=~channel; } }

三.项目心得

系统基本实现了设计要求,通过这次课程设计,使我更加熟练的掌握了AT89C52、AT24C02、ADC0832等芯片的使用,熟悉了领用C51语言编写程序控制单片机。

四.参考文献 1、李全利,单片机原理及接口技术,高等教育出版社,2004 2、于永,51单片机常用模块与综合系统设计实例精讲,电子工业出版社,2007


基于单片机的温度数据采集系统实验报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:俞敏洪演讲录:生活在自在与豁达的心境中

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

马上注册会员

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