基于单片机的一氧化碳检测仪的控制系统设计(7)

2018-12-24 12:36

28

void init_cpu() //初始化cPu { EA=1; }

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

TH1=(65536-50000)/256;

TL1=(65536-50000)%6;

TR0=1; TR1=1; TMOD=0x11; TH1=0x3c; TL1=0xb0;

keyval=P1;

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

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

measure_menu[0].menu_count=2; measure_menu[0].display=qr;

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;

//开始测量函数, 确认.

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;

//开始测量函数, 取消.

29

measure_menu[1].subs=NULL;

measure_menu[1].children_menus=NULL; }

//还有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(shuaxin)

//是否需要刷新LCD标志位.

//向上键.

measure_menu[1].parent_menus=main1_menu;

if(user_choosen==0) { } shuaxin=1; user_choosen--; break;

user_choosen=max_item;

{ Clr_Scr(); } }

v oid led_menu_show() {

led_menu_show(); shuaxin=0;

uchar n;

max_item=menu_led->menu_count; if (max_item>=4)

//菜单项为3则表示为主菜单.

30

{ }

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:

}

for(n=0;n

select_item(user_choosen+1); }

}

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

break;

void select_item(uchar n) {

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

}

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

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

31

{

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转换字符

32

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_();


基于单片机的一氧化碳检测仪的控制系统设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:whether is it good for college students to have a part-time

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: