标题: 89C52单片机+TM1640+DHT11温湿度计源程序 [打印本页]

作者: 单片机学习习    时间: 2017-12-19 23:45
标题: 89C52单片机+TM1640+DHT11温湿度计源程序
单片机源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "DHT11.H"
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define SET_DATA_ORDER 0x40  
  7. sbit SCLK = P0^3;
  8. sbit DIN = P0^2;
  9. sbit LED = P2^1;

  10. sbit LED1 = P2^2;
  11. sbit LED2 = P2^3;
  12. sbit LED3 = P2^4;
  13. uchar code display_buffer[19] = {0xFC,0x30,0x6D,0x75,0xB1,0xD5,0xDD,0xF0,0xFD,0xF5,
  14.         0xF9,0x9D,0xCC,0x0D,0x3D,0xCD,0xC9,0x01,0x00};
  15. uchar code SET_DISPLAY[] = {0x80,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F};
  16. void start()
  17. {
  18.         DIN = 1;
  19.         SCLK = 1;
  20.         _nop_();
  21.         _nop_();
  22.         DIN = 0;
  23.         _nop_();
  24.         _nop_();
  25.         SCLK = 0;
  26.         _nop_();
  27.         _nop_();
  28. }
  29. void stop()
  30. {
  31.         DIN = 0;
  32.         SCLK = 1;
  33.         _nop_();
  34.         _nop_();
  35.         DIN = 1;
  36.         _nop_();
  37.         _nop_();
  38.         SCLK = 0;
  39.         _nop_();
  40.         _nop_();
  41. }
  42. void write(uchar date)
  43. {
  44.         uchar i;
  45.         DIN = 0;
  46.         SCLK = 0;
  47.         for(i = 0;i < 8;i++)
  48.         {
  49.                 SCLK = 0;
  50.                 if(date & 0x01)
  51.                 {
  52.                         DIN = 1;
  53.                         _nop_();
  54.                         _nop_();
  55.                 }
  56.                 else
  57.                 {
  58.                         DIN = 0;
  59.                         _nop_();
  60.                         _nop_();
  61.                 }
  62.                 SCLK = 1;
  63.                 date >>= 1;               
  64.         }
  65.         SCLK = 0;
  66.         DIN = 0;
  67. }
  68. void TM1640_INIT(void) //TM1640???
  69. {
  70.         DIN = 1;                          
  71.         SCLK = 1;
  72.         start();                               
  73.         write(SET_DATA_ORDER);       
  74.         stop();                                       
  75.         start();                                       
  76.         write(SET_DISPLAY[2]);       
  77.         stop();                       
  78. }
  79. void send(uchar address,date)//?TM1640???ADDRESS??,,DATA??
  80. {
  81.         start();                                       
  82.         write(0xC0 | (address & 0x0F));       
  83.         write(date);                       
  84.         stop();                                        
  85. }
  86. void SX(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5,uchar A6,uchar A7,uchar A8,uchar A9,uchar A10)
  87. {
  88.     send(0,display_buffer[A1/10]);               

  89.                 send(1,display_buffer[A2%10]);               

  90.                 send(2,display_buffer[A3]);               

  91.                 send(3,display_buffer[A4]);               

  92.                 send(4,display_buffer[A5/10]);       

  93.                 send(5,display_buffer[A6%10]);               

  94.                 send(6,display_buffer[A7]);               

  95.                 send(7,display_buffer[A8]);               
  96.        
  97.                 send(8,display_buffer[A9]);       
  98.        
  99.                 send(9,display_buffer[A10]);       
  100. }
  101. void main()
  102. {
  103.   LED=0;
  104.        
  105.         TM1640_INIT();
  106. while(1)
  107.         {

  108.                
  109.                 RH();
  110. SX(U8T_data_H,U8T_data_H,17,17,U8RH_data_H,U8RH_data_H,17,17,17,17);
  111. }

  112. }
  113. ……………………

  114. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
DHT11 TM1640.rar (36.02 KB, 下载次数: 163)



作者: 蒙古海军司令    时间: 2018-1-12 15:23
又没图
作者: 543518438    时间: 2019-2-16 14:36
不错
作者: ontheroad    时间: 2019-2-20 15:45
不错,给楼主点赞!
作者: waerdeng    时间: 2020-4-22 18:09
学习学习  多谢分享




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1