gaoyang9992006

    1. 中了个灯。
    2. “玩板”+再次把玩人生中的第一块开发板 6/1925 测评中心专版 2020-02-16
      等我再翻翻,如果找到个合适的显示器,或者无线模块,准备做个联网的,可以手机APP查看测量结果。
    3. “玩板”+再次把玩人生中的第一块开发板 6/1925 测评中心专版 2020-02-16
      这个是AM2301.h 定义了端口和存储温湿度的数组,只要包含这个文件,并调用读取函数就行了,然后从数组了读取转换结果用于显示。  //AM2301 #include <AT89X52.h> #include<intrins.h> //包含_nop_()函数定义的头文件 //读传感器 端口位定义,可修改 sbit AM2301_PIN = P2^3; // 变量定义 unsigned char Sensor_Data[5]={0x00,0x00,0x00,0x00,0x00}; unsigned char Sensor_Check; //校验和 unsigned char Sensor_AnswerFlag; //收到起始标志位 unsigned char Sensor_ErrorFlag; //读取传感器错误标志 unsigned int Sys_CNT; /********************************************\ |* 功能: 延时 晶振为12M时 *| |* t = 1 为 20us 然后成倍增加10us左右 *| \********************************************/ void Delay_N10us(unsigned char t) { while(t--) { _nop_(); } } /********************************************\ |* 功能: 延时 晶振为12M时 *| |* 延时大约 1ms *| \********************************************/ void Delay_N1ms(unsigned int t) { unsigned int i; unsigned int j; for(j=t;j>0;j--) for(i=124;i>0;i--); //延时大约 1ms } /********************************************\ |* 功能: 读传感器发送的单个字节 *| \********************************************/ unsigned char Read_SensorData(void) { unsigned char i,cnt; unsigned char buffer,tmp; buffer = 0; for(i=0;i<8;i++) { cnt=0; while(!AM2301_PIN) //检测上次低电平是否结束 { if(++cnt >= 300) { break; } } //延时Min=26us Max50us 跳过数据"0" 的高电平 Delay_N10us(2); //延时30us //判断传感器发送数据位 tmp =0; if(AM2301_PIN) { tmp = 1; } cnt =0; while(AM2301_PIN) //等待高电平 结束 { if(++cnt >= 200) { break; } } buffer <<=1; buffer |= tmp; } return buffer; } /********************************************\ |* 功能: 读传感器 *| \********************************************/ unsigned char Read_Sensor(void) { unsigned char i; //主机拉低(Min=800US Max=20Ms) AM2301_PIN = 0; Delay_N1ms(2); //延时2Ms //释放总线 延时(Min=30us Max=50us) AM2301_PIN = 1; Delay_N10us(1);//延时30us //主机设为输入 判断传感器响应信号 AM2301_PIN = 1; Sensor_AnswerFlag = 0; // 传感器响应标志 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(AM2301_PIN ==0) { Sensor_AnswerFlag = 1;//收到起始信号 Sys_CNT = 0; //判断从机是否发出 80us 的低电平响应信号是否结束 while((!AM2301_PIN)) { if(++Sys_CNT>300) //防止进入死循环 { Sensor_ErrorFlag = 1; return 0; } } Sys_CNT = 0; //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((AM2301_PIN)) { if(++Sys_CNT>300) //防止进入死循环 { Sensor_ErrorFlag = 1; return 0; } } // 数据接收 传感器共发送40位数据 // 即5个字节 高位先送 5个字节分别为湿度高位 湿度低位 温度高位 温度低位 校验和 // 校验和为:湿度高位+湿度低位+温度高位+温度低位 for(i=0;i<5;i++) { Sensor_Data[i] = Read_SensorData(); } } else { Sensor_AnswerFlag = 0; // 未收到传感器响应 } return 1; }  
    4. “玩板”+再次把玩人生中的第一块开发板 6/1925 测评中心专版 2020-02-16
      这个是LCD1602.h文件,定义了管教的分配,只要修改这个文件就可以在51工程里轻松移植到其他管脚去。  #include <AT89X52.h> #include<intrins.h> //包含_nop_()函数定义的头文件 #define LCD1602_DATA_BUS P0 sbit LCD1602_RS=P2^0; sbit LCD1602_RW=P2^1; sbit LCD1602_EN=P2^2; #define LCD1602_RS_High() LCD1602_RS=1 #define LCD1602_RS_Low() LCD1602_RS=0 #define LCD1602_RW_High() LCD1602_RW=1 #define LCD1602_RW_Low() LCD1602_RW=0 #define LCD1602_EN_High() LCD1602_EN=1 #define LCD1602_EN_Low() LCD1602_EN=0 /*从b里读数据写到a. 例如:tem=LCD1602_DATA_BUS;可以写作LCD1602_READ_DATA(tem,LCD1602_DATA_BUS);*/ #define LCD1602_READ_DATA(a_addr,b_addr) a_addr=b_addr /*延时函数,延时时间=13+11*j,例如当j=17时,延时为200us*/ void delay(unsigned int j); /*写指令函数。参数:指令*/ void LCD1602WriteCom(unsigned char com); /*写数据函数。参数:写入数据*/ void LCD1602WriteData(unsigned char dat); /*初始化函数。参数:无*/ void LCD1602Init(void); /*检查忙指令。参数:无*/ void LCD1602CheckBusy(void); /*写字符串。参数:地址(第一行0x80~0x8F,第二行0xC0~0xCF),字符串*/ void LCD1602DispString(unsigned char addr,unsigned char *str); /*写1位数字到指定的位置。参数:位置,1位字符*/ void LCD1602Disp1(unsigned char addr,unsigned char num);  
    5. “玩板”+再次把玩人生中的第一块开发板 6/1925 测评中心专版 2020-02-16
      LCD1602.C 是主要文件,main函数也在这个里面了。方便LCD1602测试,也可以直接剪切到另外一个文件。  #include"LCD1602.h" #include"AM2301.h" void delay(unsigned int j) { for(; j>0; j--); } void LCD1602CheckBusy(void) { unsigned char tem; LCD1602_RS_Low(); LCD1602_RW_High(); LCD1602_EN_Low(); while(1) { LCD1602_DATA_BUS=0xFF; LCD1602_EN_High(); // tem=LCD1602_DATA_BUS; LCD1602_READ_DATA(tem,LCD1602_DATA_BUS); LCD1602_EN_Low(); if((tem&0x80)==0) break; } } void LCD1602WriteCom(unsigned char com) { LCD1602CheckBusy(); LCD1602_RS_Low(); LCD1602_RW_Low(); LCD1602_EN_Low(); // LCD1602_DATA_BUS=com; LCD1602_READ_DATA(LCD1602_DATA_BUS,com); delay(2); LCD1602_EN_High(); delay(2); LCD1602_EN_Low(); } void LCD1602WriteData(unsigned char dat) { LCD1602CheckBusy(); LCD1602_RS_High(); LCD1602_RW_Low(); LCD1602_EN_Low(); // LCD1602_DATA_BUS=dat; LCD1602_READ_DATA(LCD1602_DATA_BUS,dat); delay(2); LCD1602_EN_High(); delay(2); LCD1602_EN_Low(); } void LCD1602Init(void) { LCD1602_EN_Low(); LCD1602WriteCom(0x38); LCD1602WriteCom(0x0c); LCD1602WriteCom(0x06); LCD1602WriteCom(0x01); LCD1602WriteCom(0x80); } /* void LCD1602DispString(unsigned char addr,unsigned char *str) { unsigned char i=0; LCD1602WriteCom(addr); while(*str>0) { LCD1602WriteData(*str++); delay(10); } } */ /*写1位数字到指定的位置。参数:位置,1位字符*/ void LCD1602Disp1(unsigned char addr,unsigned char num) { LCD1602WriteCom(addr); LCD1602WriteData(num); delay(2);//延时13+11*2 us,35us. } void main(void) { unsigned int shidu,wendu; LCD1602Init(); { // LCD1602DispString(0x80,"ABCDEFGHIJKLMNO"); // LCD1602DispString(0xC0,"123456789012345"); // LCD1602Disp1(0x8F,'0'+3); // LCD1602Disp1(0xCF,':'); } while(1) { Read_Sensor(); // 读取传感器数据 shidu=Sensor_Data[0]; shidu<<=8; shidu=shidu|Sensor_Data[1]; wendu=Sensor_Data[2]; wendu<<=8; wendu=wendu|Sensor_Data[3]; LCD1602Disp1(0x8B,'0'+shidu/100); LCD1602Disp1(0x8C,'0'+shidu%100/10); LCD1602Disp1(0x8D,'.'); LCD1602Disp1(0x8E,'0'+shidu%100%10); LCD1602Disp1(0x8F,'%'); if(wendu&0x8000) { LCD1602Disp1(0xCA,'-'); wendu=wendu&0x7FFF; } else LCD1602Disp1(0xCA,'+'); LCD1602Disp1(0xCB,'0'+wendu/100); LCD1602Disp1(0xCC,'0'+wendu%100/10); LCD1602Disp1(0xCD,'.'); LCD1602Disp1(0xCE,'0'+wendu%100%10); LCD1602Disp1(0xCF,'C'); } }  
    6. 无误
    7. 什么时候发奖啊。。等着体验奖品
    8. 什么时候发奖
    9. 你们都收到了吗?
    10. HT001 发表于 2018-6-8 08:47 感谢楼主,不藏不掖共同提高
      haha,多谢赞美。这次重新整理了一下,比从前分享的内容更多。
    11. 链接: https://pan.baidu.com/s/1tBNsgZNenStSnV_Weic1cQ 密码: 9e8j
    12. 补上。链接: https://pan.baidu.com/s/1tBNsgZNenStSnV_Weic1cQ 密码: 9e8j
    13. Altium Designer 17 全套入门完整版视频教程 2604/207432 PCB设计 2017-12-29
      看看
    14. 成本降10倍的PowerAnts数控DC-DC 28/10730 电源技术 2017-09-25
      你的域名被工信部封杀了。
    15. pcad 2006 破解版? 4/3842 PCB设计 2017-08-25
      如果需要这个可以联系我。
    16. pcad 2006 破解版? 4/3842 PCB设计 2017-08-25
      有的,我就用过。
    17. 据说高手都是不收拾桌面的 32/6322 模拟电子 2017-08-09
      哈哈,就算人品再差的人,也没见到饿死的。淡定。
    18. MQTT的应用 9/3124 NXP MCU 2017-07-10
      这个确实好用。
    19. 明天就四周年了。
    20. 据说高手都是不收拾桌面的 32/6322 模拟电子 2017-07-10
      PowerAnts 发表于 2017-7-3 11:50 技术人需有三分傲骨, 你成天想着从那帮娘们手里领些金币, 成何体统?
      我看你这边账号里的金币不就领了,前几天还380个金币呢,刚看了一下,140了。。:time:

统计信息

已有1730人来访过

  • 芯积分:5
  • 好友:30
  • 主题:193
  • 回复:915

留言

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


z174646850 2018-3-21
大师,请问一下,你那还保存了AD10的视频教程吗?能给发个下载链接吗?174646853@qq.com
早安桂子 2018-1-31
帅哥, 我看你以前发的一个新手画PCB原理图的视频,能不能私下发我给我一下,我是成都本科学校的大一学生,1980278473@qq.com
查看全部