用Proteus仿真了一个电子称设计

科技   2025-01-13 08:02   北京  

大疆无人机、福禄克万用表、小米手机、华为手表等你来!

👆面包板社区DIY活动进行中!

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

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

设计时需要一步一步进行设计,一般设计开始尽量将人机交互的模块优先级调高。这里呢就优先对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; 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; }}

驱动都有了,最后就是实现逻辑了,由于逻辑代码有点多,这里就不贴出来了,最后来看一看效果吧!
作者:二哲科技  来源:https://mbb.eet-china.com/forum/topic/90048_1_1.html

面包板社区DIY活动进行中!👇
https://mbb.eet-china.com/forum/topic/147007_1_1.html




在面包板社区博客/论坛分享你的DIY电子设计,并在发布文章时添加【电子DIY】标签,字数不限,文章通过社区评审,将有丰富奖励送给您!

↓ 扫码参加

【奖项设置】

一等奖(1位):大疆DJI Neo无人机、小米Redmi Note13Pro、海康威视 NAS Mage20PRO...(任选一个)
二等奖(不限人数):福禄克F15B PRO MAX万用表、华为WATCH FIT 2...(任选一个)
三等奖(不限人数):小米手环9 NFC版、小米mini筋膜枪2C、价值¥300电子常用工具大礼包...(任选一个)
参与奖所有参与者均可获得500个E币奖励!
过万奖励若单篇文章/单个视频,在MBB微信号阅读量过万,每篇奖1000个E币奖励(E币可在商城兑换奖品,数据统计截至时间为2025.2.28,仅限前20篇,按文章发布在MBB社区的时间排序,个人累计封顶奖励10000个E币奖励)
E币可以在E币商城(https://estore.eet-china.com/)兑换工程师常用工具及精美礼品!如,镊子、开发板、示波器、工具箱、收纳盒等。

【文章要求】
1、内容要求原创,必须和电子行业相关且首次发布于互联网
2、内容应包括:设计思路、成品展示(如电路原理、功能展示、成本控制方案或清单、代码等)涉及核心知识产权的内容可不展示。
3. 活动期间,同一ID可多次参加,等质量条件下多发作品可累积评分。

活动时间:2024.11.13 - 2025.02.13
点击阅读原文,了解活动详情!

面包板社区
分享电子技术干货,电子工程师福利!EET电子工程专辑、ESM国际电子商情、EDN电子技术设计官方社区。
 最新文章