0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用AT89C51+ADC0832+LCD1602的电子称设计

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-06-16 15:39 次阅读

电子称设计,主要用于菜市场的电子称,可以设置价格,根据价格和重量计算出金额,该设计采用了Proteus仿真软件,采用AT89C51为主控,采用ADC0832芯片来进行ADC的转换,采用LCD1602显示屏显示,同时设计了矩阵键盘用于输入价格。设计难度3颗星(满星为5颗)。
首先设计电路图,由于模块不多,所以接口可以随意分配,电路仿真图如下图1。

pYYBAGKq3c6AHViBAAbTsUOfYMU575.png

设计时需要一步一步进行设计,一般设计开始尽量将人机交互的模块优先级调高。这里呢就优先对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优先级差不多,所以可以随意的选择,这里优先对ADC0832模块进行设计,代码如下:

unsigned char A_D(unsigned char CH)              //AD函数

{

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;          //判断两个读取值是否相等相等就把读取的数赋值给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;

}

}

驱动都由了,最后就是实现逻辑了,由于逻辑代码有点多,这里就不贴出来了,最后来看一看效果吧!

poYBAGKq3hyAWDVdAAFdTUc-K4s062.png



审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AT89C51
    +关注

    关注

    27

    文章

    543

    浏览量

    81197
  • 电子称
    +关注

    关注

    1

    文章

    26

    浏览量

    12261
  • LCD1602
    +关注

    关注

    14

    文章

    607

    浏览量

    52583
  • adc0832
    +关注

    关注

    3

    文章

    83

    浏览量

    28402
收藏 人收藏

    评论

    相关推荐

    lcd1602+ADC0832电子称程序和仿真图

    本帖最后由 gk320830 于 2015-3-4 14:22 编辑 lcd1602+ADC0832电子称程序和仿真图
    发表于 06-03 21:48

    LCD1602+LCD12864+89C51显示电路原理图

    LCD1602+LCD12864+89C51显示电路原理图
    发表于 09-18 09:43 1089次下载
    <b class='flag-5'>LCD1602+LCD12864+89C51</b>显示电路原理图

    ADC0832_LCD1602两路电压表程序

    ADC0832+LCD1602两路电压表
    发表于 01-11 16:58 22次下载

    LCD1602电子时钟

    基于51单片机stc89c52的lcd1602电子时钟,欢迎下载交流
    发表于 11-05 16:01 22次下载

    基于89C51+LCD1602+PCF8591有毒气体浓度报警器仿真与源程序

    基于89C51+LCD1602+PCF8591有毒气体浓度报警器 内涵 实物图 原理图 源程序
    发表于 01-11 17:31 23次下载

    使用51单片机和ADC0832设计LCD1602显示数字电压表的电路图和程序

    本文档的主要内容详细介绍的是使用51单片机和ADC0832设计LCD1602显示数字电压表的电路图和程序资料合集免费下载。
    发表于 08-07 08:00 96次下载
    使用<b class='flag-5'>51</b>单片机和<b class='flag-5'>ADC0832</b>设计<b class='flag-5'>LCD1602</b>显示数字电压表的电路图和程序

    使用89C51单片机实现LCD1602LCD12864的显示电路原理图

    本文档的主要内容详细介绍的是使用89C51单片机实现LCD1602LCD12864的显示电路原理图。
    发表于 03-05 08:00 23次下载
    使用<b class='flag-5'>89C51</b>单片机实现<b class='flag-5'>LCD1602</b>和<b class='flag-5'>LCD</b>12864的显示电路原理图

    使用51单片机和ADC0832应用LCD1602的程序和仿真资料

    本文档的主要内容详细介绍的是使用51单片机和ADC0832应用LCD1602的程序和仿真资料。
    发表于 06-30 17:34 60次下载
    使用<b class='flag-5'>51</b>单片机和<b class='flag-5'>ADC0832</b>应用<b class='flag-5'>LCD1602</b>的程序和仿真资料

    LCD1602和DS18B20及ADC0832的程序和仿真工程文件免费下载

      本文档的主要内容详细介绍的是LCD1602和DS18B20及ADC0832的程序和仿真工程文件免费下载。
    发表于 07-24 17:30 31次下载
    <b class='flag-5'>LCD1602</b>和DS18B20及<b class='flag-5'>ADC0832</b>的程序和仿真工程文件免费下载

    使用LCD1602ADC0832实现电子秤的程序和工程文件

    本文档的主要内容详细介绍的是使用LCD1602ADC0832实现电子秤的程序和工程文件。
    发表于 07-24 17:30 22次下载
    使用<b class='flag-5'>LCD1602</b>和<b class='flag-5'>ADC0832</b>实现<b class='flag-5'>电子</b>秤的程序和工程文件

    51单片机驱动LCD1602显示原理及例程

    LCD1602A 可以显示两行字符,一行显示16个;②只能显示数字和字母(5X7的点阵)不能显示汉字;③每个字符之间有间隔;④引脚图2.LCD1602A中文手册 下载3.LCD1602A接线4.
    发表于 11-10 19:51 149次下载
    <b class='flag-5'>51</b>单片机驱动<b class='flag-5'>LCD1602</b>显示原理及例程

    51单片机采用ADC0808检测ADC_LCD1602显示

    51单片机采用ADC0808检测ADC_LCD1602显示系统整体设计具体实现如下代码系统整体设计1)本设计的控制器采用
    发表于 11-17 16:06 38次下载
    <b class='flag-5'>51</b>单片机<b class='flag-5'>采用</b><b class='flag-5'>ADC</b>0808检测<b class='flag-5'>ADC_LCD1602</b>显示

    51单片机多路测温报警系统(AT89C51、多个DS18B20、LCD1602

    51单片机多路测温报警系统(AT89C51、多个DS18B20、LCD1602)一、简介** 此系统主要由AT89C51、多个DS18B20温度模块和
    发表于 11-21 11:06 19次下载
    <b class='flag-5'>51</b>单片机多路测温报警系统(AT<b class='flag-5'>89C51</b>、多个DS18B20、<b class='flag-5'>LCD1602</b>)

    单片机液晶滚动显示(AT89C51LCD1602

    单片机液晶滚动显示(AT89C51LCD1602)一、简介此电路由AT89C51最小系统和LCD1602液晶模块组成。可实现上线垂直滚动、左右滚动和播放暂停。二、执行效果上下滚动左右
    发表于 11-23 16:51 43次下载
    单片机液晶滚动显示(AT<b class='flag-5'>89C51</b>、<b class='flag-5'>LCD1602</b>)

    STC89C52_51单片机_LCD1602液晶

    STC89C52_51单片机_LCD1602液晶简单显示实例显示:Pretty Girl i Love u#include<reg52.h>#define
    发表于 11-23 17:06 20次下载
    STC<b class='flag-5'>89C52_51</b>单片机_<b class='flag-5'>LCD1602</b>液晶