久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
HX711+51單片機電子秤數碼管顯示設計資料下載
[打印本頁]
作者:
dxf
時間:
2018-3-29 22:05
標題:
HX711+51單片機電子秤數碼管顯示設計資料下載
電子秤資料包:
0.jpg
(43.36 KB, 下載次數: 81)
下載附件
2018-3-30 03:48 上傳
1、單片機是通用的無論51還是52、無論stc還是at都一樣,引腳功能都一樣,原理圖和程序也是一樣的。
2、原理圖中的. sch等格式是要用protel99se打開的,沒有軟件的不要緊,我已幫您轉換成word格式和pdf格式的了。
3、程序中的.c文件可以用記事本打開,就是程序了。其他的是寫程序是自動生成的,沒什么用的。
4、可以按照正面布局,盡量不要按照實物的背面焊接,很容易看錯,要按照原理圖焊接,不要按照仿真圖焊接,因為仿真只是模擬一個現象。
5、關于資料好評后發送~~好評后記得向客服要哦~~~,我們的論文是針對這個設計寫的,不包修改,不包查重,望知悉。
6、上傳我們論文者,以后肯定不會找到好工作的~~鄙視上傳我們論文和資料的!!忘親們理解和支持,謝謝~~
我們寶貝詳情寫的附送資料都會送,沒寫的就是沒有送的!!
本視頻和資料的最終解釋權歸本店所有,勿轉載和倒賣。謝謝!!
單片機源程序如下:
#include <reg52.h> //調用單片機頭文件
#define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
#define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
#include <intrins.h>
//數碼管段選定義 0 1 2 3 4 5 6 7 8 9
uchar code smg_du[]={0x28,0xe1,0x32,0xa2,0x54,0xa1,0x21,0xea,0x20,0xa0,
0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //斷碼
//數碼管位選定義
uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};
uchar dis_smg[8] = {0};
uchar smg_i = 4; //顯示數碼管的個位數
sbit beep = P2^3; //蜂鳴器IO口定義
bit flag_lj_en; //按鍵連加使能
bit flag_lj_3_en; //按鍵連3次連加后使能 加的數就越大了
uchar key_time,key_value; //用做連加的中間變量
bit key_500ms ;
bit flag_300ms ;
uchar menu_1; //菜單設計的變量
uint t_high = 300; //上限報警值
sbit hx711_dout=P2^7;
sbit hx711_sck=P2^6;
long weight;
unsigned long HX711_Buffer = 0;
unsigned long Weight_Maopi = 0;
uint temp,qi_weight;
bit chaozhong_flag;
bit leiji_flag;
uchar flag_200ms ;
#define GapValue 437.0
uint temp,qi_weight;
bit chaozhong_flag;
bit leiji_flag;
/***********************1ms延時函數*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
/***********************數碼顯示函數*****************************/
void display()
{
static uchar i;
i++;
if(i >= smg_i)
i = 0;
P1 = 0xff; //消隱
P3 = smg_we[i]; //位選
P1 = dis_smg[i]; //段選
}
/*************定時器0初始化程序***************/
void time_init()
{
EA = 1; //開總中斷
TMOD = 0X01; //定時器0、定時器1工作方式1
ET0 = 1; //開定時器0中斷
TR0 = 1; //允許定時器0定時
}
/********************獨立按鍵程序*****************/
uchar key_can; //按鍵值
void key() //獨立按鍵程序
{
static uchar key_new;
key_can = 20; //按鍵值還原
P2 |= 0x07;
if((P2 & 0x07) != 0x07) //按鍵按下
{
if(key_500ms == 1) //連加
{
key_500ms = 0;
key_new = 1;
}
delay_1ms(1); //按鍵消抖動
if(((P2 & 0x07) != 0x07) && (key_new == 1))
{ //確認是按鍵按下
key_new = 0;
switch(P2 & 0x07)
{
case 0x06: key_can = 3; break; //得到k2鍵值
case 0x05: key_can = 2; break; //得到k3鍵值
case 0x03: key_can = 1; break; //得到k4鍵值
}
flag_lj_en = 1; //連加使能
}
}
else
{
if(key_new == 0)
{
key_new = 1;
flag_lj_en = 0; //關閉連加使能
flag_lj_3_en = 0; //關閉3秒后使能
key_value = 0; //清零
key_time = 0;
key_500ms = 0;
}
}
}
/****************按鍵處理數碼管顯示函數***************/
void key_with()
{
if(key_can == 1) //設置鍵
{
menu_1 ++;
if(menu_1 >= 2)
{
menu_1 = 0;
smg_i = 4; //數碼管顯示3位
flag_300ms = 1;
}
}
if(menu_1 == 1) //設置高溫報警
{
smg_i = 4; //數碼管顯示4位
if(key_can == 2)
{
if(flag_lj_3_en == 0)
t_high += 10 ; //按鍵按下未松開自動加三次
else
t_high += 100; //按鍵按下未松開自動加三次之后每次自動加10
if(t_high > 9990)
t_high = 9990;
}
if(key_can == 3)
{
if(flag_lj_3_en == 0)
t_high -= 10 ; //按鍵按下未松開自動減三次
else
t_high -= 100; //按鍵按下未松開自動減三次之后每次自動減10
if(t_high <= 10)
t_high = 10;
}
dis_smg[0] = smg_du[t_high / 10 % 10]; //取小數顯示
dis_smg[1] = smg_du[t_high / 100 % 10] ; //取個位顯示
dis_smg[2] = smg_du[t_high / 1000 % 10] & 0xdf; //取十位顯示
dis_smg[3] = 0x64; //H
}
}
/****************報警函數***************/
void clock_h_l()
{
static uchar value;
if(weight >= t_high)
{
value ++; //消除實際距離在設定距離左右變化時的干擾
if(value >= 2)
{
beep = ~beep; //蜂鳴器報警
}
}
else
{
beep = 1;
}
}
void Delay__hx711_us(void)
{
_nop_();
_nop_();
}
unsigned long HX711_Read(void) //增益128
{
unsigned long count;
unsigned char i;
hx711_sck=0;
Delay__hx711_us();
hx711_dout=1;
while(hx711_dout==0);
for(i=0;i<24;i++)
{
hx711_sck=0;
count=count<<1;
hx711_sck=1;
if(hx711_dout)
count++;
}
hx711_sck=1;
count=count^0x8000;//下降沿來時,轉換數據
Delay__hx711_us();
hx711_sck=0;
return(count);
}
void get_weight() //獲取被測物體重量
{
weight = HX711_Read();
weight = weight - Weight_Maopi; //獲取凈重
if(weight > 0)
{
weight = (unsigned int)((float)weight/GapValue); //計算實物的實際重量
}
else
{
weight = 0;
}
}
/****************主函數***************/
void main()
{
time_init(); //初始化定時器
while(1)
{
key(); //按鍵程序
if(key_can < 10)
{
key_with(); //設置報警壓力
}
if(flag_300ms == 1) //300ms 處理一次壓力程序
{
flag_300ms = 0;
get_weight(); //獲取被測物體重量
clock_h_l(); //報警函數
if(menu_1 == 0)
{
smg_i = 4;
dis_smg[0] = smg_du[weight % 10]; //取壓力的小數顯示
dis_smg[1] = smg_du[weight / 10 % 10] ; //取壓力的個位顯示
dis_smg[2] = smg_du[weight / 100 % 10] ; //取壓力的十位顯示
dis_smg[3] = smg_du[weight / 1000 % 10] & 0xdf; //取壓力的百位顯示
}
}
display(); //數碼管顯示函數
}
}
/*************定時器0中斷服務程序***************/
void time0_int() interrupt 1
{
static uchar value; //定時2ms中斷一次
TH0 = 0xf8;
TL0 = 0x30; //2ms
value++;
if(value >= 100)
{
value = 0;
flag_300ms = 1;
}
if(flag_lj_en == 1) //按下按鍵使能
{
key_time ++;
if(key_time >= 250) //500ms
{
key_time = 0;
key_500ms = 1; //500ms
key_value ++;
if(key_value > 3)
{
key_value = 10;
flag_lj_3_en = 1; //3次后1.5秒連加大些
}
}
}
}
復制代碼
所有資料51hei提供下載:
1.52單片機電子秤數碼管顯示.zip
(9.55 MB, 下載次數: 204)
2018-3-30 03:50 上傳
點擊文件名下載附件
溫度報警
下載積分: 黑幣 -5
作者:
火麒麟
時間:
2018-4-12 11:10
這個程序是錯誤的,請不要上傳錯誤的程序誤導初學者。
作者:
z220211548
時間:
2018-12-28 14:24
這個程序感覺是被改過的 ,主函數有問題,斷碼也有問題
作者:
sqw577277899
時間:
2019-4-7 17:14
資料不全 錯誤我已經改過來了
作者:
2235495239
時間:
2020-3-28 17:00
sqw577277899能分享嗎?
作者:
shanghanlin
時間:
2022-6-13 11:21
sqw577277899 發表于 2019-4-7 17:14
資料不全 錯誤我已經改過來了
可以分享嗎
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩视频免费大全中文字幕
|
色综合久久久
|
青青草精品视频
|
亚洲专区一区
|
国产香蕉在线观看
|
日韩成人av在线
|
精品精品
|
天天网综合
|
激情五月婷婷综合
|
日韩欧美黄色
|
欧美精品日韩
|
亚洲视频在线播放
|
久草黄色
|
51免费看成人啪啪片
|
日本一区二区高清
|
日韩欧美在线观看视频
|
香蕉视频久久
|
中文字幕永久在线
|
亚洲欧美在线观看
|
午夜网址
|
日韩欧美色
|
一二区视频
|
成人精品国产
|
久久精品二区
|
国产欧美一区二区三区在线看蜜臀
|
日韩av在线不卡
|
国产精品一区二区性色av
|
久久这里都是精品
|
三上悠亚一区
|
欧美精品色
|
我要看一级黄色片
|
亚洲一区免费观看
|
51av视频
|
色爱av
|
高清免费av
|
高潮毛片无遮挡免费看
|
久久av一区二区三区亚洲
|
日日操夜夜撸
|
毛片视频免费
|
中国一级毛片免费看
|
日本三级韩国三级美三级91
|