#include<reg52.h> #include"LCD1602.h" #include<stdio.h> sbit LED = P1^0; sbit buzzer = P2^0; void main(void) { Delay_ms(200); LCD_Init(); char string[6] = {'1','1','4','5','1','4'}; while(1) { LCD_GotoXY(0,0); LCD_Print(string); } }
时间: 2024-01-12 11:02:38 浏览: 27
根据您提供的代码,我注意到您使用了`#include<reg52.h>`来包含8051单片机的头文件,并且还包含了自定义的`LCD1602.h`头文件以及标准的`<stdio.h>`头文件。
在您的`main`函数中,您进行了一些初始化操作,然后定义了一个名为`string`的字符数组,并将其初始化为`{'1','1','4','5','1','4'}`。接下来,您进入了一个无限循环,在循环中使用LCD的相关函数将`string`打印到LCD上。
根据您提供的代码,我没有看到明显的语法错误或变量未定义的问题。但是,可能还有其他存在问题导致目标无法创建。请确保您的编译器正确配置,并且您的环境中已经正确安装了所需的库和头文件。
如果问题仍然存在,请提供更详细的错误信息,以便我可以更好地帮助您解决问题。
相关问题
给出主函数的主要流程步骤:#include "system.h" #include "lcd12864_st7920.h" #include "delay.h" #include <stdio.h> #include "18b20.h" sbit buzzer = P1^3 ; sbit yeweiG =P1^0; sbit yeweiD =P1^1; unsigned char xdata dis0[16];//定义显示区域临时存储数组 unsigned char xdata dis1[16]; unsigned char xdata dis2[16]; unsigned char xdata dis3[16]; unsigned char i; unsigned char ReadTempFlag;//定义读时间标志 int temp1; //温度读取值 float temperature; unsigned long time_20ms=0; //定时器计数 float Sudu =0; //速度值 unsigned int PluNum = 0; //脉冲数 unsigned int disPlu = 0; //脉冲数 bit dealSuduFlag =0; //处理速度标志 float xdata juli=0; //距离 bit disFlag =0;//更新显示 unsigned char yeweiFlag = 'N';//液位标志 void main(void) { Init_Timer0(); //定时器0初始化 UART_Init(); DelayMs(200); //延时有助于稳定 Init_ST7920(); //初始化 ClrScreen(); buzzer =1; // sprintf(dis0,"20%02d-%02d-%02d ",(int)time_buf1[1],(int)time_buf1[2],(int)time_buf1[3],(int)time_buf1[7]);//年月日周 // LCD_PutString(0,1,dis0,16);//显示第时间 // // sprintf(dis0,"%02d:%02d:%02d ",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒 // LCD_PutString(0,2,dis0,16);//显示第时间 // // LCD_PutString(0,3,"起:5元 3元/km ",16); //固定显示价格 // LCD_PutString(0,4,"实际价格",8); // uartSendStr("ready ok !",10); // Ds1302_Write_Time(); while(1) { if(dealSuduFlag == 1) { Sudu=(float)PluNum0.23.6/2; //m/s 20个脉冲为1圈 3s时间进行检测 disPlu = PluNum/2; //转速 PluNum=0; dealSuduFlag=0; juli = juli+Sudu0.2; //公里 } if(disFlag==1) //显示 { disFlag=0; //标志位清零 ReadTempFlag++; //读取温度计时 if(ReadTempFlag >= 3) { ReadTempFlag=0; temp1=ReadTemperature(); //读取温度 temperature=(float)temp10.0625; //温度值转换 } if((yeweiG == 0)&&(yeweiD == 0))//上下液位有水 { yeweiFlag = 'H'; } sprintf(dis0,"液位 %c ",yeweiFlag);//打印 LCD_PutString(0,1,dis0,16);//显示 sprintf(dis1,"温度 %4.1fC 40 ",temperature);//打印 LCD_PutString(0,2,dis1,16);//显示 if((Sudu>1.5)||(temperature>40)||(yeweiFlag=='L')) //异常情况 {buzzer = !buzzer;} } } }
1. 引入所需头文件:system.h、lcd12864_st7920.h、delay.h、stdio.h、18b20.h;
2. 定义引脚及变量:定义蜂鸣器、液位传感器引脚,定义显示区域临时存储数组、温度读取标志、温度读取值、速度值、脉冲数、距离、更新显示标志、液位标志;
3. 初始化定时器0、串口;
4. 清空 LCD 显示屏;
5. 进入无限循环;
6. 如果处理速度标志为1,则计算速度、脉冲数、距离,处理速度标志清零;
7. 如果更新显示标志为1,则更新 LCD 显示,包括液位、温度、异常情况等;
8. 循环结束,回到第5步。
如果写#include <reg51.h>#include <stdio.h>#define LCD1602_DB P0sbit LCD1602_RS = P2^6;sbit LCD1602_RW = P2^5;sbit LCD1602_E = P2^7;#define LED P1#define BUZZER P3^7void delay(unsigned int t){ unsigned int i, j; for(i = 0; i < t; i++) for(j = 0; j < 125; j++);}void LCD1602_WriteCmd(unsigned char cmd){ LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DB = cmd; LCD1602_E = 1; delay(1); LCD1602_E = 0; delay(1);}void LCD1602_WriteData(unsigned char dat){ LCD1602_RS = 1; LCD1602_RW = 0; LCD1602_DB = dat; LCD1602_E = 1; delay(1); LCD1602_E = 0; delay(1);}void LCD1602_Init(){ LCD1602_WriteCmd(0x38); LCD1602_WriteCmd(0x0c); LCD1602_WriteCmd(0x06); LCD1602_WriteCmd(0x01);}void LCD1602_Clear(){ LCD1602_WriteCmd(0x01);}void LCD1602_SetCursor(unsigned char x, unsigned char y){ unsigned char addr; if(y == 0) addr = 0x80 + x; else addr = 0xc0 + x; LCD1602_WriteCmd(addr);}void UART_Init(){ TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; SM0 = 0; SM1 = 1; REN = 1;}unsigned char UART_Receive(){ while(!RI); RI = 0; return SBUF;}void UART_Send(unsigned char dat){ SBUF = dat; while(!TI); TI = 0;}void main(){ unsigned char password[4] = {'1', '2', '3', '4'}; unsigned char input[4]; unsigned char i, j; unsigned char correct = 0; unsigned char tries = 0; LCD1602_Init(); UART_Init(); while(1) { LCD1602_Clear(); LCD1602_SetCursor(0, 0); LCD1602_WriteData('P'); LCD1602_WriteData('l'); LCD1602_WriteData('e'); LCD1602_WriteData('a'); LCD1602_WriteData('s'); LCD1602_WriteData('e'); LCD1602_WriteData(' '); LCD1602_WriteData('E'); LCD1602_WriteData('n'); LCD1602_WriteData('t'); LCD1602_WriteData('e'); LCD1602_WriteData('r'); LCD1602_WriteData(' '); LCD1602_WriteData('P'); LCD1602_WriteData('a'); LCD1602_WriteData('s'); LCD1602_WriteData('s'); LCD1602_WriteData('w'); LCD1602_WriteData('o'); LCD1602_WriteData('r'); LCD1602_SetCursor(0, 1); for(i = 0; i < 4; i++) { input[i] = UART_Receive(); LCD1602_WriteData('*'); } for(i = 0; i < 4; i++) { if(input[i] != password[i]) { correct = 0; break; } else { correct = 1; } } if(correct) { LCD1602_Clear(); LCD1602_SetCursor(0, 0); LCD1602_WriteData('W'); LCD1602_WriteData('e'); LCD1602_WriteData('l'); LCD1602_WriteData('c'); LCD1602_WriteData('o'); LCD1602_WriteData('m'); LCD1602_WriteData('e'); LED = 0xff; BUZZER = 0; delay(1000); } else { tries++; if(tries >= 3) { BUZZER = 1; delay(1000); BUZZER = 0; tries = 0; } else { LCD1602_Clear(); LCD1602_SetCursor(0, 0); LCD1602_WriteData('P'); LCD1602_WriteData('l'); LCD1602_WriteData('e'); LCD1602_WriteData('a'); LCD1602_WriteData('s'); LCD1602_WriteData('e'); LCD1602_WriteData(' '); LCD1602_WriteData('T'); LCD1602_WriteData('r'); LCD1602_WriteData('y'); LCD1602_WriteData(' '); LCD1602_WriteData('A'); LCD1602_WriteData('g'); LCD1602_WriteData('a'); LCD1602_WriteData('i'); LCD1602_WriteData('n'); delay(3000); } } }}之前要怎样分析
作文时遇到了写不下去的情况,应该怎么办?
遇到写不下去的情况,可以先停下来,放松一下自己的身心,让自己的思维得到缓解。可以喝口水、走动一下,或者做一些简单的伸展运动,以缓解身体的疲劳感。然后可以重新审视自己的思路,重新整理自己的思路,找到写作的重点和思路,再开始写作。如果还是无法写出来,可以先写下自己的想法和思考,不必拘泥于语言和结构,只要把自己的思路表达出来即可。最后,可以请教老师或者同学,听取他们的意见和建议,以便更好地完善自己的作文。