電子稱設(shè)計(jì),主要用于菜市場(chǎng)的電子稱,可以設(shè)置價(jià)格,根據(jù)價(jià)格和重量計(jì)算出金額,該設(shè)計(jì)采用了Proteus仿真軟件,采用AT89C51為主控,采用ADC0832芯片來進(jìn)行ADC的轉(zhuǎn)換,采用LCD1602顯示屏顯示,同時(shí)設(shè)計(jì)了矩陣鍵盤用于輸入價(jià)格。設(shè)計(jì)難度3顆星(滿星為5顆)。
首先設(shè)計(jì)電路圖,由于模塊不多,所以接口可以隨意分配,電路仿真圖如下圖1。
設(shè)計(jì)時(shí)需要一步一步進(jìn)行設(shè)計(jì),一般設(shè)計(jì)開始盡量將人機(jī)交互的模塊優(yōu)先級(jí)調(diào)高。這里呢就優(yōu)先對(duì)LCD1602進(jìn)行設(shè)計(jì),驅(qū)動(dòng)程序如下:
void wrc(uint8 c)
{
delay(1);
rs=0;
rw=0;
e=0;
P0=c;
e=1;
delay(1);
e=0;
}
void wrd(uint8 dat)
{
delay(1);
rs=1;
rw=0;
e=0;
P0=dat;
e=1;
delay(1);
e=0;
rs=0;
}
void init()
{
delay(1);
wrc(0x38);
wrc(0x38);
wrc(0x38);
wrc(0x06);
wrc(0x0c);
wrc(0x01);
}
屏幕顯示有了,就可以對(duì)其他模塊進(jìn)行設(shè)計(jì),按鍵和ADC優(yōu)先級(jí)差不多,所以可以隨意的選擇,這里優(yōu)先對(duì)ADC0832模塊進(jìn)行設(shè)計(jì),代碼如下:
unsigned char A_D(unsigned char CH) //AD函數(shù)
{
unsigned char i,adval,test; //定義局部變量并初始化
adval=0x00;
test=0x00;
Clk=0; //clk低電平
DI=1; //DI初始高電平在第一個(gè)時(shí)鐘脈沖的下降沿前保持高電平,表示啟動(dòng)信號(hào)
_nop_();
CS=0; //片選
_nop_();
Clk=1; //clk上升沿,起始位寫入
_nop_();
if(CH==0x00) //選擇通道0
{
Clk=0; //clk低電平
DI=1;
_nop_();
Clk=1; //clk上升沿,通道0的第一位寫入
_nop_();
Clk=0;
DI=1;
_nop_();
Clk=1; //clk上升沿,通道0的第二位寫入
_nop_();
}
else
{
Clk=0;
DI=1;
_nop_();
Clk=1; //clk上升沿,通道1的第一位寫入
_nop_();
Clk=0;
DI=1;
_nop_(); //clk上升沿,通道1的第二位寫入
Clk=1;
_nop_();
}
Clk=0;
DI=1;
for(i=0;i<8;i++)? ? ? ? ? //從高位向低位讀取八位AD值
{
_nop_();
adval<<=1;
Clk=1;
_nop_();
Clk=0;
if(DO)
adval|=0x01;
else
adval|=0x00;
}
for(i=0;i<8;i++)
{
test>>=1; //從低位向高位讀取八位AD值
if(DO)
test|=0x80;
else
test|=0x00;
_nop_();
Clk=1;
_nop_();
Clk=0;
}
if(adval==test) dat=test; //判斷兩個(gè)讀取值是否相等相等就把讀取的數(shù)賦值給DAT
_nop_();
CS=1;
DO=1;
Clk=1;
return dat;
}
最后來對(duì)矩陣鍵盤進(jìn)行設(shè)計(jì),這個(gè)也是比較簡(jiǎn)單的,一般學(xué)過單片機(jī)的都了解,代碼如下:
uint8 keyscan() //按鍵掃描程序
{
uint8 h,l,value;
P1=0x0f;
h=P1&0x0f;
if(h!=0x0f)
{
delay(1);
if(h!=0x0f)
{
h=P1&0x0f;
l=P1|0xf0;
P1=l;
l=P1&0xf0;
h=P1&0x0f;
value=h+l;
}
return value;
}
}
驅(qū)動(dòng)都由了,最后就是實(shí)現(xiàn)邏輯了,由于邏輯代碼有點(diǎn)多,這里就不貼出來了,最后來看一看效果吧!
審核編輯:湯梓紅
-
AT89C51
+關(guān)注
關(guān)注
27文章
543瀏覽量
81088 -
電子稱
+關(guān)注
關(guān)注
1文章
26瀏覽量
12251 -
LCD1602
+關(guān)注
關(guān)注
14文章
607瀏覽量
52527 -
adc0832
+關(guān)注
關(guān)注
3文章
83瀏覽量
28358
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論