電子稱設計,主要用于菜市場的電子稱,可以設置價格,根據(jù)價格和重量計算出金額,該設計采用了Proteus仿真軟件,采用AT89C51為主控,采用ADC0832芯片來進行ADC的轉換,采用LCD1602顯示屏顯示,同時設計了矩陣鍵盤用于輸入價格。設計難度3顆星(滿星為5顆)。
首先設計電路圖,由于模塊不多,所以接口可以隨意分配,電路仿真圖如下圖1。

設計時需要一步一步進行設計,一般設計開始盡量將人機交互的模塊優(yōu)先級調高。這里呢就優(yōu)先對LCD1602進行設計,驅動程序如下:
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);
}
屏幕顯示有了,就可以對其他模塊進行設計,按鍵和ADC優(yōu)先級差不多,所以可以隨意的選擇,這里優(yōu)先對ADC0832模塊進行設計,代碼如下:
unsigned char A_D(unsigned char CH) //AD函數(shù)
{
unsigned char i,adval,test; //定義局部變量并初始化
adval=0x00;
test=0x00;
Clk=0; //clk低電平
DI=1; //DI初始高電平在第一個時鐘脈沖的下降沿前保持高電平,表示啟動信號
_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; //判斷兩個讀取值是否相等相等就把讀取的數(shù)賦值給DAT
_nop_();
CS=1;
DO=1;
Clk=1;
return dat;
}
最后來對矩陣鍵盤進行設計,這個也是比較簡單的,一般學過單片機的都了解,代碼如下:
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;
}
}
驅動都由了,最后就是實現(xiàn)邏輯了,由于邏輯代碼有點多,這里就不貼出來了,最后來看一看效果吧!

審核編輯:湯梓紅
-
AT89C51
+關注
關注
27文章
543瀏覽量
81964 -
電子稱
+關注
關注
1文章
26瀏覽量
12408 -
LCD1602
+關注
關注
14文章
607瀏覽量
53234 -
adc0832
+關注
關注
3文章
83瀏覽量
28647
發(fā)布評論請先 登錄
lcd1602+ADC0832電子稱程序和仿真圖
基于89C51+LCD1602+PCF8591有毒氣體濃度報警器仿真與源程序
使用51單片機和ADC0832設計LCD1602顯示數(shù)字電壓表的電路圖和程序

使用89C51單片機實現(xiàn)LCD1602和LCD12864的顯示電路原理圖

使用51單片機和ADC0832應用LCD1602的程序和仿真資料

LCD1602和DS18B20及ADC0832的程序和仿真工程文件免費下載

使用LCD1602和ADC0832實現(xiàn)電子秤的程序和工程文件

51單片機驅動LCD1602顯示原理及例程

51單片機采用ADC0808檢測ADC_LCD1602顯示

51單片機多路測溫報警系統(tǒng)(AT89C51、多個DS18B20、LCD1602)

單片機液晶滾動顯示(AT89C51、LCD1602)

STC89C52_51單片機_LCD1602液晶

評論