51单片机开发板实例程序(共11页)_第1页
51单片机开发板实例程序(共11页)_第2页
51单片机开发板实例程序(共11页)_第3页
51单片机开发板实例程序(共11页)_第4页
51单片机开发板实例程序(共11页)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上51单片机实验开发板实验程序1.P1口第一个二极管亮 #includevoid main()P1=0xfd;2. P1口第一个二极管闪烁#include#define unit unsigned int#define uchar unsigned char sbit led1=P10;void delay();void main()while(1)led1=0;delay();led1=1;delay();void delay()unit x,y;for(x=100;x0;x-)for(y=2000;y0;y-); 3.1602液晶显示器移屏显示字符#include#

2、define uchar unsigned char#define uint unsigned intuchar code table=I LIKE MCU!;uchar code table1=WWW.TXMCU.COM;sbit lcden=P34;sbit lcdrs=P35;sbit dula=P26;sbit wela=P27;uchar num;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1;delay

3、(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()dula=0;wela=0;lcden=0;write_com(0x38); /设置16x2显示。5x7点阵,8位数据接口write_com(0x0e); /显示设置光标不显示write_com(0x06); /光标移动,地址指针加一write_com(0x01); /显示清屏/write_com(0x80+0x10);void main()init();write_com(0x80+0x10);

4、/显示第一行的位置for(num=0;num11;num+)/显示第一行,有11个字符write_data(tablenum);delay(20);/write_com(1); /清屏write_com(0x80+0x53); /第二行显示位置for(num=0;num13;num+) /显示第二行 有13个字符write_data(table1num);delay(20);for(num=0;num16;num+)/向左移16个字符write_com(0x1c); / 左移0001 1100delay(200);while(1);4.温度计(1602显示,18b20传感器采集温度):#inc

5、lude#define uchar unsigned char#define uint unsigned intsbit dula=P26;sbit wela=P27;sbit DQ=P37;/ds18b20与单片机连接口sbit RS=P35;/sbit RW=P31;sbit EN=P34;unsigned char code str1=temperature: ;unsigned char code str2= ; uchar data disdata5;uint tvalue;/温度值uchar tflag;/温度正负标志/*lcd1602程序*/ void delay1ms(unsi

6、gned int ms)/延时1毫秒(不够精确的) unsigned int i,j; for(i=0;ims;i+) for(j=0;j0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat); void ds1820wr(uchar wdata)/*写数据*/ unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata=1; read_temp(

7、)/*读取温度值并转换*/ uchar a,b; ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0x44);/*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue=8; tvalue=tvalue|a; if(tvalue0x0fff) tflag=0; else tvalue=tvalue+1; tflag=1; tvalue=tvalue*(0.625);/温度

8、值扩大10倍,精确到1位小数return(tvalue); /*/ void ds1820disp()/温度值显示 uchar flagdat; disdata0=tvalue/1000+0x30;/百位数 disdata1=tvalue%1000/100+0x30;/十位数 disdata2=tvalue%100/10+0x30;/个位数 disdata3=tvalue%10+0x30;/小数位 if(tflag=0) flagdat=0x20;/正温度不显示符号 else flagdat=0x2d;/负温度显示负号:- if(disdata0=0x30) disdata0=0x20;/如果

9、百位为0,不显示 if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 wr_com(0xc0);wr_dat(flagdat);/显示符号位 wr_com(0xc1); wr_dat(disdata0);/显示百位 wr_com(0xc2); wr_dat(disdata1);/显示十位 wr_com(0xc3); wr_dat(disdata2);/显示个位 wr_com(0xc4); wr_dat(0x2e);/显示小数点 wr_com(0xc5); wr_dat(disdata3);/显示小数位 /*主程序*/ void main() ini

10、t_play();/初始化显示 while(1)read_temp();/读取温度 ds1820disp();/显示 5.温度计(1602液晶显示,18b20采集温度,先显示学号,在显示温度)#include#include #define uchar unsigned char#define uint unsigned intsbit DQ=P37;/ds18b20与单片机连接口sbit RS=P35;/sbit RW=P21;sbit EN=P34;sbit dula=P26;sbit wela=P27;uchar code str1= Temperature is ;uchar code

11、 str2=;uchar code str3=set_hightemp: ;uchar code str4=set_lowtemp: ;uchar code str5=studentN0: ;uchar code str6=:;uchar data disdata5;uchar set_hightemp=33,set_lowtemp=0;/uchar p=0;/uchar aa2;uint tvalue;/温度值uchar tflag;/温度正负标志/*lcd1602程序*/void delay1ms(uint ms)/延时1毫秒uint i,j;for(i=0;ims;i+)for(j=0;

12、j114;j+); void delay1s(uint s)uint i;for(i=0;i0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat);void ds1820wr(uchar wdata)/*写数据*/uchar i=0;for (i=8; i0; i-) DQ = 0;DQ = wdata&0x01;delay_18B20(10);DQ = 1;wdata=1; read_temp()/*读取温度值并转换*/uchar a,b;ds1820rst(); ds

13、1820wr(0xcc);/*跳过读序列号*/ds1820wr(0x44);/*启动温度转换*/ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ds1820wr(0xbe);/*读取温度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue=8;tvalue=tvalue|a;if(tvalue0x0fff)tflag=0;elsetvalue=tvalue+1;tflag=1; tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数return(tvalue);void ds1820disp()/温度值显示

14、uchar flagdat;disdata0=tvalue/1000+0x30;/百位数disdata1=tvalue%1000/100+0x30;/十位数disdata2=tvalue%100/10+0x30;/个位数disdata3=tvalue%10+0x30;/小数位if(tflag=0)flagdat=0x20;/正温度不显示符号elseflagdat=0x2d;/负温度显示负号:-if(disdata0=0x30)disdata0=0x20;/如果百位为0,不显示if(disdata1=0x30)disdata1=0x20;/如果百位为0,十位为0也不显示wr_com(0xc0+4);wr_dat(flagdat);/显示符号位wr_com(0xc1+4);wr_dat(disdata0);/显示百位wr_com(0xc2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论