单片机解密硬件设计包括如下模块:
n 最小系统模块: STC89C52RC正常工作的最小系统;
n 模拟输入模块:一路光照、一路电压;
n 数字输入模块:两路温度、一路湿度、多个按键;
n 模拟输出模块:一路光照;
n 数字输出模块:一路PWM波控制直流电机、蜂鸣器、多个工作状态指示灯;
n 液晶显示模块:一块12864LCD显示输出;
n 串口通信模块:CH340T模块电路
软件设计包括如下模块:
n 单片机解密C代码:AD采集、数字传感器驱动、DA输出、按键与液晶控制、串口收发处理等
- #include<reg52.h>
- #include<stdio.h>
-
- #define uchar unsigned char
- #define uint unsigned int
- #include"12864.c"
- #include"PCF8591ADDA.c"
- #include"DS18B20.C"
- #include"DTH11.C"
- sbit led0=P1^0;//通信测试灯
- sbit led1=P1^1;
- sbit led2=P1^2;
- sbit led3=P1^3;
- sbit MOTOR=P1^4;
- uchar ren_flag,ren_buff;
- uchar buff[8];
- char *get="Get it.";
- char *sendflag="sendflag";
- unsigned char num; //DA数模输出变量
- unsigned char ADtemp; //定义中间变量
- void serial_init(void) //串口初始化函数
- {
- TMOD=0x20;//00100000
- PCON=0x00;//波特率不加倍
- SCON=0x50;//01010000 方式1,允许接收
- TH1=0xfd; //波特率9600
- TL1=0xfd;
- EA=1;
- ES=1;
- TR1=1;
- ET1=0;
-
- }
- void serial_send(char*parr) //串口数据发送函数
- {
- do
- {
- SBUF=*parr++; //发送数据
- while(!TI); //等待发送完成标志为1
- TI=0; //标志清0
- }while(*parr); //保持循环直到字符为‘\0’
- }