找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3150|回复: 0
收起左侧

单片机华氏—摄氏温度转换的仪器实验

[复制链接]
ID:72519 发表于 2015-1-21 23:05 | 显示全部楼层 |阅读模式
是用51hei单片机开发板 电路图详见:http://www.51hei.com/f/51hei-5.pdf  的数码管部分, 用2个74hc573 锁存,p0口作为数据口 ,p3.6和p3.7分别是段和位的锁存端口. 还有p2口有3个按键 详见以下程序的定义:

  1. #include<reg52.h>
  2. #include<math.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. sbit D=P3^6;
  7. sbit V=P3^7;
  8. uchar ACT[4]={0xfe,0xfd,0xfb,0xf7};
  9. //=====================
  10. sbit P2_4=P2^4;
  11. sbit P2_5=P2^5;
  12. sbit P2_6=P2^6;
  13. int c,f;
  14. int temp;
  15. uchar status;
  16. //==============
  17. void key_s1(void);
  18. void key_s2(void);
  19. void key_s4(void);
  20. int conv(int fin);
  21. void delay_1ms(void);
  22. //====================
  23. void main(void)
  24. {int temp_f,temp_c;
  25. while(1)
  26. {
  27. key_s1();
  28. key_s2();
  29. key_s4();
  30. if(status==0)
  31. {
  32. if(f<0)
  33. {temp_f=abs(f);
  34. D=1;P0=SEG7[temp_f%10];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  35. D=1;P0=SEG7[(temp_f%100)/10];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  36. D=1;P0=SEG7[(temp_f/100)%10];D=0;P0=0xff;V=1;P0=ACT[1];V=0;delay_1ms();
  37. D=1;P0=0x40;D=0;P0=0xff;V=1;P0=ACT[0];V=0;delay_1ms();
  38. }
  39. else
  40. {
  41. D=1;P0=SEG7[f%10];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  42. D=1;P0=SEG7[(f%100)/10];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  43. D=1;P0=SEG7[(f/100)%10];D=0;P0=0xff;V=1;P0=ACT[1];V=0;delay_1ms();
  44.   }
  45. }
  46. else
  47. {
  48. c=conv(f);
  49. if(c<0)
  50. {temp_c=abs(c);
  51. D=1;P0=SEG7[temp_c%10];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  52. D=1;P0=SEG7[(temp_c%100)/10];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  53. D=1;P0=SEG7[(temp_c/100)%10];D=0;P0=0xff;V=1;P0=ACT[1];V=0;delay_1ms();
  54. D=1;P0=0x40;D=0;P0=0xff;V=1;P0=ACT[0];V=0;delay_1ms();
  55. }
  56. else
  57. {
  58. D=1;P0=SEG7[c%10];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  59. D=1;P0=SEG7[(c%100)/10];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  60. D=1;P0=SEG7[(c/100)%10];D=0;P0=0xff;V=1;P0=ACT[1];V=0;delay_1ms();
  61.       }
  62.     }
  63.   }
  64. }
  65. //================
  66. void key_s1(void)
  67. {
  68. if(!P2_4)
  69. {if(temp>50)temp=0;
  70. if(temp==0)f++;
  71. if(f>999)f=999;
  72. temp++;
  73.     }
  74. }
  75. //===============
  76. void key_s2(void)
  77. {
  78. if(!P2_5)
  79. {if(temp>50)temp=0;
  80. if(temp==0)f--;
  81. if(f<-500)f=-500;
  82. temp++;
  83.     }
  84. }
  85. //============
  86. void key_s4(void)
  87. {
  88. if(!P2_6)status=1;
  89. else status=0;
  90. }
  91. //===========
  92. int conv(int fin)
  93. {int ddata;
  94. ddata=fin-32;
  95. ddata=(ddata*5)/9;
  96. return ddata;
  97. }
  98. //============
  99. void delay_1ms(void)
  100. {
  101. uint k;
  102. for(k=0;k<121;k++);
  103. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表