按关键词阅读: 实现 设计 控制器 供水 智能 单片机 lpc 51 基于 论文 毕业设计
const uchar tab_dot= 0x40,0x79,0x24,0x30,/0.3. 0x19,0x12,0x02,0x78,/4.7. 0x00,0x10, 0 。
26、xff,0x86/8.、9.、mie、E;
uchar T4=1,0,4,5;
uchar tem11=10,10,20,13,11,11,15,21,18,29,11;
uchar T_num=20,sam_n=0;
/*函数声明*/void delay(int n);
/延时函数void init_T0(void);
/定时器T0初始化void disp_seg(uchar n,uchar d_dat);
/显示函数uchar AD_dat(void);
/AD转换函数uchar median(uchar *dat,uchar num_d);
/中值滤波函数float account_res(void);
/ 。
27、电阻值计算函数float shuipingmian(void);
/计算温度函数void adj_t(void);
/调整显示数据函数void disp(void);
/温度显示程序void renovate(void);
/更新显示数据/*主程序*/main()init_T0();
/初始化T0while(1)disp();
/调用显示函数renovate();
/更新显示数据;
/*温度显示函数*/void disp(void)uchar i;
for(i=0;
idati+1) temp=dati;
dati=dati+1;
dati+1=temp;
return(dat(num_d-1)/2);
/取中值 。
28、并返回/*电阻值计算函数*/float account_res(void)uchar temp;
float temp_r;
temp=median(tem,11);
/利用中值法求取中间值temp_r=(float)temp)*150/255+100;
return(temp_r);
/*水平面计算函数*/float shuipingmian(void)float temp1,T_out;
uchar temp2;
temp1=account_res();
temp2=(uchar)temp1;
if(temp2250)T_out=777;
return(T_out);
/*调整显示数据函数*/void adj_ 。
29、t(void) float temp_v;
uint value;
temp_v=10*shuipingmian();
/利用采集数据value=https://www.renrendoc.com/paper/(uint)temp_v;
if(value=https://www.renrendoc.com/paper/7770) /超出测量范围T0=11;
/显示ET1=11;
/显示ET2=11;
/显示ET3=11;
/显示EelseT0=value/1000;
/待显示百位T1=(value%1000)/100;
/待显示十位T2=(value%1000)%100;
/待显示个位T3=(value%1000)%100%10;
/待显示小数if(T0=0x00)T0=10;
if(T1=0)T1=10;
/*定时T0中断程序*/void se 。
30、nddat_T0(void) interrupt 1TH0=0x4c;
/重载定时器初值TL0=0x00;
if(-T_num=0)temsam_n=AD_dat();
/读取温度值存入缓冲区sam_n+;
/温度采样个数加1T_num=20;
/恢复计数值头文件LCD.h/*-12864.hUsing for control LCD 12864-*/#ifndef __12864_h__#define __12864_h__extern void delay_ms_12864(unsigned char t);
extern void delay_12864(unsigned char t);
exte 。
31、rn unsigned char convert(unsigned char dat);
extern void worder_12864(unsigned char dat);
extern void wdata_12864(unsigned char dat);
extern void init_12864(void);
extern void wsingle_12864(unsigned char hang,unsigned char lie,unsigned char dat);
extern void wstring_12864(unsigned char hang,unsigned char 。
32、 lie,unsigned char *dat);
extern void clr_12864();
/extern void draws_12864(uchar *p);
#endif#include#include#define uchar unsigned char#define uint unsigned intsbit rs=P25;
/并行的指令/数据选择信号;串行的片选信号(CS)sbit rw=P26;
/并行的读写选择信号;串行的数据口(SID)sbit en=P27;
/并行的使能信号;串行的同步时钟(CLK)sbit psb=P24;
/并/串行接口选择:H-并行;L-串行sbit r 。
33、es=P22;
/复位 低电平有效uchar num=0,1,2,3,4,5,6,7,8,9;
void delay_ms_12864(uchar t)uchar m,n;
for(m=0;
m1;
n=n7-i;
temp=temp|n;
return temp;
void worder_12864(uchar dat)/给12864写指令rs=0;
/rs为0表示指令 , 为1表示数据rw=0;
/rw为0表示写 , 为1表示读delay_12864(10);
en=1;
delay_12864(10);
P0=convert(dat);
/convert()只用在开发板上 , 若是自己做的正常的12864则去掉之delay_1 。
34、2864(10);
en=0;
void wdata_12864(uchar dat)rs=1;
rw=0;
delay_12864(10);
en=1;
delay_12864(10);
P0=convert(dat);
delay_12864(10);
en=0;
void clr_12864()/清RAMuchar i,j;
worder_12864(0x34);
delay_12864(10);
/打开扩充指令 , 同时关图形显示 , 先写数据for(i=0;
i32;
i+)/先写上半平面worder_12864(0x80+i);
delay_12864(10);
/先写第几行的坐标,每行32个 , 换行加一worder_128 。
35、64(0x80);
delay_12864(10);
/再写从第几列开始写for(j=0;
j8;
j+)worder_12864(0x00);
delay_12864(10);
/把数据全部填上0 , 即清屏worder_12864(0x00);
delay_12864(10);
for(i=0;
i32;
i+)/再写下半平面worder_12864(0x80+i);
delay_12864(10);
worder_12864(0x88);
delay_12864(10);
for(j=0;
j8;
j+)worder_12864(0x00);
delay_12864(10);
worder_12864(0x00);
delay_ 。
36、12864(10);
worder_12864(0x36);
delay_12864(10);
/开图形显示worder_12864(0x30);
delay_12864(10);
/返回字符显示模式 , 同时关图形显示void init_12864()delay_ms_12864(40);
/大于40MS的延时程序psb=1;
稿源:(未知)
【傻大方】网址:/a/2021/0621/0022536230.html
标题:毕业设计|毕业设计(论文)基于51LPC单片机的智能供水控制器的设计与实现( 五 )