本文目錄一覽:
電子秤的代碼是多少
8423899000 最大秤量5000KG的其他衡器
84231000 體重計、嬰兒秤及家用秤
84231000.00 體重計、嬰兒秤及家用秤
8423100000 體重計、嬰兒秤及家用秤
求一個會編寫關於電子秤的C語言源程序!!!!!!
#includemsp430x14x.h
#include “HX711.h”
//****************************************************
//延時函數
//****************************************************
void Delay_hx711_us(uint t)
{
//_nop_();
//_nop_();
while(t–);
}
// I/O配置
void PORT_Init(void)
{
P1SEL =~ (BIT1+BIT2);
P1DIR =~ BIT2;//SDA
P1DIR |= BIT1;//SCK
}
//****************************************************
//讀取HX711
//****************************************************
unsigned long HX711_Read(void) //增益128
{
unsigned long count;
unsigned char i;
P1OUT |= BIT2; //SDA
Delay_hx711_us(4);
P1OUT =~ BIT1;//SCK
count=0;
while( P1INBIT2 ); //SDA
for(i=0;i24;i++)
{
P1OUT |= BIT1; //SCK
count=count1;
P1OUT =~ BIT1;//SCK
if(P1INBIT2)//SDA
count++;
}
P1OUT |= BIT1; //SCK
Delay_hx711_us(4);
P1OUT =~ BIT1;//SCK
return(count);
}
求講解51單片機電子秤的程序,分模塊詳細點
如果想知道更多的東西,建議看一本書:吳鑒鷹單片機實戰精講,網上能找到,代碼我給你了。
/******************************************************
*程序:吳鑒鷹基於單片機的電子秤的設計程序
** 這一講的主要內容: 電子稱是什麼,講的專業點就是:
利用物體的重力作用來確定物體質量的測量儀器,也可用來確定與物體質量相關的其他量的大小,
參數,或特性用我們自己話講就是測重量的。
** 功能描述:
** 輸 入:
** 內容:
** 輸 出:
**
** 全局變量:
** 調用模塊:
**
** 作 者: 吳鑒鷹
** 日 期: 14.02.22
備註:有什麼錯誤的地方,歡迎各大燒友指正
O(∩_∩)O~
*******************************************************/
#include reg51.h
#include intrins.h
#includestdlib.h
#includemath.h
#define uchar unsigned char //宏的定義變量類型 uchar 代替 unsigned char
#define uint unsigned int //宏的定義變量類型 uint 代替 unsigned int
#define delay_time_max 50 //按鍵去抖動延時閥值
sbit RS = P2^0;
sbit RW = P2^1;
sbit SCLK = P2^2;
sbit LCDRST = P2^3;
sbit ST=P3^6; //啟動信號
sbit EOC=P3^3; //轉換結束信號,連到外部中斷1口,轉換結束後進入外部中斷
sbit OE=P3^7; //輸出使能
uchar KEY_VALUE;
uchar key_data;
uchar dis_buf; //顯示緩存
uchar temp;
uchar key; //鍵順序碼
uchar result;
uint f;
void delay(uchar x); //x*0.14MS
// 此表為 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
unsigned char ADC0809[],KONGBVAI[],DANJIA[];
void ADC0809_change();
/*************************************************************************************
** 函數名稱: delayms
** 功能描述: 譯碼功能,將需要顯示的數字轉成相應的七段譯碼錶
如要顯示的字符為“0”,則為7e —0111 1111,就中間的一個LED不亮
** 輸 入: ms:需要延時的長度
**
**
** 輸 出:
**
** 全局變量:
** 調用模塊:
**
** 作 者: 吳鑒鷹
** 日 期: 14.02.22
**———————————————————————————–
** 修改人:吳鑒鷹
** 日 期:
**———————————————————————————-
****************************************************************************************/
void delayms(uint ms)
{
uchar i;
while(ms–) for(i=0;i120;i++);
}
/*********************************************************************************
** 函數名稱: SendByte
** 功能描述: 串口給液晶發送數據
** 輸 入: Dbyte
**
**
** 輸 出:
** 全局變量:
** 調用模塊:
**
** 作 者: 吳鑒鷹
** 日 期: 14.02.28
************************************************************************************/
void SendByte(uchar Dbyte)
{
uchar i;
for(i=0;i8;i++)
{
SCLK = 0;
Dbyte=Dbyte1; //左移一位
RW = CY; //移出的位給RW
SCLK = 1;
SCLK = 0;
}
}
/***********************************************************************************
** 函數名稱: TransferCom
** 功能描述: 串口給液晶發送命令
** 輸 入: data0
**
**
** 輸 出:
** 全局變量:
** 調用模塊:
**
** 作 者: 吳鑒鷹
** 日 期: 14.02.28
**********************************************************************************/
void TransferCom(uchar data0)
{
RS=1;
SendByte(0xf8); //11111ABC,RW(0),RS(1),0
SendByte(0xf0data0); //高四位
SendByte(0xf0data04); //低四位(先執行)
RS=0;
}
/*******************************************************************************
** 函數名稱: lcd_mesg
** 功能描述: 寫數據,
** 輸 入: data1
**
**
** 輸 出:
** 全局變量:
** 調用模塊:
**
** 作 者: 吳鑒鷹
** 日 期: 14.02.28
*****************************************************************************/
void TransferData(uchar data1)
{
RS=1;
SendByte(0xfa); //11111ABC,RW(0),RS(1),0
SendByte(0xf0data1); //高四位
SendByte(0xf0data14); //低四位(先執行)
RS=0;
}
問一段單片機的c語言程序。
我也接觸到了這段代碼。是HX711ad轉換讀數函數用到的
我來解釋兩點:
1、Count=Count^0x800000,最高位取反。把正負方向的電壓轉換ad全部變成正的數值。例如24位2進制可以表示的數值為-8388608~8388607,沒有負載時為0;
最高位取反後表示數值為0~16777215,沒有負載時候顯示為8388608,這樣做的目的是避免出現負數,方便計算。如果你做電子秤的話,我建議就不要這句了。一般不會有負數的。
2、有的代碼後面還跟了一段
/* if((Count 0x800000) == 0x800000)
{
Count = ~(Count – 1);
} */
表示負數補碼還原成正值
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/288713.html