历史上的今天
今天是: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); ……………………
史海拾趣
|
转载:ouravr 在2007年全国电子设计大赛的F题中,我们考虑到直流电机负载情况,认为所选电机在设计的工作模式下不会产生大于3安的电流,因此,放弃MOS管搭建H桥的常见方法,转而使用298直接驱动电机。我们采用了Ouravr邮购部购买的伺服电机,并对编 ...… 查看全部问答> |
|
目录: 第一篇 模拟电路 实验一 常用电子仪器的使用 实验二 单级低频放大器的设计、安装与调试 实验三 集成运算放大器及其应用 实验四 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协议有多大要用多大的flash/ram来存储,是不是单片机上有这个协议就可以实现网络通信了啊? 如果不行还需要什么啊?… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:04 编辑 当今绚丽多彩的家电市场,产品最受关注的卖点莫过于“智能”、“人性化”、“全自动”等。从用户的角度来看,能配上如此美名的产品,应该是用户只需按触一个“START”开关,不论具体应用的对象 ...… 查看全部问答> |
|
芯片MSP430F47197 SD16_A进行7路采样,32768晶振,OSR256,采样频率fs=32768*32/256=4096/s 采样的交流电压频率为50HZ,我的理解是每秒可采集4096个数据,而交流电每秒有50个周期, 理论上我每个周期的交流电可采集到4096/50=82个数据左右。 &n ...… 查看全部问答> |




