前言
这个课设可以说写了四天,因为我接触单片机的时间也不是很长,基础也不是太扎实。写的代码bug真的是太多,绝大多数的时间都画在了找bug上了。但是幸运的是我有一个能够为我传道,授业,解惑的好老师,没有老师的帮忙,这个代码估计到现在也写不好。在实习的过程中也看到了很多厉害的同学,写代码思路很清晰,对于模块的理解也很透彻,写的也很快。我也是比较嫉妒的,希望有一天我的单片机也能学的很透彻。以后我一定要加强对于单片机方面的学习,我还想靠着单片机在一些比赛上拿一些奖项呢。
课设要求
代码呈现
main函数
#include "1602.h"
#include "DHT11.h"
#include "juzhen.h"
void Selay(unsigned char k);
unsigned char TTop=30;
unsigned char TLow=10;
unsigned char RHTop=80;
unsigned char RHLow=30;
extern T_Data_H;
volatile unsigned char KeyValue=0;
unsigned char Temp=0;
extern unsigned char DHT11_Data[17];
unsigned char *DHT11_Dis;
unsigned char SegData[4]={
0};
unsigned char SegSata[4]={
0};
void Init();
unsigned char k=0;
sbit led1=P2^4;
sbit led2=P2^5;
sbit led3=P2^6;
sbit led4=P2^7;
sbit buzzer=P1^0;
void main()
{
unsigned char T;
unsigned char RH;
Init();
LCD_Init(); //液晶初始化
LCD_Cls(); //液晶清屏
LCD_DisplayString(0,0,"S:",2);
LCD_DisplayString(9,0,"X:",2);
LCD_DisplayChar(2,0,TTop/10+0X30);
LCD_DisplayChar(3,0,TTop%10+0X30);
LCD_DisplayChar(11,0,TLow/10+0X30);
LCD_DisplayChar(12,0,TLow%10+0X30);
LCD_DisplayChar(5,0,RHTop/10+0X30);
LCD_DisplayChar(6,0,RHTop%10+0X30);
LCD_DisplayChar(14,0,RHLow/10+0X30);
LCD_DisplayChar(15,0,RHLow%10+0X30);
LCD_DisplayString(4,0,":",1);
LCD_DisplayString(13,0,":",1);
DHT11_Dis = Read_DHT11(); //获取温湿度
LCD_DisplayString(0,1,DHT11_Dis,16); //显示温湿度
while(1)
{
KeyValue=keyscan();
if(KeyValue)
{
Temp = KeyValue;
KeyValue=0;
switch(Temp)
{
case 1:TTop++;if(TTop>99)TTop=10;
LCD_DisplayChar(2,0,TTop/10+0X30);
LCD_DisplayChar(3,0,TTop%10+0X30);
break;
case 2:TTop--;if(TTop<10)TTop=99;
LCD_DisplayChar(2,0,TTop/10+0X30);
LCD_DisplayChar(3,0,TTop%10+0X30);
break;
case 3:TLow++;if(TLow>99)TLow=10;
LCD_DisplayChar(11,0,TLow/10+0X30);
LCD_DisplayChar(12,0,TLow%10+0X30);
break;
case 4:TLow--;if(TLow<10)TLow=99;
LCD_DisplayChar(11,0,TLow/10+0X30);
LCD_DisplayChar(12,0,TLow%10