ADC0809仿真-LCD602及数码管显示
proteus是一个仿真软件,可以用来仿真电子线路的工作状况,具有多种EDA工具软件(的功能。这些功能是:1.原理布图;2.PCB自动或人工布线;3.SPICE电路仿真;
它可以仿真51系列、AVR、PIC、ARM、STM32等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
以下内容分别对ADC0809在51单片机下,在LCD602及数码管上的仿真例程
1.ADC0809+LCD1602仿真
(1)仿真图(采用的是protues7.8版本)
(2)程序
程序采用模块化编程,以LCD1602及ADC0809作为两个模块,每个模块具有.h和.c文件,分别为1602.c和1602.h,以及0809.c和0809.h,然后通过main.c文件对这两个驱动程序进行调用;
/********main.c***********/
#include "0809.h"
#include "1602.h"
uchar table1[]="LCD1602 TEST OK";
uchar table2[]="U=0.000V";
uint num;
void DelayMS(uint ms)
{uchar i;while(ms--){for(i=0;i<120;i++);}
}
void LCD_Display()
{uint d ;uchar i;Red_0809 ( ) ;d =num * 5000.000 / 256;table2[2]=d/1000+'0';table2[4]=d/100%10+'0';table2[5]=d/10%10+'0';table2[6]=d%10+'0';write_com(0x80);i=0;while(table1[i]!='\0'){write_dat(table1[i++]); }write_com(0x80+0x44);i=0;while(table2[i]!='\0'){write_dat(table2[i++]);}
}
void main()
{TMOD = 0x02;TH0 = 0x14;TL0 = 0x00;IE = 0x82;TR0 = 1;P1 = 0x3f;init();while(1){LCD_Display(); }
}
void Timer0_INT() interrupt 1
{CLK = !CLK;
}/********1602.h***********/
#ifndef __1602_H__
#define __1602_H__
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P0^0;
sbit rw=P0^1;
sbit e=P0^2;
void delay_50us(uchar i);void write_com(uchar com);void write_dat(uchar dat);void init (void);
#endif
/********1602.c***********/
#include "1602.h"
#include "0809.h"
void delay_50us(uchar i)
{uchar a;for (;i>0;i--)for (a=0;a<20;a++);
}void write_com(uchar com)
{rs=0;rw=0;e=0;P2=com;delay_50us(10);e=1;delay_50us(20);e=0;
}
void write_dat(uchar dat)
{rs=1;rw=0;e=0;P2=dat;delay_50us(10);e=1;delay_50us(20);e=0;
}void init (void)
{delay_50us(300);write_com(0x38);delay_50us(300);write_com(0x38);delay_50us(100);write_com(0x38);write_com(0x38);write_com(0x01);write_com(0x06);write_com(0x0c);
}
/********0809.h***********/
#ifndef __0809_H__
#define __0809_H__
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
extern uint num;
sbit OE = P1^0;
sbit EOC = P1^1;
sbit ST = P1^2;
sbit CLK = P1^3;
void Red_0809 ();
#endif
/********0809.c***********/
#include "0809.h"
void Red_0809 ()
{ ST = 0;ST = 1;ST = 0;while(EOC == 0);OE = 1;num = P3;OE = 0;
}
2.ADC0809+数码管仿真
(1)仿真图(采用的是protues7.8版本)
(2)程序
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code LEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
sbit OE = P1^0;
sbit EOC = P1^1;
sbit ST = P1^2;
sbit CLK = P1^3;
void DelayMS(uint ms)
{uchar i;while(ms--){for(i=0;i<120;i++);}
}
void Display_Result(uint d)
{P2 = 0xf7;P0 = LEDData[d%10];DelayMS(5);P2 = 0xfb;P0 = LEDData[d%100/10];DelayMS(5);P2 = 0xfd;P0 = LEDData[d%1000/100];DelayMS(5);P2 = 0xfe;P0 = LEDData[d/1000] +128;DelayMS(5);
}
void main()
{uint num,num1;TMOD = 0x02;TH0 = 0x14;TL0 = 0x00;IE = 0x82;TR0 = 1;P1 = 0x3f;while(1){ST = 0;ST = 1;ST = 0;while(EOC == 0);OE = 1;num1 = P3;OE = 0;num =num1 *5000.000 / 256;Display_Result(num);}
}
void Timer0_INT() interrupt 1
{CLK = !CLK;
}
关注公众号-单片机实例设计,发送关键词:ADC0809,获取。
仿真及程序下载链接
ADC0809仿真-LCD602及数码管显示相关推荐
- 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示
51单片机汽车胎压大气气压测量仪仿真设计_数码管显示 (仿真+程序) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0018 目录标题 51 ...
- 基于51单片机电子秒表倒计时器proteus仿真程序原理图PCB数码管显示语言播报
硬件设计 仿真图1: 计时功能,数码管显示 仿真图2 数码管LCD结合显示:具有多次记录模式: 仿真图3 数码管显示:具有时钟和秒表功能: 仿真图4 数码管显示:具有语音播报功能(这里采用示波器模拟, ...
- 基于51单片机的三路自动数字电压表仿真ADC0809 数码管显示程序设计
硬件设计. 之前讲过的几种数字电压表均是一路输入,今天讲一下多路输入的电压表,显示是采用数码管显示,ADC采用的是TI的ADC0809. 以AT89C51单片机为核心,起着控制作用.系统包括数码管显示 ...
- 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图
数码管显示是每一个单片机初学者都必须学的,而单片机驱动数码管的数字循环显示实验,又是单片机基础中的基础,同时也是学好C语言编程的关键,此实验在硬件上可以弄清楚单片机驱动原理和数码管的显示原理,在软件上 ...
- multisim仿真D触发器设计的模六计数器并在数码管显示0-5
D触发器设计的模6计数器 设计思路从000计数到101,并用卡诺图进行化简,没有输出为摩尔型 用quartus仿真看波形 BCD译码 选择74LS48芯片,将D触发器输出Q2Q1Q0对应接到输入管脚C ...
- Arduino:数码管显示原理详解和Proteus仿真实验
Arduino:数码管显示原理详解和Proteus仿真实验 Proteus仿真 数码管介绍 数码管是半导体发光元件,其基本单元是发光二极管.根据段数,数码管分为七段管和八段管. 八段管比七段管还多一个 ...
- STMCubeMX+Proteus仿真DHT11(数码管显示)
目录 数码管 DHT11简介 精度 量程 DHT11接线图 DHT11引脚说明 STM32CubeMX配置 Keil移植DHT11 核心代码 Proteus仿真 DHT11库 sys.h DHT11. ...
- 【Proteus仿真】按键设置+数码管显示
[Proteus仿真]按键设置+数码管显示 Proteus仿真 采用的是7位共阴数码管段码作为显示,可以用于移植到所需的其他项目上,作为模板或参考程序来使用,其中包含了按键扫描功能的实现,显示和设置功 ...
- 基于51单片机MPX4115的压力测量仪proteus仿真 数码管显示
硬件设计 (末尾附文件) 总体设计方案 本次设计是基于8051单片机的测量与显示.利用传感器将压力转换为电信号后,在经过ADC0832的模数转换器经A/D转换后由单片机进行有效处理,然后用数码管进行显 ...
最新文章
- linux修改密码和宽限天数,Linux chage用法详解:修改用户密码状态
- 【深度学习】眼底图像的视杯和视盘分割解析
- 工作中使用jasmine遇到的一个html element和Component绑定属性失去同步的问题
- BZOJ 2588 Spoj 10628 Count on a tree | 树上主席树
- python冒泡排序函数_python冒泡排序-Python,冒泡排序
- 调用图片文件夹中的任意图片随机显示_hexo框架下,实现图片一键式上传到七牛云
- 优化element ui中的弹框样式
- Sandbox简介和路径获取
- 中鸣机器人走黑线_乐高机器人三光感走黑线
- 问答 | 我适合做软件开发吗?
- 记一次接口压力测试与性能调优
- android手机自带浏览器无法识别apk文件
- matlab line属性
- 授权(mining.authorize)与 auth_stratum函数
- Linux的777权限
- java关于数组的下标越界
- OPTEE学习笔记 - AArch64 RPC(一)
- python使用scrt时间戳画图
- 性能优化系列(一)找出卡顿的元凶 —— 渲染性能优化
- 微信小程序的分包加载
热门文章
- [教程] 手把手教你如何安装Google Play框架服务不闪退
- Linux配置阿里云CentOS镜像仓库及Epel镜像仓库
- 媒体发三板块利空,大盘放量震荡整理
- 牛顿迭代法及其实际应用(附C++代码)
- Microsoft Word的学习
- java代码解压ZIP文件
- 轻轻松松背单词软件测试,MBA联考十佳背单词软件测评报告
- ubuntu下android虚拟机(emulator)出现error: unable to load driver错误
- SAP MM物料与客户主数据的税分类
- 使用xml模板生成word文档