甲醛检测仪软件设计毕业设计 联系客服

发布时间 : 星期日 文章甲醛检测仪软件设计毕业设计更新完毕开始阅读040d6d9032d4b14e852458fb770bf78a65293a99

#include #include #include #include #include

#include /**********初始化CPU************/ void init_cpu() //初始化cPu { EA=1; TR0=1; TR1=1;

TMOD=0x11; TH1=0x3c; TL1=0xb0; }

/*void time1(void) interrupt 3 using 1 {

TH1=(65536-50000)/256;

TL1=(65536-50000)%6; keyval=P1;

} * //初始化CPU结束// void main_menu_initial() //LCD主菜单初始化.// {

main1_menu[0].menu_count=4; //有4个菜单项.//

main1_menu[0].display=measurearray; //定义一个”开始测量“数组// main1_menu[0].subs=NULL;

main1_menu[0].children_menus=measure_menu; //当前菜单子菜单的指针

main1_menu[0].parent_menus=NULL;

…… //还有“数据存储”、“时间设置”……// }

void measure_menu_initial() //“开始测量”菜单设置// {

measure_menu[0].menu_count=2; measure_menu[0].display=qr; //开始测量函数, 确认. measure_menu[0].subs=start_measure_function; //开始测量函数 measure_menu[0].children_menus=NULL; measure_menu[0].parent_menus=main1_menu;

measure_menu[1].menu_count=2;

measure_menu[1].display=qx; //开始测量函数, 取消. measure_menu[1].subs=NULL;

measure_menu[1].children_menus=NULL;

measure_menu[1].parent_menus=main1_menu; }

…… //还有void store_menu_initial()、void time_menu_initial()// void led_menu_pro() { max_item=menu_led->menu_count; switch(keyval) {

case 0: break;

case 1: //向上键. if(user_choosen==0) {

user_choosen=max_item; }

shuaxin=1;

user_choosen--; break; }

…… //“向上”“向下”“确认”“取消”键// if(shuaxin) //是否需要刷新LCD标志位. { Clr_Scr(); shuaxin=0; }

led_menu_show(); }

v oid led_menu_show() {

uchar n;

max_item=menu_led->menu_count;

if (max_item>=4) //菜单项为3则表示为主菜单. {

for(n=0;n<4;n++)

{ draw_bmp(n*2,20,96,0,menu_led[n].display); }

select_item(user_choosen); //标记出当前菜单项. } else {

switch(temp_choosen) { case 0:

draw_bmp(0,20,96,0,measurearray); //“开始测量”数组// break; ……

default: break; }

for(n=0;n

{

draw_bmp((n+1)*2,20,32,0,menu_led[n].display); }

select_item(user_choosen+1); } } void select_item(uchar n) {

draw_bmp(n*2,2,16,0,curflag); }

void start_measure_function(void) //开始测量函数// {main_Menu(); } ……

/*----------------主函数-------------------*/ main() {

init_cpu(); Init_Clock(); init_lcd();

Disp_Img(FirstPage);

delay(2000); //延时// ClockMsg(); Refresh(); delay(2500); Clr_Scr(); main_Menu(); Clr_Scr();

main_menu_initial(); measure_menu_initial(); store_menu_initial(); time_menu_initial();

communication_menu_initial(); while(1)

{ keyval=get_key(); //读键. led_menu_pro(); }

} // 适当延时防止因为不断查忙而耗费大量CUP资源 //

附录三 ADC0832程序

#define uint unsigned int //常量/变量定义//

uchar k,i,j; float xdata lv;

sbit ADCS =P3^1; //ADC0832 chip seclect //接口定义// …… //其它引脚略……

uchar xdata dsw[20]; //存放sprintf转换字符 uchar xdata value[149]; //点阵字符储存 uchar code table[]={ //字符查表

0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*\……};//采集并返回

unsigned int Adc0832(unsigned char channel) //AD{

uchar i=0; uchar j; uint dat=0; uchar ndat=0;

if(channel==0)channel=2; if(channel==1)channel=3; ADDI=1; _nop_(); _nop_();

ADCS=0;//拉低CS端 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 _nop_(); _nop_();

ADCLK=0;//拉低CLK端,形成下降沿1 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 ADDI=channel&0x1; _nop_(); _nop_();

ADCLK=0;//拉低CLK端,形成下降沿2 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 ADDI=(channel>>1)&0x1; _nop_(); _nop_();

ADCLK=0;//拉低CLK端,形成下降沿3

转换,返回结果