標(biāo)題:
單片機(jī)電子秤設(shè)計(jì)(源程序+lcd12864顯示)
[打印本頁(yè)]
作者:
daxiao
時(shí)間:
2015-3-22 02:28
標(biāo)題:
單片機(jī)電子秤設(shè)計(jì)(源程序+lcd12864顯示)
本帖最后由 daxiao 于 2015-3-22 02:31 編輯
//按鍵接P2口
//LCD數(shù)據(jù)口接P0口
//DOUT=P3^0;
//PD_SCK=P3^1;
//RS=P1^1; VOUT 空接 RST 空接 NC PSB 接VCC
//RW=P1^2;
//E=P1^3;
//FMQ=P1^0; 蜂鳴器
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ADDO=P3^0; //51CPU 準(zhǔn)雙向I/0 輸入使能(DOUT) / 串行數(shù)據(jù)輸出
sbit ADSK=P3^1; // 使能AD(PD_SCK) / 串行時(shí)鐘輸入
sbit RS=P1^1; //寄存器選擇引腳,搞電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器
sbit RW=P1^2; //讀寫操作使能引腳,高電平使能讀操作,低電平使能寫操作
sbit E=P1^3; //總使能引腳
sbit FMQ=P1^0; //蜂鳴器
//----------------------AD轉(zhuǎn)換程序--//
unsigned long ReadCount(void) //無(wú)參數(shù),返回長(zhǎng)整形變量
{
unsigned long Count; //聲明長(zhǎng)整形變量Count
unsigned char i; //聲明字符型變量i
ADSK=0; //串行輸入拉低
Count=0; //變量Count置零
while(ADDO); //等待串行輸出拉高
for(i=0;i<24;i++) //接收24個(gè)數(shù)據(jù)和發(fā)送24個(gè)脈沖
{
ADSK=1; //發(fā)送脈沖
Count=Count<<1; //變量左移
ADSK=0; //拉低
if(ADDO)Count++; //讀入數(shù)據(jù)(高>>低)
}
ADSK=1; //發(fā)送第25個(gè)脈沖(選擇A通道、128增益。)
Count=Count^0x800000; //按位相異或
ADSK=0; //串行拉低
return Count; //返回
}
//--------------------延時(shí)子函數(shù)--------//
void delay(unsigned char delayata)
{
uchar i,j;
for(i=0;i<delayata;i++)
{
for(j=0;j<121;j++)
{;}
}
}
//-------------------------------------單鍵掃描子函數(shù)-----//
unsigned char JP()
{
unsigned char x=0x00;
bit i=0;
x=P2; //掃描Y坐標(biāo)
FMQ=0; //響起蜂鳴器
delay(125); //延時(shí)去抖動(dòng)
P2=0x0f;
delay(2);
x+=P2; //掃描X坐標(biāo)
switch(x)
{
case 0xee:x=0x30;break; //按下0
case 0xed:x=0x31;break; //按下1
case 0xeb:x=0x34;break; //按下4
case 0xe7:x=0x37;break; //按下7
case 0xde:x=0x46;break; //按下F/.
case 0xdd:x=0x32;break; //按下2
case 0xdb:x=0x35;break; //按下5
case 0xd7:x=0x38;break; //按下8
case 0xbe:x=0x45;break; //按下E
case 0xbd:x=0x33;break; //按下3
case 0xbb:x=0x36;break; //按下6
case 0xb7:x=0x39;break; //按下9
case 0x7e:x=0x44;break; //按下D
case 0x7d:x=0x43;break; //按下C
case 0x7b:x=0x42;break; //按下B
case 0x77:x=0x41;break; //按下A
default:x=0xff;break;
}
FMQ=1; //關(guān)閉蜂鳴器
while(i==0) //等待按鍵松開(kāi)
{
P2=0xf0;
delay(150);
if(P2==0xf0)
{
i=1;
}
else{i=0;}
}
return x; //返回x(ASCII碼)
}
//------------------12864寫指令子函數(shù)-----//
void write_12864com(unsigned char com)
{
RS=0;
RW=0;
delay(1);
E=1;
P0=com;
delay(2);
E=0;
delay(1);
}
//------------------12864寫數(shù)據(jù)子函數(shù)-----//
void write_12864dat(unsigned char dat)
{
RS=1;
RW=0;
delay(1);
E=1;
P0=dat;
delay(2);
E=0;
delay(1);
}
//------------------------------LCD初始化-----//
void initinal(void)
{
delay(100);
write_12864com(0x30); //8位并行通信
delay(1);
write_12864com(0x30); //8位并行通信
delay(1);
write_12864com(0x02);
delay(2);
write_12864com(0x06);
delay(2);
write_12864com(0x0c);
delay(2);
write_12864com(0x01);
delay(2);
write_12864com(0x80);
delay(2);
}
//--------------------主函數(shù)-------------//
void main(void)
{
uchar LCD[16]={"0123456789ABCDEF"};
code uchar JM1[]={0xb5,0xda,0xc8,0xfd,0xd7,0xe9,0xb5,0xe7,0xd7,0xd3,0xb3,0xc6};
code uchar JM2[]={"單價(jià): 00.0元 "};
code uchar JM3[]={"重量: 00.000KG "};
code uchar JM4[]={"總價(jià): 0000.0元 "};
uchar DJ[3]; //單價(jià)
uchar ZL[5]; //重量
uchar QPZL[5]; //去皮時(shí)的重量
uchar ZJ[5]; //總價(jià)
unsigned long J1;
uint J2,J3,J6=0;
bit J5=1;
uint J7;
uchar i;
uchar JM5[]={5679};
initinal(); //初始化
for(i=0;i<3;i++) //填值
{
DJ[i]=0;
}
for(i=0;i<5;i++) //填值
{
ZL[i]=0;
}
for(i=0;i<5;i++) //填值
{
QPZL[i]=0;
}
for(i=0;i<5;i++) //填值
{
ZJ[i]=0;
}
write_12864com(0x81); //定位
for(i=0;i<12;i++)
{
write_12864dat(JM1[i]); //顯示 第三組電子稱
}
write_12864com(0x90); //定位
for(i=0;JM2[i]!='\0';i++)
{
write_12864dat(JM2[i]); //顯示 單價(jià):00.0元
}
write_12864com(0x88); //定位
for(i=0;JM3[i]!='\0';i++)
{
write_12864dat(JM3[i]); //顯示 重量: 00.000KG
}
write_12864com(0x98); //定位
for(i=0;JM4[i]!='\0';i++)
{
write_12864dat(JM4[i]); //顯示 總價(jià): 0000.0元
}
P2=0xf0;
while(1)
{
while(P2==0xf0) //但沒(méi)有按鍵按下的時(shí)候進(jìn)入,有按鍵按下的時(shí)候跳出來(lái)
{
J1=ReadCount(); //讀AD值
J3=((J1-8388608)/150)-11; //取值
ZL[0]=(J3/10000)%10; //重量十位
if(ZL[0]>3){FMQ=0;} //超重報(bào)警
else{FMQ=1;}
ZL[1]=(J3/1000)%10; //重量個(gè)位
ZL[2]=(J3/100)%10; //計(jì)算位
ZL[3]=(J3/10)%10;
ZL[4]=J3%10;
J7=ZL[4];
J7+=ZL[3]*10;
J7+=ZL[2]*100;
J7+=ZL[1]*1000;
J7+=ZL[0]*10000;
J3=QPZL[4];
J3+=QPZL[3]*10;
J3+=QPZL[2]*100;
J3+=QPZL[1]*1000;
J3+=QPZL[0]*10000;
J7-=J3;
ZL[0]=J7/10000;
J7%=10000;
ZL[1]=J7/1000;
J7%=1000;
ZL[2]=J7/100;
J7%=100;
ZL[3]=J7/10;
J7%=10;
ZL[4]=J7;
write_12864com(0x8b); //定位
write_12864dat(LCD[ZL[0]]); //送顯示
write_12864dat(LCD[ZL[1]]); //送顯示
write_12864dat(0x2e); //送顯示
write_12864dat(LCD[ZL[2]]); //送顯示
write_12864dat(LCD[ZL[3]]); //送顯示
write_12864dat(LCD[ZL[4]]); //送顯示
J7=DJ[2]*ZL[3];
J7+=DJ[2]*ZL[2]*10;
J7+=DJ[2]*ZL[1]*100;
J7+=DJ[2]*ZL[0]*1000;
J7/=10;
J7+=DJ[1]*ZL[3];
J7+=DJ[1]*ZL[2]*10;
J7+=DJ[1]*ZL[1]*100;
J7+=DJ[1]*ZL[0]*1000;
J7/=10;
J7+=DJ[0]*ZL[3];
J7+=DJ[0]*ZL[2]*10;
J7+=DJ[0]*ZL[1]*100;
J7+=DJ[0]*ZL[0]*1000;
ZJ[0]=J7/10000;
J7%=10000;
ZJ[1]=J7/1000;
J7%=1000;
ZJ[2]=J7/100;
J7%=100;
ZJ[3]=J7/10;
J7%=10;
ZJ[4]=J7;
write_12864com(0x9b); //定位
i=ZJ[0];
i=LCD[i];
write_12864dat(i); //送顯示
i=ZJ[1];
i=LCD[i];
write_12864dat(i); //送顯示
i=ZJ[2];
i=LCD[i];
write_12864dat(i); //送顯示
i=ZJ[3];
i=LCD[i];
write_12864dat(i); //送顯示
write_12864dat(0x2e); //顯示點(diǎn)
i=ZJ[4];
i=LCD[i];
write_12864dat(i); //送顯示
P2=0xf0;
delay(1);
}
J2=JP();
if(J6>2){J6=0;}
if(J2<0x40)
{
J2-=0x30;
DJ[J6]=J2;
J2=0xff;
J6++;
}
else
{
switch(J2)
{
case 0x41:P2=0xf0;while(P2==0xf0);J2=0xff;break; //按下A鎖定界面
case 0x42:J2=0xff;break; //解除鎖定
case 0x43:J1=ReadCount(); //去皮
J3=((J1-8388608)/150)-11;
QPZL[0]=(J3/10000)%10;
QPZL[1]=(J3/1000)%10;
QPZL[2]=(J3/100)%10;
QPZL[3]=(J3/10)%10;
QPZL[4]=J3%10;
J2=0xff;
break;
case 0x44:DJ[0]=0;DJ[1]=0;DJ[2]=0;J6=0;J2=0xff;break; //單價(jià) 復(fù)位
case 0x45:QPZL[0]=0;QPZL[1]=0;QPZL[2]=0;QPZL[3]=0;QPZL[4]=0;J2=0xff;break; //重量復(fù)位
case 0x46:DJ[0]=0;DJ[1]=0;DJ[2]=0;J6=0;QPZL[0]=0;QPZL[1]=0;QPZL[2]=0;QPZL[3]=0;QPZL[4]=0;J2=0xff;break; //單價(jià) 重量 復(fù)位
default:break;
}
}
write_12864com(0x93);
i=DJ[0];
i=LCD[i];
write_12864dat(i);
i=DJ[1];
i=LCD[i];
write_12864dat(i);
write_12864dat(0x2e);
i=DJ[2];
i=LCD[i];
write_12864dat(i);
}
}
復(fù)制代碼
作者:
龍道科技
時(shí)間:
2015-3-25 08:58
不錯(cuò)啊,謝謝分享
作者:
酷爺IQ
時(shí)間:
2015-5-10 21:58
LZ 有沒(méi)有電路圖,有點(diǎn)路途就更好了
作者:
wang215322
時(shí)間:
2015-5-12 18:59
很好的學(xué)習(xí)資料,謝謝分享
作者:
shusy41
時(shí)間:
2015-5-29 16:28
樓主ad轉(zhuǎn)換程序是不是有點(diǎn)問(wèn)題啊 剛開(kāi)始不是0 哦
作者:
weiliang
時(shí)間:
2015-7-12 00:53
有仿真的圖么???求資源,謝謝你。
作者:
weiliang
時(shí)間:
2015-7-12 01:14
樓主有沒(méi)有仿真的電路圖,
作者:
panamatw
時(shí)間:
2015-7-24 09:10
很好的參考資料,謝謝分享,如有電路圖更好
作者:
stewart_leung
時(shí)間:
2015-8-9 18:34
樓主,放教程啊
作者:
mhx321
時(shí)間:
2015-10-29 01:31
太好了,一直想弄個(gè)電子稱,謝謝樓主
作者:
abc15236617243
時(shí)間:
2016-1-9 17:29
誰(shuí)有量清杯的程序啊
作者:
紫罌粟
時(shí)間:
2016-3-17 14:23
LZ,有沒(méi)有圖。糠奖憬o下嗎?
作者:
weekend
時(shí)間:
2016-3-20 10:56
樓主,我在做相關(guān)的畢業(yè)設(shè)計(jì),能放教程出來(lái)么
作者:
czq18942434756
時(shí)間:
2016-3-22 20:30
有仿真圖嗎?
作者:
harly2200
時(shí)間:
2016-3-27 01:12
學(xué)習(xí)了,頂起
作者:
xuliling
時(shí)間:
2016-4-18 15:05
樓主厲害哦!學(xué)習(xí)了!謝謝分享!
作者:
fbzsn
時(shí)間:
2016-6-12 12:28
“case 0x41:P2=0xf0;while(P2==0xf0);J2=0xff;break; //按下A鎖定界面
case 0x42:J2=0xff;break; //解除鎖定” 怎樣鎖定界面?請(qǐng)介紹下原理,謝謝!
作者:
噠噠帥
時(shí)間:
2016-7-25 16:58
樓主方便給一下仿真圖嗎
作者:
清風(fēng)服兩岸
時(shí)間:
2016-7-27 21:49
剛學(xué)習(xí),用HX711做的
作者:
我愛(ài)小朋
時(shí)間:
2016-7-27 22:13
lz 有沒(méi)有原理圖啊 給一個(gè) 拜謝
作者:
清風(fēng)服兩岸
時(shí)間:
2016-7-27 23:42
不是1602顯示的嗎??
作者:
我愛(ài)小朋
時(shí)間:
2016-7-28 00:35
請(qǐng)問(wèn)你的A/D模塊是HX711嗎?還是別的
作者:
hxlywl
時(shí)間:
2016-7-28 07:22
很好,值得學(xué)習(xí)
作者:
pppaz
時(shí)間:
2016-7-28 07:57
謝謝樓主大人的分享
作者:
jinzhe
時(shí)間:
2016-9-19 15:16
感謝 感謝 感謝 非常感謝
作者:
lszmin
時(shí)間:
2016-10-11 13:01
很好的參考資料,謝謝分享,如有電路圖更好
作者:
2gy88yhs
時(shí)間:
2016-10-11 17:46
很好的學(xué)習(xí)資料,謝謝分享
作者:
5551
時(shí)間:
2016-10-13 19:48
兄弟有電路圖嗎
作者:
sffhhjkku
時(shí)間:
2016-11-24 10:52
可以幫助哈我嗎 樓主
作者:
bbkk
時(shí)間:
2016-11-28 18:31
樓主再好把電路圖也上傳, 大家也學(xué)習(xí)一下。
作者:
秋雨VS寂寞
時(shí)間:
2016-11-29 23:44
厲害理解啊
作者:
sxdz86
時(shí)間:
2016-12-7 08:11
有原理圖嗎
作者:
hangmw
時(shí)間:
2016-12-7 10:16
LZ 有電路圖嗎?
作者:
xiaowu123
時(shí)間:
2016-12-15 15:22
好棒的設(shè)計(jì),很清晰
作者:
lehigh
時(shí)間:
2016-12-20 13:08
感謝分享,學(xué)習(xí)了
作者:
小51hei56565
時(shí)間:
2017-4-1 14:54
感謝分享
作者:
極地之光
時(shí)間:
2017-4-12 17:43
有原理圖嗎?我想?yún)⒖家幌隆?hr noshade size="2" width="100%" color="#808080">
作者:
519762768
時(shí)間:
2017-4-12 22:00
值得學(xué)習(xí)一段時(shí)間了,感謝樓主的分享
作者:
WE1866
時(shí)間:
2017-4-13 14:13
不錯(cuò)啊,謝謝分享
作者:
WE1866
時(shí)間:
2017-4-13 20:00
謝謝真不錯(cuò)
作者:
1401070065
時(shí)間:
2017-4-25 00:26
贊。。。。。。。。。。。。。
作者:
黑boy
時(shí)間:
2017-4-26 15:14
挺好 對(duì)于做這個(gè)電子秤的有幫助
作者:
linnyshow
時(shí)間:
2017-4-26 19:05
有沒(méi)有電路圖
作者:
fefen0
時(shí)間:
2017-5-2 14:12
給個(gè)原理圖啊。
作者:
zs3945
時(shí)間:
2017-5-22 00:47
為什么我一接上傳感器就顯示亂碼了
作者:
w515748522
時(shí)間:
2017-5-26 17:20
不錯(cuò)不錯(cuò),謝謝分享
作者:
adls
時(shí)間:
2017-5-27 08:31
很好的參考資料,謝謝分享,如有電路圖更好
作者:
fjc1979
時(shí)間:
2017-6-16 12:36
mhx321 發(fā)表于 2015-10-29 01:31
太好了,一直想弄個(gè)電子稱,謝謝樓主
太好了,一直想弄個(gè)電子稱,謝謝樓主
作者:
WangYM68
時(shí)間:
2017-6-30 11:08
很好的學(xué)習(xí)資料,謝謝分享
作者:
晴楓
時(shí)間:
2017-7-26 13:03
剛好需要
作者:
18829298431
時(shí)間:
2017-7-31 17:27
真心不錯(cuò)
作者:
lesson18
時(shí)間:
2017-9-2 21:14
好利害啊,程序大嗎/
作者:
華南摩爾
時(shí)間:
2017-9-4 20:09
學(xué)習(xí)了
作者:
柚子喲喲喲
時(shí)間:
2017-9-7 15:04
樓主,有沒(méi)有仿真圖?謝謝樓主啊
作者:
返還擊
時(shí)間:
2018-2-1 16:31
沒(méi)有讀數(shù)穩(wěn)定的判斷嗎,想探討下用什么濾波合適啊
作者:
xbalsknx
時(shí)間:
2018-5-5 17:55
很不錯(cuò)
作者:
菊次郎的夏天
時(shí)間:
2018-5-6 11:51
額,參考一下,謝謝
作者:
zhaoy
時(shí)間:
2018-5-18 15:27
有仿真圖嗎
作者:
碧海濤聲
時(shí)間:
2018-5-29 08:38
高手,謝謝分享
作者:
碧海濤聲
時(shí)間:
2018-5-29 08:40
高手,謝謝分享
作者:
mtk1625
時(shí)間:
2018-6-29 17:16
有完整程序嗎?
作者:
hei0
時(shí)間:
2018-7-3 17:26
還是12864的好
作者:
王文文
時(shí)間:
2019-4-23 16:48
哪位大神有原理圖啊
作者:
smile小寶
時(shí)間:
2019-5-24 22:14
正好要學(xué)習(xí)一下,謝謝分享
作者:
星星之火可以燎
時(shí)間:
2019-6-27 11:53
支持,有學(xué)習(xí)意義
作者:
星星之火可以燎
時(shí)間:
2019-6-27 11:53
學(xué)習(xí)一下
作者:
cgg547100632
時(shí)間:
2019-6-28 08:36
很好很好多交流
作者:
hellowC8051
時(shí)間:
2019-7-18 11:28
不錯(cuò)啊,謝謝分享
作者:
lijihong_2018
時(shí)間:
2019-11-13 11:20
不錯(cuò),學(xué)習(xí)一下
作者:
rayin
時(shí)間:
2020-11-15 16:20
不錯(cuò),值得學(xué)習(xí)。51hei有你更精彩!!
作者:
51giao
時(shí)間:
2020-12-28 21:17
LZ 有沒(méi)有電路原理圖 小白上路剛好要用到電子秤設(shè)計(jì) 謝謝啦
作者:
劉工程
時(shí)間:
2021-1-12 15:33
稱重組件用啥?準(zhǔn)確度如何?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1