历史上的今天
返回首页

历史上的今天

今天是:2025年01月05日(星期日)

正在发生

2021年01月05日 | 单片机空气质量传感器Proteus仿真程序 LCD12864显示

2021-01-05 来源:51hei

用LCD12864实现显示个人信息和空气中颗粒物质量浓度,根据PM2.5质量浓度分析空气质量等级并显示。
1.   第一个屏显示:设计任务名称,姓名,班级,学号后三位;
2.   第二个屏显示:PM1.0、PM2.5、PM10的质量浓度数据(带单位),显示空气质量等级;
3.   空气颗粒物质量浓度数据和学号后三位通过串口从模拟器接收后显示,显示数据可以与模拟器更改值同步;
4. 可通过按键进行屏幕换;
5. 通过串口上传空气质量等级数值给模拟器,等级数值对应为:1-优,2-良,3-轻度污染,4-中度污染,5-重度污染,6-严重污染,模拟器成功接收会自动显示空气质量等级。


单片机源程序如下:

#include

#include "lcd12864.h"

#include "key.h"

#include "delay.h"

#include "uart.h"


void new_flash_dat(void);

void keyscan(void);

void pmsqua_anly(void);

void screen_1(unsigned char a);

void screen_2(unsigned int PM1,unsigned int PM2,unsigned int PM10,unsigned int denji);

void Lcd_cleardat(char hang,char lie,char num);


unsigned char quality=2;

unsigned int pr_PM1_0=0,pr_PM2_5=0,pr_PM10=0,pr_sno=0;

unsigned int PM1_0,PM2_5,PM10,sno;

unsigned char b=104;print_mode=0;


void main()

{               

        uart_init();

        Lcd_Init();

        Lcd_Clear();

        screen_1(sno);

  

        while(1)

        {

                keyscan();

                new_flash_dat();

                pmsqua_anly();

                uart_sendbyte(quality);

        }       

}


void keyscan(void)

{

        if(key1_scan()!=0)

        {

                print_mode++;

                print_mode%=2;

                Lcd_Clear();

                switch(print_mode)

                {

                        case 0:screen_1(sno);break;

                        case 1:screen_2(PM1_0,PM2_5,PM10,quality);break;

                        default:break;

                }

        }

}


void new_flash_dat(void)

{

        if(print_mode==1&&(PM1_0!=pr_PM1_0||PM2_5!=pr_PM2_5||PM10!=pr_PM10))

        {

                Lcd_Clear();

                pmsqua_anly();

                screen_2(PM1_0,PM2_5,PM10,quality);

                pr_PM1_0=PM1_0;

                pr_PM2_5=PM2_5;

                pr_PM10=PM10;

        }

        if(print_mode==0&&pr_sno!=sno)

        {

                Lcd_Clear();

                screen_1(sno);

                pr_sno=sno;

        }

}


void pmsqua_anly(void)

{

        if(PM2_5<35)

                quality=1;

        else if(PM2_5<75)

                quality=2;

        else if(PM2_5<115)

                quality=3;

        else if(PM2_5<150)

                quality=4;

        else if(PM2_5<250)

                quality=5;

        else quality=6;

}

void screen_1(unsigned char a)

{

         char clas[]="17-1";

         Lcd_Show_Chinese(0,16,12);

         Lcd_Show_Chinese(0,32,13);

         Lcd_Show_Chinese(0,48,14);

         Lcd_Show_Chinese(0,64,15);

         Lcd_Show_Chinese(0,80,16);

         Lcd_Show_Chinese(0,96,17);

       

         Lcd_Show_Chinese(2,16,6);

         Lcd_Show_Chinese(2,32,7);

         Lcd_Show_Char(2,48,':');

         Lcd_Show_Chinese(2,56,9);

         Lcd_Show_Chinese(2,72,10);

         Lcd_Show_Chinese(2,88,11);

         

         Lcd_Show_Chinese(4,16,0);

         Lcd_Show_Chinese(4,32,1);

         Lcd_Show_Char(4,48,':');

         Lcd_Show_Chinese(4,56,2);

         Lcd_Show_Chinese(4,72,3);

         Lcd_Show_String(4,88,clas);

         

         Lcd_Show_Chinese(6,16,4);

         Lcd_Show_Chinese(6,32,5);

         Lcd_Show_Char(6,48,':');

         Lcd_Show_Num(6,56,a);

}


void screen_2(unsigned int PM1,unsigned int PM2,unsigned int PM10,unsigned int dengji)

{

         Lcd_Show_String(0,0,"PM1.0:");

         Lcd_Show_Num(0,48,PM1);

         Lcd_Show_String(0,72,"ug/m^3");

       

         Lcd_Show_String(2,0,"PM2.5:");

         Lcd_Show_Num(2,48,PM2);

         Lcd_Show_String(2,72,"ug/m^3");

       

         Lcd_Show_String(4,0,"PM10 :");

         Lcd_Show_Num(4,48,PM10);

         Lcd_Show_String(4,72,"ug/m^3");

       

         Lcd_Show_Chinese(6,16,18);

   Lcd_Show_Chinese(6,32,19);

   Lcd_Show_Char(6,48,':');

   switch(dengji)

   {

                 case 0:Lcd_Show_Chinese(6,56,29);break;

                 case 1:Lcd_Show_Chinese(6,56,20);

                        Lcd_cleardat(6,72,6);break;

                 case 2:Lcd_Show_Chinese(6,56,21);

                        Lcd_cleardat(6,72,6);break;

                 case 3:Lcd_Show_Chinese(6,56,22);

                        Lcd_Show_Chinese(6,72,26);

                        Lcd_Show_Chinese(6,88,27);

                        Lcd_Show_Chinese(6,104,28);break;

                 case 4:Lcd_Show_Chinese(6,56,23);

                        Lcd_Show_Chinese(6,72,26);

                        Lcd_Show_Chinese(6,88,27);

                        Lcd_Show_Chinese(6,104,28);break;

                 case 5:Lcd_Show_Chinese(6,56,24);

……………………



推荐阅读

史海拾趣

DFRobot公司的发展小趣事

在机器人和开源硬件领域取得一定成绩后,DFRobot开始关注教育市场。他们发现,越来越多的学校和教育机构开始引入机器人和编程课程,以培养学生的创新能力和实践能力。于是,DFRobot推出了一系列针对青少年和创客爱好者的教育产品,如机器人套件、3D打印机等,并通过举办各类竞赛和培训活动,吸引更多的学生和教师参与。这一举措不仅拓展了公司的业务领域,也为公司的长期发展奠定了人才基础。

Gulf Semiconductor公司的发展小趣事

为了确保产品质量的稳定性和可靠性,Analytic Instruments Corp不断完善质量管理体系。公司引进了先进的生产设备和检测仪器,建立了严格的质量控制流程。同时,公司还加强了员工的培训和管理,提高了员工的质量意识和操作技能。这些举措使得公司的产品质量得到了客户的高度认可,进一步巩固了市场地位。

Everspin公司的发展小趣事

Everspin公司成立于XXXX年,总部和晶圆厂均位于美国亚利桑那州的钱德勒市。自成立以来,Everspin一直致力于磁阻随机存取存储器(MRAM)技术的研发和商业化。2006年,Everspin成功推出了业界第一款商业化MRAM产品,这一突破性的技术为数据存储领域带来了革命性的变化。

D3 Semiconductor公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,D3 Semiconductor始终保持对新技术、新应用的关注和研究。公司不断投入研发资源,推出了一系列具有创新性的半导体产品,满足了市场的多样化需求。这种持续创新的精神推动了D3 Semiconductor的不断发展,也使其在竞争激烈的电子行业中保持领先地位。

Digilent公司的发展小趣事

作为电子行业的领军企业之一,DIALIGHT始终将技术创新作为公司发展的核心驱动力。公司拥有一支高素质的研发团队和先进的研发设施,不断推出具有创新性和竞争力的LED产品。同时,DIALIGHT还积极与高校、科研机构等合作,共同推动LED照明技术的进步和应用。

Autotrol公司的发展小趣事

Autotrol公司的齿轮传动链产品因其卓越的性能和广泛的应用领域而备受瞩目。公司积极与各行业合作伙伴建立合作关系,将其产品应用于水处理、汽车、采暖通风与空调、翻转广告、医院、农业、照明等多个领域。通过与合作伙伴的紧密合作,Autotrol不仅拓展了市场份额,还提升了品牌影响力。

问答坊 | AI 解惑

直流伺服电机闭环模块实例——电子设计大赛298驱动器

转载:ouravr 在2007年全国电子设计大赛的F题中,我们考虑到直流电机负载情况,认为所选电机在设计的工作模式下不会产生大于3安的电流,因此,放弃MOS管搭建H桥的常见方法,转而使用298直接驱动电机。我们采用了Ouravr邮购部购买的伺服电机,并对编 ...…

查看全部问答>

EasyARM2103教材

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 EasyARM2103教材~~~~~~~~~~~~  …

查看全部问答>

【藏书阁】电子线路实验 方建中

目录: 第一篇 模拟电路 实验一 常用电子仪器的使用 实验二 单级低频放大器的设计、安装与调试 实验三 集成运算放大器及其应用 实验四 OTL低频功率放大器 实验五 音频功率放大器的设计、安装与调试 实验六 集成稳压电源 实验七 LC振荡器 ...…

查看全部问答>

我的原创+小电阻怎么过大电流

电阻是有功率限制的,假若一个50R的电阻是1/8W,那么加在他两端的电压最大不能超过2.5V,此时流过的电流为0.05A,即50mA。那么一个电路要求的输入电阻必须是50R,输入电压却超过了2.5V。而你只能选1/8W电阻,那么可以像下面这样办!     ...…

查看全部问答>

mini2440 ov9650 wince6.0 应用程序 采集图像花屏!!~~~~求高手解答

int rc = 0;      HANDLE hCam = CreateFile (TEXT(\"CIS1:\"), GENERIC_WRITE | GENERIC_READ,          0, NULL, OPEN_EXISTING, 0, NULL); //打开设备句柄     if (hCam == IN ...…

查看全部问答>

帮帮忙急求:谁知道嵌入式精简TCP/IP

    谁知道嵌入式精简TCP/IP协议有多大要用多大的flash/ram来存储,是不是单片机上有这个协议就可以实现网络通信了啊? 如果不行还需要什么啊?…

查看全部问答>

也谈家电产品之模糊控制技术(上)

本帖最后由 jameswangsynnex 于 2015-3-3 20:04 编辑 当今绚丽多彩的家电市场,产品最受关注的卖点莫过于“智能”、“人性化”、“全自动”等。从用户的角度来看,能配上如此美名的产品,应该是用户只需按触一个“START”开关,不论具体应用的对象 ...…

查看全部问答>

跪求一个电源设计

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 最好能够基于51单片机的。  …

查看全部问答>

求解430中断程序处理方法!!急啊

芯片MSP430F47197 SD16_A进行7路采样,32768晶振,OSR256,采样频率fs=32768*32/256=4096/s 采样的交流电压频率为50HZ,我的理解是每秒可采集4096个数据,而交流电每秒有50个周期, 理论上我每个周期的交流电可采集到4096/50=82个数据左右。 &n ...…

查看全部问答>

峰值检测

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 本人刚做的一个峰值检测电路模块,在小频率是还算准确,然而频率跳到1MHZ以上就误差太大,求高人指点·····  …

查看全部问答>