久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機電子秤設計(源程序+lcd12864顯示)
[打印本頁]
作者:
daxiao
時間:
2015-3-22 02:28
標題:
單片機電子秤設計(源程序+lcd12864顯示)
本帖最后由 daxiao 于 2015-3-22 02:31 編輯
//按鍵接P2口
//LCD數據口接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 準雙向I/0 輸入使能(DOUT) / 串行數據輸出
sbit ADSK=P3^1; // 使能AD(PD_SCK) / 串行時鐘輸入
sbit RS=P1^1; //寄存器選擇引腳,搞電平選擇數據寄存器,低電平選擇指令寄存器
sbit RW=P1^2; //讀寫操作使能引腳,高電平使能讀操作,低電平使能寫操作
sbit E=P1^3; //總使能引腳
sbit FMQ=P1^0; //蜂鳴器
//----------------------AD轉換程序--//
unsigned long ReadCount(void) //無參數,返回長整形變量
{
unsigned long Count; //聲明長整形變量Count
unsigned char i; //聲明字符型變量i
ADSK=0; //串行輸入拉低
Count=0; //變量Count置零
while(ADDO); //等待串行輸出拉高
for(i=0;i<24;i++) //接收24個數據和發送24個脈沖
{
ADSK=1; //發送脈沖
Count=Count<<1; //變量左移
ADSK=0; //拉低
if(ADDO)Count++; //讀入數據(高>>低)
}
ADSK=1; //發送第25個脈沖(選擇A通道、128增益。)
Count=Count^0x800000; //按位相異或
ADSK=0; //串行拉低
return Count; //返回
}
//--------------------延時子函數--------//
void delay(unsigned char delayata)
{
uchar i,j;
for(i=0;i<delayata;i++)
{
for(j=0;j<121;j++)
{;}
}
}
//-------------------------------------單鍵掃描子函數-----//
unsigned char JP()
{
unsigned char x=0x00;
bit i=0;
x=P2; //掃描Y坐標
FMQ=0; //響起蜂鳴器
delay(125); //延時去抖動
P2=0x0f;
delay(2);
x+=P2; //掃描X坐標
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; //關閉蜂鳴器
while(i==0) //等待按鍵松開
{
P2=0xf0;
delay(150);
if(P2==0xf0)
{
i=1;
}
else{i=0;}
}
return x; //返回x(ASCII碼)
}
//------------------12864寫指令子函數-----//
void write_12864com(unsigned char com)
{
RS=0;
RW=0;
delay(1);
E=1;
P0=com;
delay(2);
E=0;
delay(1);
}
//------------------12864寫數據子函數-----//
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);
}
//--------------------主函數-------------//
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[]={"單價: 00.0元 "};
code uchar JM3[]={"重量: 00.000KG "};
code uchar JM4[]={"總價: 0000.0元 "};
uchar DJ[3]; //單價
uchar ZL[5]; //重量
uchar QPZL[5]; //去皮時的重量
uchar ZJ[5]; //總價
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]); //顯示 單價: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]); //顯示 總價: 0000.0元
}
P2=0xf0;
while(1)
{
while(P2==0xf0) //但沒有按鍵按下的時候進入,有按鍵按下的時候跳出來
{
J1=ReadCount(); //讀AD值
J3=((J1-8388608)/150)-11; //取值
ZL[0]=(J3/10000)%10; //重量十位
if(ZL[0]>3){FMQ=0;} //超重報警
else{FMQ=1;}
ZL[1]=(J3/1000)%10; //重量個位
ZL[2]=(J3/100)%10; //計算位
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); //顯示點
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; //單價 復位
case 0x45:QPZL[0]=0;QPZL[1]=0;QPZL[2]=0;QPZL[3]=0;QPZL[4]=0;J2=0xff;break; //重量復位
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; //單價 重量 復位
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);
}
}
復制代碼
作者:
龍道科技
時間:
2015-3-25 08:58
不錯啊,謝謝分享
作者:
酷爺IQ
時間:
2015-5-10 21:58
LZ 有沒有電路圖,有點路途就更好了
作者:
wang215322
時間:
2015-5-12 18:59
很好的學習資料,謝謝分享
作者:
shusy41
時間:
2015-5-29 16:28
樓主ad轉換程序是不是有點問題啊 剛開始不是0 哦
作者:
weiliang
時間:
2015-7-12 00:53
有仿真的圖么???求資源,謝謝你。
作者:
weiliang
時間:
2015-7-12 01:14
樓主有沒有仿真的電路圖,
作者:
panamatw
時間:
2015-7-24 09:10
很好的參考資料,謝謝分享,如有電路圖更好
作者:
stewart_leung
時間:
2015-8-9 18:34
樓主,放教程啊
作者:
mhx321
時間:
2015-10-29 01:31
太好了,一直想弄個電子稱,謝謝樓主
作者:
abc15236617243
時間:
2016-1-9 17:29
誰有量清杯的程序啊
作者:
紫罌粟
時間:
2016-3-17 14:23
LZ,有沒有圖啊?方便給下嗎?
作者:
weekend
時間:
2016-3-20 10:56
樓主,我在做相關的畢業設計,能放教程出來么
作者:
czq18942434756
時間:
2016-3-22 20:30
有仿真圖嗎?
作者:
harly2200
時間:
2016-3-27 01:12
學習了,頂起
作者:
xuliling
時間:
2016-4-18 15:05
樓主厲害哦!學習了!謝謝分享!
作者:
fbzsn
時間:
2016-6-12 12:28
“case 0x41:P2=0xf0;while(P2==0xf0);J2=0xff;break; //按下A鎖定界面
case 0x42:J2=0xff;break; //解除鎖定” 怎樣鎖定界面?請介紹下原理,謝謝!
作者:
噠噠帥
時間:
2016-7-25 16:58
樓主方便給一下仿真圖嗎
作者:
清風服兩岸
時間:
2016-7-27 21:49
剛學習,用HX711做的
作者:
我愛小朋
時間:
2016-7-27 22:13
lz 有沒有原理圖啊 給一個 拜謝
作者:
清風服兩岸
時間:
2016-7-27 23:42
不是1602顯示的嗎??
作者:
我愛小朋
時間:
2016-7-28 00:35
請問你的A/D模塊是HX711嗎?還是別的
作者:
hxlywl
時間:
2016-7-28 07:22
很好,值得學習
作者:
pppaz
時間:
2016-7-28 07:57
謝謝樓主大人的分享
作者:
jinzhe
時間:
2016-9-19 15:16
感謝 感謝 感謝 非常感謝
作者:
lszmin
時間:
2016-10-11 13:01
很好的參考資料,謝謝分享,如有電路圖更好
作者:
2gy88yhs
時間:
2016-10-11 17:46
很好的學習資料,謝謝分享
作者:
5551
時間:
2016-10-13 19:48
兄弟有電路圖嗎
作者:
sffhhjkku
時間:
2016-11-24 10:52
可以幫助哈我嗎 樓主
作者:
bbkk
時間:
2016-11-28 18:31
樓主再好把電路圖也上傳, 大家也學習一下。
作者:
秋雨VS寂寞
時間:
2016-11-29 23:44
厲害理解啊
作者:
sxdz86
時間:
2016-12-7 08:11
有原理圖嗎
作者:
hangmw
時間:
2016-12-7 10:16
LZ 有電路圖嗎?
作者:
xiaowu123
時間:
2016-12-15 15:22
好棒的設計,很清晰
作者:
lehigh
時間:
2016-12-20 13:08
感謝分享,學習了
作者:
小51hei56565
時間:
2017-4-1 14:54
感謝分享
作者:
極地之光
時間:
2017-4-12 17:43
有原理圖嗎?我想參考一下。
作者:
519762768
時間:
2017-4-12 22:00
值得學習一段時間了,感謝樓主的分享
作者:
WE1866
時間:
2017-4-13 14:13
不錯啊,謝謝分享
作者:
WE1866
時間:
2017-4-13 20:00
謝謝真不錯
作者:
1401070065
時間:
2017-4-25 00:26
贊。。。。。。。。。。。。。
作者:
黑boy
時間:
2017-4-26 15:14
挺好 對于做這個電子秤的有幫助
作者:
linnyshow
時間:
2017-4-26 19:05
有沒有電路圖
作者:
fefen0
時間:
2017-5-2 14:12
給個原理圖啊。
作者:
zs3945
時間:
2017-5-22 00:47
為什么我一接上傳感器就顯示亂碼了
作者:
w515748522
時間:
2017-5-26 17:20
不錯不錯,謝謝分享
作者:
adls
時間:
2017-5-27 08:31
很好的參考資料,謝謝分享,如有電路圖更好
作者:
fjc1979
時間:
2017-6-16 12:36
mhx321 發表于 2015-10-29 01:31
太好了,一直想弄個電子稱,謝謝樓主
太好了,一直想弄個電子稱,謝謝樓主
作者:
WangYM68
時間:
2017-6-30 11:08
很好的學習資料,謝謝分享
作者:
晴楓
時間:
2017-7-26 13:03
剛好需要
作者:
18829298431
時間:
2017-7-31 17:27
真心不錯
作者:
lesson18
時間:
2017-9-2 21:14
好利害啊,程序大嗎/
作者:
華南摩爾
時間:
2017-9-4 20:09
學習了
作者:
柚子喲喲喲
時間:
2017-9-7 15:04
樓主,有沒有仿真圖啊?謝謝樓主啊
作者:
返還擊
時間:
2018-2-1 16:31
沒有讀數穩定的判斷嗎,想探討下用什么濾波合適啊
作者:
xbalsknx
時間:
2018-5-5 17:55
很不錯
作者:
菊次郎的夏天
時間:
2018-5-6 11:51
額,參考一下,謝謝
作者:
zhaoy
時間:
2018-5-18 15:27
有仿真圖嗎
作者:
碧海濤聲
時間:
2018-5-29 08:38
高手,謝謝分享
作者:
碧海濤聲
時間:
2018-5-29 08:40
高手,謝謝分享
作者:
mtk1625
時間:
2018-6-29 17:16
有完整程序嗎?
作者:
hei0
時間:
2018-7-3 17:26
還是12864的好
作者:
王文文
時間:
2019-4-23 16:48
哪位大神有原理圖啊
作者:
smile小寶
時間:
2019-5-24 22:14
正好要學習一下,謝謝分享
作者:
星星之火可以燎
時間:
2019-6-27 11:53
支持,有學習意義
作者:
星星之火可以燎
時間:
2019-6-27 11:53
學習一下
作者:
cgg547100632
時間:
2019-6-28 08:36
很好很好多交流
作者:
hellowC8051
時間:
2019-7-18 11:28
不錯啊,謝謝分享
作者:
lijihong_2018
時間:
2019-11-13 11:20
不錯,學習一下
作者:
rayin
時間:
2020-11-15 16:20
不錯,值得學習。51hei有你更精彩!!
作者:
51giao
時間:
2020-12-28 21:17
LZ 有沒有電路原理圖 小白上路剛好要用到電子秤設計 謝謝啦
作者:
劉工程
時間:
2021-1-12 15:33
稱重組件用啥?準確度如何?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美一级欧美三级
|
黄色三级大片
|
欧美日本国产
|
国产成人精品自拍
|
亚洲美女一区
|
国产三级午夜理伦三级
|
久久视频一区
|
欧美日韩一区二区在线
|
亚洲男人av
|
国产精品免费av
|
免费在线黄色网址
|
极品白嫩少妇无套内谢
|
久草福利在线观看
|
中国农村毛片免费播放
|
国产精品久久久国产盗摄
|
欧美日韩不卡
|
九九久久精品视频
|
午夜精品999
|
欧美成人综合
|
97视频免费在线观看
|
成人免费视频一区二区
|
国产一级免费
|
亚洲欧美日韩一区二区
|
国产成人精品在线观看
|
国产传媒在线
|
欧美又粗又长
|
欧美亚洲国产精品
|
成人a视频
|
欧洲精品一区
|
黄色大片在线免费观看
|
亚洲成人免费在线观看
|
国产一区二区三区精品视频
|
亚洲一区二区在线播放
|
黑人操亚洲女人
|
国产精品乱码一区二区三区
|
一级片免费在线观看
|
亚洲最大黄色网址
|
一区二区免费
|
谁有毛片网站
|
成av人片一区二区三区久久
|
91丝袜一区在线观看
|