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

发布者:和谐共融最新更新时间:2023-03-27 来源: elecfans关键字:AT89C51  ADC0832  LCD1602  电子称 手机看文章 扫描二维码
随时随地手机看文章

电子称设计,主要用于菜市场的电子称,可以设置价格,根据价格和重量计算出金额,该设计采用了Proteus仿真软件,采用AT89C51为主控,采用ADC0832芯片来进行ADC的转换,采用LCD1602显示屏显示,同时设计了矩阵键盘用于输入价格。设计难度3颗星(满星为5颗)。

首先设计电路图,由于模块不多,所以接口可以随意分配,电路仿真图如下图1。

55bc2f0f720faf9e8dcaaa11f70e0267_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;


}


}


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

f91700977987d29befc53e9e901f6495_poYBAGKq3hyAWDVdAAFdTUc-K4s062.png

关键字:AT89C51  ADC0832  LCD1602  电子称 引用地址:采用AT89C51+ADC0832+LCD1602的电子称设计

上一篇:51单片机中断机制(定时器/计数器)
下一篇:AT89S51单片机的复位操作及复位电路设计

推荐阅读最新更新时间:2024-11-04 06:24

pic单片机 DS18B20采样 LCD1602显示
#include 18b20.h #include main.h //--------------产生复位脉冲--------------------// void tx_reset() { ADCON1=0X06; TR ISA 5=0; DQ=1; delay_us2(10,5); //65us while(!DQ); //判断总线是否忙 DQ=0; delay_us2(10,23); //730us } //----------------等待应答脉冲----------------// void tx_wait () { TRISA5=1; //设为输入方式后,DQ被
[单片机]
基于atmega的LCD1602驱动(8线/4线)
//************************************************* // 文件名: 1602.h // 作用: AVR的LCD1602 4/8线驱动 // 说明: 使用GCC编程,1602提供4/8线驱动 // 4线暂时高4位 //*************************************************/ #ifndef __1602_H_ #define __1602_H_ 1 //***头文件调用***// #include avr/io.h #include util/delay.h #include avr/portpins.h #include compat
[单片机]
C51单片机学习笔记之LCD1602
简介 简单说LCD1602这玩意就是液晶显示屏。 引脚功能: 写操作时序 读操作时序 指令集 cgrom表 原理图 代码部分 LCD1602.C #include reg52.h #include intrins.h sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2; #define RS_CLR RS = 0 #define RS_SET RS = 1 #define RW_CLR RW = 0 #define RW_SET RW = 1 #define EN_CLR
[单片机]
C51单片机学习笔记之<font color='red'>LCD1602</font>
AT89C51单片机在无线数据传输中的应用
一般的数字采集系统,是 通过 传感 器将捕捉的现场 信号 转换为电信号,经模/数转换器ADC采样、量化、编码后,为成数字信号,存入数据 存储器 ,或送给微处理器,或通过无线方式将数据发送给接收端进行处理。无线数据传输系统就是 样一套利用无线手段,将采集的数据由测量站发送到主控站的设备。 1 系统组成 系统组成如图1、图2所示。   系统由测量站和主控站两部分组成。测量站主要完成对现场信号的采集、存储,接收遥控 指令并 发送数据。主控站的主要工作是发送遥控指令、接收数据信息、进行数据处理和数据管理、随机显示打印等。 2 AT89C51与数字电台的串行通信 Atmel公司的AT89C51单片机,是一种低功耗、高 性能 的、片
[单片机]
三星电子称现今不存在LED面板液晶电视
  7月29日消息,三星电子中国总部彩电产品营销部长李明旭今日向网易科技披露,目前没有厂家生产LED面板,也不存在用LED面板生产的液晶电视一说。     “目前市场上标称的LED电视,是LED背光源液晶电视的简称。”李明旭介绍,此前液晶电视的背光源是采用CCFI(荧光管)。而换成LED光源后,可使液晶电视色彩更好、亮度更高,并且还能节能、环保、寿命长,还可实现超薄设计。因此,使用LED背光源的液晶电视被认为是液晶电视今后的发展趋势。       由于彩电厂家将LED背光源液晶电视简称为LED电视,致使一些消费者误以为LED电视是使用LED面板生产出来的液晶电视。日前,有媒体报道称,彩电厂家此举涉嫌概念炒作,忽悠消费者。
[家用电子]
基于51单片机的1602+ADC0832烟雾报警系统
本设计基于51单片机,共有ADC0832数模转换模块,1602液晶显示模块,按键控制与声光报警模块4大模块组成!可实现对烟雾浓度的实时监测与反应 之后是仿真目录 下面是部分代码,想要了解,可以下载文末完整附件! //基于1602+ADC0832的烟雾/温度报警系统 //作者:科技小宅神 //创作时间:2020/09/20 //版权:科技小宅神原创!抄袭必究,仅供参考学习! #include reg51.h //包含51单片机寄存器的头文件 #include 1602.h //调用1602.h文件 #include intrins.h //包含_nop_函数定义的头文件 #define uchar unsigned char #
[单片机]
基于51单片机的1602+ADC0832烟雾报警系统
基于AT89C51型单片机的号音自动播放器设计
1 引言 机关、院校日常作息需要计时和号音提示,笔者利用AT89C51型单片机和LM386型音频功率放大器构成了自动计时和号音播放器,成本低,效果好,值得推广。 2 AT89C51的主要特性和引脚功能 AT89C51是带4K字节闪烁可编程可擦除只读存储器(EPEROM)的低电压、高性能CMOS 8位微处理器(俗称单片机)。该单片机与工业标准的MCS-51型机的指令集和输出引脚兼容。AT89C51将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制提供了灵活性高且价格低廉的方案。 AT89C51的主要特性如下: 寿命达1000写/擦循环; 数据保留时间:10年; 全静态工作:0Hz-24MHz
[单片机]
基于<font color='red'>AT89C51</font>型单片机的号音自动播放器设计
自制51单片机常用头文件(LCD1602)
/*-------------------------------------------------------------------------- LCD1602.H The user function is C51. Copyright (c) 1988-2004 Keil Elektronik GmbH sum zhaojun All rights reserved. --------------------------------------------------------------------------*/ #ifndef __LCD1602_H__ #define __LCD1602_H__ /*连接线
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved