找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2310|回复: 5
打印 上一主题 下一主题
收起左侧

有错误 求改正 STM32单片机ADC DHT11 Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
之前一直找关于STM32的仿真找了几个ADC的都不能用,大概率是因为是时钟的问题然后自己调试了下目前很稳定还加了DHT11加OLED
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


STM32单片机源程序如下:
#include "stm32f10x.h"
#include "LQ12864.h"
#include "adc.h"
#include "dth11.h"
#include "stdio.h"
#include "led.h"
#include "key.h"
int main(void)
{         

        u8 temp = 0, hum = 0;//温度湿度
        u8 motor_sta=0;      //电机运行状态
        u8 key;              //按键值
        u16 ADC=0;
        u16 ADC_flag=500;
        u8 temp_flag=20,hum_flag=60;//阈值
        u8 buf[100] = { 0 };
        u8 sta_buf[20];
        delay_init()        ;
        LCD_Init() ;         
        Adc_Init();
        DHT11_Init();
        Dc_Motor_init();
        KEY_Init();//IO初始化
        while(1)
        {
                DHT11_Read_Data(&temp, &hum);//温湿度读取
                sprintf((char *)buf, "temp:%d----hum:%d", temp, hum);//整数转字符串
                LCD_P6x8Str(0, 0, buf);//字符显示
                ADC=Get_Adc();
                sprintf((char *)buf, "adc:%d", ADC);//整数转字符串
                LCD_P6x8Str(0, 1, buf);//字符显示
                //阈值判断控制
                if(temp>temp_flag)      Dc_Motor_ON();//开启电机
                else if(temp<temp_flag) Dc_Motor_OFF();//关闭电机
                if(ADC>ADC_flag) LCD_P6x8Str(80, 3, "ADC:1");//字符显示
                else if(ADC<ADC_flag) LCD_P6x8Str(80, 3, "ADC:0");//字符显示
                //状态
                motor_sta =GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5);
                sprintf((char *)sta_buf, "MOTOR:%d", motor_sta);//整数转字符串
                LCD_P6x8Str(0, 3, sta_buf);//字符显示
                //温度报警设置
                key=KEY_Scan(0);
                switch(key)
                {
                    case 1: temp_flag++;break;//字符显示//整数转字符串break;
                        case 2: temp_flag--;break;
                    case 3:ADC_flag++;break;
                        case 4:ADC_flag--;break;
                }
                sprintf((char *)sta_buf, "TEMPFLAG:%d", temp_flag);LCD_P6x8Str(0, 5, sta_buf);
        sprintf((char *)sta_buf, "ADC FLAG:%d", ADC_flag);LCD_P6x8Str(0, 6, sta_buf);
        }
}

Keil5代码与Proteus8.8仿真下载,求大神指导如何修改错误: _STM32 DTH11.7z (2.15 MB, 下载次数: 168)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:505629 发表于 2022-5-21 21:40 | 只看该作者
下载的文件和上面的演示不一样。。我是8.13
回复

使用道具 举报

板凳
ID:433038 发表于 2022-5-25 18:13 | 只看该作者
我8.12下载下来ad还是用不了
回复

使用道具 举报

地板
ID:1035603 发表于 2022-6-20 18:47 | 只看该作者
确实,下载下来是温湿度的,上面AD的代码用不了,没有对应的文件
回复

使用道具 举报

5#
ID:228147 发表于 2023-5-9 18:32 | 只看该作者
这个本来就是有错误  楼主来求助 的
回复

使用道具 举报

6#
ID:493026 发表于 2023-7-26 23:47 | 只看该作者
能跑AD的proteus版本是8.9
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表