找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3912|回复: 6
打印 上一主题 下一主题
收起左侧

51单片机电子称的程序和仿真

[复制链接]
跳转到指定楼层
楼主
电子称的程序和仿真,供大家参考和学习! C语言程序


电子称单片机源程序预览(完整代码请下载附件):
  1. #include"reg52.h"
  2. #include<intrins.h>
  3. #include"lcd.h"
  4. //******************adc0832****************************//
  5. sbit CS=P1^6; //使能。
  6. sbit CLK=P1^4;//时钟
  7. sbit Do=P1^5; // 数据输出
  8. sbit Di=P1^5;//数据输入
  9. unsigned char CH=0x02;
  10. unsigned char smog_value=0;
  11. unsigned long wei_true=0;
  12. unsigned char wei_h[5];
  13. extern unsigned char alarm_en;
  14. //通道的选择:0x02就是单通道0;0x03就是单通道1;
  15. //0x00就是双通道ch0=“+”;   ch0=“-”
  16. //0x01就是双通道ch0=“-”;   ch0=“+”
  17. //*****************************************************//
  18. unsigned char ADconv(void)
  19. {
  20.            unsigned char i;
  21.            unsigned int data_f=0,data_c=0;
  22.                 Di=1;
  23.                 CS=1;
  24.                 _nop_();
  25.                 CS=0;
  26.                 Di=1; ;//芯片使能之前的初始化。第一个下降沿
  27.                 CLK=1;
  28.                 _nop_();
  29.                 _nop_();
  30. /****************************************/
  31.                 CLK=0; // 确定通道模式、第2个下降沿
  32.                 _nop_();
  33.                 _nop_();
  34.                 CLK=1;
  35.                 Di=(bit)(0x02&CH); //设定通道初始化
  36.                 _nop_();
  37.                 CLK=0;
  38.                 _nop_();
  39.                 _nop_();
  40.                 CLK=1;
  41.                 Di=(bit)(0x01&CH); //设定通道初始化 .第3个下降沿
  42.                 _nop_();
  43.                 _nop_();
  44.                 CLK=0; //AD转化的初始化完成。
  45.                 Di=1;
  46.                 CLK=1;
  47.                 _nop_();
  48.                 _nop_();
  49.                 CLK=0;
  50.                 _nop_();
  51.                 CLK=1;          

  52.                 for(i=8;i>0;i--)//得到一个正常排序的8位数据
  53.                 {
  54.                 data_f|=Do;
  55.                 data_f<<=1;
  56.                 CLK=1;
  57.                 _nop_();
  58.                 _nop_();
  59.                 CLK=0;
  60.                 _nop_();
  61.                 }
  62.                 for(i=8;i>0;i--)//得到一个反序排列的8位数据
  63.                 {
  64.                         data_c<<=1;
  65.                         data_c|=Do;
  66.                         _nop_();
  67.                         CLK=1;
  68.                         _nop_();
  69.                         _nop_();
  70.                         CLK=0;
  71.                         _nop_();                 
  72.                 }  
  73.                 CLK=0;
  74.                 _nop_();
  75.                 _nop_();
  76.                 CLK=1;
  77.                 _nop_();
  78.                 _nop_();               
  79.                 CLK=0;
  80.                 _nop_();
  81.                 _nop_();
  82.                 CLK=1;
  83.                 _nop_();
  84.                 CS=1;
  85.                 _nop_();
  86.                 _nop_();
  87.                 return data_f;
  88. }
  89. void get_wei()
  90. {
  91.      unsigned int data_smog;
  92.          unsigned int m_data=0;

  93.          unsigned s=0;
  94.          data_smog=ADconv();
  95.      m_data=196*data_smog;
  96.          m_data=m_data/10;//最后一位不要了
  97.          if(m_data>4500)
  98.          {
  99.             alarm_en=1;
  100.          
  101.          }
  102.          else
  103.          {
  104.          
  105.            alarm_en=0;
  106.          }
  107.          wei_true=m_data;
  108.            wei_h[0]=m_data/1000;
  109.          lcd_pos(10);
  110.          lcd_wdat(wei_h[0]+48);
  111.          m_data=m_data%1000;
  112.          wei_h[1]=m_data/100;
  113.          lcd_pos(11);
  114.          lcd_wdat(wei_h[1]+48);
  115.          m_data=m_data%100;
  116.          wei_h[2]=m_data/10;
  117.          lcd_pos(12);
  118.          lcd_wdat(wei_h[2]+48);
  119.          wei_h[3]=m_data%10;          
  120.          lcd_pos(13);
  121.          lcd_wdat(wei_h[3]+48);
  122. }
复制代码


电子称程序.rar

60.93 KB, 下载次数: 82, 下载积分: 黑币 -5

仿真图.rar

56.77 KB, 下载次数: 85, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:117574 发表于 2016-7-25 15:15 | 只看该作者
请问这是机遇电阻应变器的设计吗
回复

使用道具 举报

板凳
ID:92810 发表于 2018-11-3 01:00 | 只看该作者
学习学习,谢谢分享
回复

使用道具 举报

地板
ID:454588 发表于 2018-12-25 16:54 | 只看该作者
仿真不是太会用,把程序输入进去了,不会操作。。。。。
回复

使用道具 举报

5#
ID:454588 发表于 2018-12-25 16:59 | 只看该作者
为什么测得的重量一直是 39 KG
回复

使用道具 举报

6#
ID:261582 发表于 2019-1-18 08:29 | 只看该作者
谢谢分享
回复

使用道具 举报

7#
ID:470146 发表于 2019-1-18 14:30 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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