设计分享|单片机电压表模拟
具体实现功能
具体功能:
通过滑动变阻器和ADC0832模块对电压值进行采样,反馈电压值通过数码管进行显示,电压范围为0-5V,如图所示表示电压为3.92V。
设计介绍
单片机介绍
51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。
设计思路
文献研究法:搜集整理相关单片机智能手环系统相关研究资料,认真阅读文献,为研究做准备;
调查研究法:通过调查、分析、具体试用等方法,发现单片机智能手环系统的现状、存在问题和解决办法;
比较分析法:比较不同单片机智能手环系统的具体原理,以及同一类传感器性能的区别,分析单片机智能手环系统的研究现状与发展前景;
软硬件设计法:通过软硬件设计实现具体硬件实物,最后测试各项功能是否满足要求。
设计内容
仿真图
本设计利用protues8.7软件实现仿真设计,具体如图。
Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。另外,protues还能实现PCB的设计,在仿真中也可以与KEIL实现联调,便于程序的调试,且支持多种平台,使用简单便捷。
程序
本设计利用KEIL5软件实现程序设计,具体如图。作为本科期间学习的第一门编程语言,C语言是我们最熟悉的编程语言之一。当然,由于其功能强大,C语言是当前世界上使用最广泛、最受欢迎的编程语言。在单片机设计中,C语言已经逐步完全取代汇编语言,因为相比于汇编语言,C语言编译与运行、调试十分方便,且可移植性高,可读性好,便于烧录与写入硬件系统,因此C语言被广泛应用在单片机设计中。keil软件由于其兼容单片机的设计,能够实现快速调试,并生成烧录文件,被广泛应用于C语言的编写和单片机的设计。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define _rrca_() CY = ACC & 0x01 //产生RRC A指令
#define _rlca_() CY = ACC & 0x80 //产生RLC A指令
sbit bADcs=P1^4;
sbit bADcl=P1^5;
sbit bADda=P1^6;
sbit flag=P1^7;
sbit str=P2^7;
sbit d=P2^6;
sbit clk=P2^5;
bit choose=0;
unsigned char data1;
unsigned char count;
unsigned char cycle;
uint ge,xiao1,xiao2;
unsigned long data2;
//无小数点
const uchar table1[17]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09,0x71,0x31,0x93,0x61,0x13,0x17,0xff};
//有小数点
const uchar table2[17]={0x80,0xec,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08,0x70,0x30,0x92,0x60,0x12,0x16,0xff};
uchar buffer[4]={0x00,0x00,0x00,0x00};
void Delayus(uchar i)
{
while(--i);
}
void display(void)
{
uchar bit_count=0;
uchar table_counter=0;
uchar byte_counter=0;
uchar temp_i=0;
buffer[0]=xiao2;
buffer[1]=xiao1;
buffer[2]=ge;
buffer[3]=0x00;
//led_str_off;//先清零
str=0;
//led_clk_off;
clk=0;
for(byte_counter=0;byte_counter<4;byte_counter++)
{
bit_count=8;
if(byte_counter==2)temp_i=table2[buffer[byte_counter]];
else
temp_i=table1[buffer[byte_counter]];
// nop;
while(bit_count>0)
{
if((temp_i&0x80)==0)
{
//led_d_off;
d=0;
}
else
{
//led_d_on;
d=1;
}
temp_i=(temp_i<<1);
// nop;
//led_clk_on;
clk=1;
// nop;
//led_clk_off;
clk=0;
// nop;
bit_count--;
}
}
//led_str_on;
str=1;
}
/*
void ad()
{
choose=0;
count = 0;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
bADcl = 0;
bADda = 1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平.
bADcl = 1;
bADcl = 0;//pulse 1 down
bADda = 1;
bADcl = 1; bADcl = 0;//pulse 2 down
if(choose == 0)
bADda = 0;
else
bADda = 1;
bADcl = 1; bADcl = 0;//pulse 3 down
bADcl = 1; bADcl = 0;//pulse 4 down
//bADcl = 1;
for(cycle = 8; cycle > 0; cycle-- )
{
bADda = 1;
//bADcl = 0;//pulse
bADcl = 1;
CY = bADda;
_rlca_(); //RRC A
bADcl = 0;//pulse
}
data1= ACC;
for(cycle = 8; cycle > 0; cycle-- )
{
bADda = 1;
bADcl = 1;
CY = bADda;
_rrca_(); //RLC A
bADcl = 0;//pulse
}
//bADcl = 0;//pulse
} */
void ad(void)
{ uchar i;
//data1=0;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
bADcl=0;
bADda=1;
bADcl=1;
bADcl=0;//i down
bADda=1;
bADcl=1;
bADcl=0; // 2 down
bADda=0;
bADcl=1;
bADcl=0; // 3 down
bADda=1;
bADcl=1;
bADcl=0; // 4 down
for(i=8;i>0;i--)
{
data1<<=1;
bADcl=0;
bADcl=1;
if(bADda==1) data1|=0x01;
bADda=1;
}
/* for(i=8;i>0;i--)
{
bADcl=0;
bADcl=1;
} */
bADcs=1;
}
void cal()
{
data2=((ulong)data1*493)/256;
ge=data2/100;
xiao1=(data2%100)/10;
xiao2=data2%10;
}
main()
{
flag=1;
while(1){
ad();
cal();
display();
}}
设计分享|单片机电压表模拟相关推荐
- 设计分享|单片机LED模拟交通灯
目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 单片机LED模拟交通灯实现:东西绿灯2秒,东西黄灯闪烁5次,南北红灯 ...
- 设计分享|单片机多音阶电子琴(汇编)
具体实现功能 具体实现功能: 按下不同的按键分别发出不同的音阶,分别可以发出以下音阶:低3,低4,低5,低6 ,低7:中1,中2,中3;中4,中5,中6,中7:高1,高2,高3,高4. 设计介绍 单片 ...
- 设计分享|单片机8路抢答器
具体实现功能 具体功能: (1)按下"开始"按键,进入20S倒计时,八位选手可以进行抢答: (2)选手按下抢答按键后,数码管显示对应的选手编号,表示抢答成功: (3)抢答成功后,点 ...
- 设计分享|单片机数字温度计
具体实现功能 具体功能: 通过DS18B20测温,通过四位数码管实时显示温度值. 设计介绍 单片机介绍 51单片是一种低功耗.高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器.在 ...
- 设计分享|单片机交通灯仿真(汇编)
具体实现功能 具体功能: (1)东西红灯60S倒计时,南北绿灯40S倒计时,东西向人行道红灯,南北向人行道绿灯: (2)40S后,黄灯闪烁切换,东西右转绿灯20S,左转绿灯20S,南北80S倒计时,右 ...
- 设计分享|单片机抢答器(汇编)
具体实现功能 具体实现功能: 主持人按下抢答按键后,进入抢答模式,8位选手开始抢答,数码管显示抢答成功的选手号码,主持人按键再次按下后复位. 设计介绍 单片机介绍 51单片是一种低功耗.高性能CMOS ...
- 设计分享|单片机直流电机转速控制(汇编)
目录 具体实现功能: 设计介绍 51单片简介 设计思路 设计内容 仿真图(protues8.7) 程序(KeilC51) 具体实现功能: 利用滑动变阻器实现对直流电机转速的控制,仿真实现,汇编语言编写 ...
- 设计分享|单片机花样流水灯
目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 单片机控制两列16个LED实现彩灯展示.P0口控制的8个LED彩灯实 ...
- 设计分享|单片机4*4矩阵键盘控制LED灯
目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 4*4矩阵键盘控制LED显示,第一个按键控制一个LED点亮,第二个按 ...
最新文章
- 如何实现一个元素居中
- 建立Windows Embedded Compact 7开发环境
- 【运营干货】三分钟,读懂互联网运营
- sql server 定时备份数据库
- python-实现栈结构
- 蓝牙mesh_什么是蓝牙mesh,蓝牙mesh特征,蓝牙mesh应用
- (转)C# 解析 json
- mysql数据库事务实现方式_mysql事务的实现原理
- 数字图像处理课程设计
- Mac系统最强虚拟机(支持Big Sur)
- 小米手机连接电脑只能看到部分相片_小米手机连接电脑后怎么看照片
- linux u盘 引导修复工具下载,win7+ubuntu双系统引导修复工具boot repair disk 32+64位ISO版...
- 随笔随想-2022-06-07
- macbook无法打开移动硬盘 为什么mac上显示不了移动硬盘
- 51单片机(四)—— 51单片机仿真芯片的使用
- 富士康计算机类笔试题,富士康笔试题目及答案
- 钉钉开发系列(十一)钉钉网页扫码登录
- IE起始页被改为 http://www.537.com 的解决
- 为祖国庆生, 我们都经历了些什么?
- 机器学习笔记之受限玻尔兹曼机(二)模型表示