Daluo

    1. nRF905的编程实例哪位高手有啊? 5/4537 嵌入式系统 2014-04-23
      您可以参考一下百度百科里面那段关于NRF905的代码
    2. 如果我只是单纯的水下帖子会给芯币么
    3. 很需要这方面的东西
    4. 分享30套单片机毕业设计给大家 3137/290373 信息发布 2014-04-19
      觉得很好下来看看
    5. 如何利用双机通讯完成温度监测系统 8/2701 51单片机 2014-04-18
      抱歉没有发完整的东西,这里的双机通讯是指单片机与单片机
    6. 海量资料大放送,有需要的拿走吧。 1176/75434 51单片机 2014-04-16
      楼主好人
    7. 如何利用双机通讯完成温度监测系统 8/2701 51单片机 2014-04-16
      H文件: #ifndef __DS18B20_H__ #define __DS18B20_H__ #include     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include #define uchar unsigned char #define uint   unsigned int; /*------------------------------------------------                     端口定义 ------------------------------------------------*/ sbit DQ=P3^7;//ds18b20 端口 /*------------------------------------------------                   函数声明 ------------------------------------------------*/ unsigned int ReadTemperature(void); bit Init_DS18B20(void); unsigned char ReadOneChar(void); void WriteOneChar(unsigned char dat); #endif #ifndef __DELAY_H__ #define __DELAY_H__ /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t); /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t); #endif /*-----------------------------------------------   名称:LCD1602.h   论坛:www.doflye.net   编写:shifang   日期:2009.5   修改:无   内容:   引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include #ifndef __1602_H__ #define __1602_H__ bit LCD_Check_Busy(void) ; void LCD_Write_Com(unsigned char com) ; void LCD_Write_Data(unsigned char Data) ; void LCD_Clear(void) ; void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) ; void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) ; void LCD_Init(void) ; void Lcd_User_Chr(void);     #endif
    8. 如何利用双机通讯完成温度监测系统 8/2701 51单片机 2014-04-16
      延时函数: #include "delay.h" /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) {    while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {       while(t--) {      //大致延时1mS      DelayUs2x(245);          DelayUs2x(245); } }
    9. 如何利用双机通讯完成温度监测系统 8/2701 51单片机 2014-04-16
      LCD1602代码: #include "1602.h" #include "delay.h" sbit RS = P1^0;   //定义端口 sbit RW = P1^1; sbit EN = P1^2; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P0 /*------------------------------------------------               判忙函数 ------------------------------------------------*/ bit LCD_Check_Busy(void) { DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort & 0x80); } /*------------------------------------------------               写入命令函数 ------------------------------------------------*/ void LCD_Write_Com(unsigned char com) {   // while(LCD_Check_Busy()); //忙则等待 DelayMs(5); RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; } /*------------------------------------------------               写入数据函数 ------------------------------------------------*/ void LCD_Write_Data(unsigned char Data) { //while(LCD_Check_Busy()); //忙则等待 DelayMs(5); RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; } /*------------------------------------------------                 清屏函数 ------------------------------------------------*/ void LCD_Clear(void) { LCD_Write_Com(0x01); DelayMs(5); } /*------------------------------------------------               写入字符串函数 ------------------------------------------------*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {      if (y == 0)         {               LCD_Write_Com(0x80 + x);     //表示第一行         } else         {               LCD_Write_Com(0xC0 + x);      //表示第二行         }         while (*s)         {      LCD_Write_Data( *s);      s ++;              } } /*------------------------------------------------               写入字符函数 ------------------------------------------------*/ void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {      if (y == 0)         {              LCD_Write_Com(0x80 + x);              }    else         {              LCD_Write_Com(0xC0 + x);              }         LCD_Write_Data( Data);   } /*------------------------------------------------               初始化函数 ------------------------------------------------*/ void LCD_Init(void) {    LCD_Write_Com(0x38);    /*显示模式设置*/    DelayMs(5);    LCD_Write_Com(0x38);    DelayMs(5);    LCD_Write_Com(0x38);    DelayMs(5);    LCD_Write_Com(0x38);      LCD_Write_Com(0x08);    /*显示关闭*/    LCD_Write_Com(0x01);    /*显示清屏*/    LCD_Write_Com(0x06);    /*显示光标移动设置*/    DelayMs(5);    LCD_Write_Com(0x0C);    /*显示开及光标设置*/    } /*------------------------------------------------    设定二个自定义字符,LCD1602中自定义字符的地址为0x00--0x07, 即可定义8个字符 这里我们设定把一个自定义字符放在0x00位置(000), 另一个放在0x01位子(001) ------------------------------------------------*/ void Lcd_User_Chr(void) { //第一个自定义字符 LCD_Write_Com(0x40); //"01 000 000"  第1行地址 (D7D6为地址设定命令形式?D5D4D3为字符存放位置(0--7),D2D1D0为字符行地址(0--7)) LCD_Write_Data(0x00); //"XXX 11111" 第1行数据(D7D6D5为XXX,表示为任意数(一般用000),D4D3D2D1D0为字符行数据(1-点亮,0-熄灭) LCD_Write_Com(0x41); //"01 000 001"  第2行地址 LCD_Write_Data(0x04); //"XXX 10001" 第2行数据 LCD_Write_Com(0x42); //"01 000 010"  第3行地址 LCD_Write_Data(0x0e); //"XXX 10101" 第3行数据 LCD_Write_Com(0x43); //"01 000 011"  第4行地址 LCD_Write_Data(0x0e); //"XXX 10001" 第4行数据 LCD_Write_Com(0x44); //"01 000 100"  第5行地址 LCD_Write_Data(0x0e); //"XXX 11111" 第5行数据 LCD_Write_Com(0x45); //"01 000 101"  第6行地址 LCD_Write_Data(0x1f); //"XXX 01010" 第6行数据 LCD_Write_Com(0x46); //"01 000 110"  第7行地址 LCD_Write_Data(0x04); //"XXX 11111" 第7行数据 LCD_Write_Com(0x47); //"01 000 111"  第8行地址    LCD_Write_Data(0x00); //"XXX 00000" 第8行数据 //第二个自定义字符 LCD_Write_Com(0x48); //"01 001 000"  第1行地址   LCD_Write_Data(0x03); //"XXX 00001" 第1行数据 LCD_Write_Com(0x49); //"01 001 001"  第2行地址 LCD_Write_Data(0x03); //"XXX 11011" 第2行数据 LCD_Write_Com(0x4a); //"01 001 010"  第3行地址 LCD_Write_Data(0x00); //"XXX 11101" 第3行数据 LCD_Write_Com(0x4b); //"01 001 011"  第4行地址 LCD_Write_Data(0x00); //"XXX 11001" 第4行数据 LCD_Write_Com(0x4c); //"01 001 100"  第5行地址 LCD_Write_Data(0x00); //"XXX 11101" 第5行数据 LCD_Write_Com(0x4d); //"01 001 101"  第6行地址 LCD_Write_Data(0x00); //"XXX 11011" 第6行数据 LCD_Write_Com(0x4e); //"01 001 110"  第7行地址 LCD_Write_Data(0x00); //"XXX 00001" 第7行数据 LCD_Write_Com(0x4f); //"01 001 111"  第8行地址 LCD_Write_Data(0x00); //"XXX 00000" 第8行数据 }
    10. 如何利用双机通讯完成温度监测系统 8/2701 51单片机 2014-04-16
      18B20代码: #include"delay.h" #include"18b20.h" /*------------------------------------------------                     18b20初始化 ------------------------------------------------*/ bit Init_DS18B20(void) { bit dat=0; DQ = 1;    //DQ复位 DelayUs2x(5);   //稍做延时 DQ = 0;         //单片机将DQ拉低 DelayUs2x(200); //精确延时 大于 480us 小于960us DelayUs2x(200); DQ = 1;        //拉高总线 DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲 dat=DQ;        //如果x=0则初始化成功, x=1则初始化失败 DelayUs2x(25); //稍作延时返回 return dat; } /*------------------------------------------------                     读取一个字节 ------------------------------------------------*/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i--) {   DQ = 0; // 给脉冲信号   dat>>=1;   DQ = 1; // 给脉冲信号   if(DQ)    dat|=0x80;   DelayUs2x(25); } return(dat); } /*------------------------------------------------                     写入一个字节 ------------------------------------------------*/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) {   DQ = 0;   DQ = dat&0x01;   DelayUs2x(25);   DQ = 1;   dat>>=1; } DelayUs2x(25); } /*------------------------------------------------                     读取温度 ------------------------------------------------*/ unsigned int ReadTemperature(void) { unsigned char a=0; unsigned int b=0; unsigned int t=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 DelayMs(10); Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar();   //低位 b=ReadOneChar();   //高位 b

最近访客

< 1/1 >

统计信息

已有4人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:10

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言