完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
#include
#include #include #define uchar unsigned char #define uint unsigned int #define nop() _nop_() #define disdata P0 #include typedef unsigned char U8; typedef unsigned int U16; #define uchar unsigned char #define uint unsigned int ***it tem = P1^0 ; U8 U8FLAG,U8temp; U8 shidu_shi,shidu_ge,wendu_shi,wendu_ge; U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp; U8 U8comdata; void delay1(uint z) { uint x,y,i; for (i=6;i>0;i--){ for(x=z;x>0;x--) for(y=220;y>0;y--);}} void Delay_10us(void) { uint i; for(i=6;i>0;i--){ U8 i; i--; i--; i--; i--; i--; i--; } } void COM(void) { U8 i; for(i=0;i<8;i++) { U8FLAG=2; while((!tem)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(tem)U8temp=1; U8FLAG=2; while((tem)&&U8FLAG++); if(U8FLAG==1)break; U8comdata<<=1; U8comdata|=U8temp; } } void RH(void) { tem=0; delay1(34); tem=1; Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); tem=1; if(!tem) { U8FLAG=2; while((!tem)&&U8FLAG++); U8FLAG=2; while((tem)&&U8FLAG++); COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; tem=1; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+ U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; } shidu_shi=U8T_data_H/10; shidu_ge=U8T_data_H%10; wendu_shi=U8RH_data_H/10; wendu_ge=U8RH_data_H%10; }} ***it gang = P1^3 ; ***it swch1 = P1^5; ***it swch2 = P1^6; ***it swch3 = P1^7; ***it BEEP = P3^3; ***it Key1 = P3^5; ***it Key2 = P3^6; ***it Key3 = P3^7; ***it Key4 = P3^0; ***it Key5 = P3^1; ***it LED1=P2^0; ***it LED2=P2^1; // ***it LCD_RS = P2^2; //***it LCD_RW = P2^3; ***it LCD_EN = P2^4; ***it LED3=P2^5; ***it LED4=P2^6; ***it LED5=P2^7; ***it clkLED=P3^4; uint data dis[4]={0x00,0x00,0x00,0x00}; uchar code table[]="0123456789TMPCRH%"; uchar code dis1[] = {" WELCOME USE "}; uchar code dis2[] = {" Air cleaner "}; uchar code dis3[] = {" Air cleaner "}; uchar code dis4[] = {"Tvoc: . Wet: "}; uchar code dis5[] = {"Wind Speed: "} ; uchar code dis6[] = {"Uvl: Esp: "} ; uchar code dis7[] = {"On "} ; uchar code dis8[] = {"Off "} ; uchar code dis9[] = {"Weak"} ; uchar code dis10[] = {"Gale"} ; uchar code dis11[] = {"shutdown "} ; uchar code dis12[] = {" . Mins later"} ; #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; unsigned char rSecondCount; unsigned char rMinuteCount; uint ad,bd,temp,w; uchar deng1,deng2,deng3; uchar change,change1; uchar CLKcs,CLKxs; uint CLK,CLKleft; void delay(int ms) { while(ms--) { uchar i; for(i=0;i<250;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } void beep() {uchar i; for (i=0;i<3;i++) { BEEP=0; delay(10); BEEP=1; }} bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); } void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; delay(3);} void lcd_init() { delay(15); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); delay(5); lcd_wcmd(0x06); delay(5); lcd_wcmd(0x01); delay(5); } void lcd_pos(uchar pos) { lcd_wcmd(pos | 0x80); delay(1);} show_value(uint ad_data) { dis[2]=ad_data/51; dis[2]=dis[2]+0x30; dis[3]=ad_data%51; dis[3]=dis[3]*10; dis[1]=dis[3]/51; dis[1]=dis[1]+0x30; dis[3]=dis[3]%51; dis[3]=dis[3]*10; dis[0]=dis[3]/51; dis[0]=dis[0]+0x30; } CLKshow(uint CLK) {dis[3]=CLK/1000; dis[3]=dis[3]+0x30; dis[2]=CLK%1000/100; dis[2]=dis[2]+0x30; dis[1]=CLK%100/10; dis[1]=dis[1]+0x30; dis[0]=CLK%10; dis[0]=dis[0]+0x30; } void init_timer0() { TMOD |=0x01; TH0 = 0x03; TL0 = 0x9c; EA = 1; ET0 = 1; } void stc_ad() { uchar k,l; uint m=0,n=0; ADC_CONTR=ADC_CONTR|0x80; delay(2); P1ASF=P1ASF|0x04; delay(2); ADC_CONTR=0xe2; delay(2); for (k=0;k<5;k++) {ADC_CONTR=0XEA; nop(); nop(); nop(); nop(); nop(); nop(); nop(); delay(2); ADC_CONTR=ADC_CONTR&0xe7; ad=ADC_RES ; P1ASF=P1ASF&0xfb; delay(2); m=m+ad; } ad=m/5; delay(100); P1ASF=P1ASF|0x01; delay(2); ADC_CONTR=0xe1; delay(2); for (l=0;l<5;l++) {ADC_CONTR=0XE9; nop(); nop(); nop(); nop(); nop(); nop(); delay(2); ADC_CONTR=ADC_CONTR&0xe7; bd=ADC_RES; P1ASF=P1ASF&0xfe; n=n+bd; } bd=n/5; delay(200); } void LED(uint ad) { if(ad>0x1A) { if(ad>0x99) {delay(20);LED5=0;LED4=0;LED3=0;LED2=0;LED1=0;} else if(ad>0x66) {delay(20);LED1=0;LED2=0;LED3=0;LED4=0;LED5=1; } else if (ad>0x4d) {delay(20);LED5=1;LED4=1;LED1=0;LED2=0;LED3=0;} else if (ad>0x33) {delay(20);LED5=1;LED4=1;LED3=1;LED1=0;LED2=0;} else {delay(20);LED5=1;LED4=1;LED3=1;LED2=1;LED1=0;} } else {delay(20);LED5=1;LED4=1;LED3=1;LED2=1;LED1=1; } } void codeL(uchar X,uchar code *ddd) { uchar i; lcd_pos(X); for(i=0;i<4;i++) { lcd_wdat(ddd); delay(5); } } void codeX(uchar X,uchar code *ddd)//在X位置显示ddd数组【i】的值 { uchar i; lcd_pos(X); for(i=0;i<15;i++) { lcd_wdat(ddd); delay(5); } } void CLKabc() //开启定时 { while (!TR0){TR0=1;} } void CLK_show() //定时显示 { lcd_wcmd(0x01); //lcd显示格式设置 CLKleft=CLK-rMinuteCount;//剩下时钟数 CLKshow(CLKleft); codeX(0x00,dis11); //"shutdown " codeX(0x40,dis12);// " . Mins later" if(dis[3]!='0'){ lcd_pos(0x40); lcd_wdat(dis[3]);} if(dis[2]!='0'){ lcd_pos(0x41); lcd_wdat(dis[2]);} lcd_pos(0x42); lcd_wdat(dis[1]); lcd_pos(0x44); lcd_wdat(dis[0]); } void KEY_A() { if (!Key1) { delay(200); if(!Key1) { while (!Key1) {beep();swch1=~swch1; deng1=~deng1;change=1;break;} delay(100);}} if (!Key2) { delay(200); if(!Key2) { while (!Key2) {beep();swch2=~swch2; deng2=~deng2;change=1;break;} delay(50);}} if (!Key3) { delay(200); if(!Key3) { while (!Key3) {beep();swch3=~swch3; deng3=~deng3;change=1;break;} delay(50);}} if (!Key4) { delay(200); if(!Key4) { while (!Key4) {beep();CLKabc();change1=1;//change=1; if(CLK<1200) {CLK=CLK+10;}break;} delay(50);}} if (!Key5) { delay(200); if(!Key5) { while (!Key5) {beep();CLKabc();change1=1; if(CLK<1200) {CLK=CLK+50;}break;} delay(50);}} } void write_dat(uchar x,uchar dat) { lcd_pos(x); delay(5); lcd_wdat(table[dat]); delay(5); } void display(U8 shidu_shi,U8 shidu_ge,U8 wendu_shi,U8 wendu_ge) { write_dat(0x0e,shidu_shi); write_dat(0x0f,shidu_ge); write_dat(0x4e,wendu_shi); write_dat(0x4f,wendu_ge); } void LCDcs () //LCD显示 { codeX(0x00,dis3); //" Air cleaner " codeX(0x40,dis4);// "Tvoc: . Wet: " show_value(ad); //显示ad转换的值 lcd_pos(0x05); lcd_wdat(dis[2]); //pos为显示的位置,dis【】为数据 lcd_pos(0x07); lcd_wdat(dis[1]); lcd_pos(0x08); lcd_wdat(dis[0]); show_value(bd); lcd_pos(0x45); lcd_wdat(dis[2]); lcd_pos(0x47); lcd_wdat(dis[1]); lcd_pos(0x48); lcd_wdat(dis[0]); KEY_A(); display(shidu_shi,shidu_ge,wendu_shi,wendu_ge); //湿度温度的个位十位 } void LCDxs() //LCD显示传感器数据 {if(change==1) { codeX(0x00,dis5); //风速 codeX(0x40,dis6); //"Uvl: Esp: " if (deng2==0) {codeL(0x44,dis7);} // "On " else codeL(0x44,dis8); //"Off " if (deng3==0) {codeL(0x4d,dis7);}// "On " else codeL(0x4d,dis8); //"Off " if (deng1==0) {codeL(0x0c,dis10);}// "Gale" else codeL(0x0c,dis9); change=0;} KEY_A(); } void main() { uchar l; swch1=swch2=swch3=0; deng1=deng2=gang=deng3=0; change=0; LED1=LED2=LED3=LED4=LED5=clkLED=1; lcd_init(); init_timer0(); delay(10); codeX(0,dis1);// //" WELCOME USE " codeX(0x40,dis2);// " Air cleaner " delay (1500); while(1) { while(change==0) { LCDcs(); stc_ad(); RH(); delay(100); LED(ad); KEY_A(); while(change1==1) {CLK_show();delay(6000);change1=0;} } for(l=0;l<100;l++) { LCDxs(); delay(100); KEY_A(); } } } 编译没有出现错误但是不能构建目标会出现 “0x0040d8ec”指令引用的“0x00000000”内存。该内存不能为“written” 不知道怎么解决 跪求解决办法 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
有人有STM8H1K08T连接TM1650的源码吗,可以直接使用的那种,我的代码在烧录之后数码管一直处于熄灭状态
271 浏览 0 评论
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
493 浏览 0 评论
589 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
891 浏览 0 评论
1436 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16931 浏览 31 评论
浏览过的版块 |
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-4 18:21 , Processed in 0.646785 second(s), Total 70, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2046