程序圖A4.pdf_第1頁
程序圖A4.pdf_第2頁
程序圖A4.pdf_第3頁
程序圖A4.pdf_第4頁
程序圖A4.pdf_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

程序圖A4.pdf.pdf 免費(fèi)下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C:UsersYIF ANDesktop醫(yī)用注射液流量控制與檢測系統(tǒng)設(shè)計(jì)程序原格式control.c Page 1 1 #include 2 #include 3 float t; 4 unsigned int key; 5 unsigned int select=0; 6 unsigned int child=0; 7 unsigned int adult=0; 8 unsigned int childspeed=10;/ml/s 9 unsigned int adultspeed=20;/ml/s 10 unsigned int adultt=6; 11 unsigned int chil

2、dt=12; 12 unsigned int vol1,vol2,vol3,vol4=0; 13 unsigned char code num=0123456789; 14 sbit ctl1=P20; 15 sbit clk1=P21; 16 sbit ctl2=P22; 17 sbit clk2=P23; 18 sbit ctl3=P24; 19 sbit clk3=P25; 20 sbit ctl4=P26; 21 sbit clk4=P27; 22 sbit childclk=P32; 23 sbit adultclk=P33; 24 sbit RS = P34; 25 sbit RW

3、 = P35; 26 sbit E = P36; 27 sbit bee=P37; 28 int a=0,b=0,c=0,d=0;/定義個十百千位為0 29 unsigned int yiquan=500;/步進(jìn)電機(jī)轉(zhuǎn)動一圈能排除的藥液ml 30 void weishu(int x,int weizhi); 31 /*延時函數(shù)*/ 32 void delay(unsigned int z) 33 34 unsigned int x,y; 35 for(x=z;x0;x-) 36 for(y=110;y0;y-); 37 38 /*寫命令函數(shù)*/ 39 void LCD_write_cmd(un

4、signed char cmd)/cmd為需要寫的命令 40 41 RS = 0;/命令模式 42 RW = 0;/寫模式 43 P0 = cmd; /將命令內(nèi)容的十六進(jìn)制送到P0端口 44 delay(5); 45 E = 1; 46 delay(5); 47 E = 0;/使能端,高電平有效,使命令送到LCD1602的DB0DB7 48 49 /*寫數(shù)據(jù)函數(shù)*/ 50 void LCD_write_data(unsigned char dat)/dat為需要寫的數(shù)據(jù) 51 52 /while(busytest();/只有當(dāng)busytest()為0(閑)時才跳出循環(huán) PROTEUS模擬不能加

5、 53 RS = 1;/數(shù)據(jù)模式 54 RW = 0;/寫模式 55 P0 = dat;/將數(shù)據(jù)內(nèi)容的十六進(jìn)制送到P0端口 56 delay(5); 57 E = 1; 58 delay(5); 59 E = 0;/使能端,高電平有效,使命令送到LCD1602的DB0DB7 60 61 /*LCD初始化函數(shù)*/ 62 void LCD_init() 63 64 LCD_write_cmd(0 x38); /將設(shè)置“兩行、八位數(shù)據(jù)、5*7的點(diǎn)陣”命令寫入LCD的控制器 65 LCD_write_cmd(0 x0c); /開顯示關(guān)光標(biāo) 66 LCD_write_cmd(0 x06); /光標(biāo)右移指

6、令 67 LCD_write_cmd(0 x01); /清除顯示 68 69 /*LCD寫顯示地址函數(shù)*/ 70 void LCD_write_address(unsigned char x,unsigned char y) 71 72 x/列地址限制在015之間 73 y/行地址限制在01 74 if(y=0) 75 LCD_write_cmd(x|0 x80);/數(shù)據(jù)指針=80+地址變量,寫入列地址 76 else 77 LCD_write_cmd(x+0 x40)|0 x80);/如果是第二行,將列地址寫入 C:UsersYIF ANDesktop醫(yī)用注射液流量控制與檢測系統(tǒng)設(shè)計(jì)程序原格

7、式control.c Page 2 78 79 /*LCD顯示函數(shù)*/ 80 void display(unsigned char x,unsigned char y,unsigned char buf) /x:列 y:行,buf:顯示的字符 81 82 LCD_write_address(x,y);/先將地址寫入 83 LCD_write_data(buf);/再寫入要顯示的數(shù)據(jù) 84 85 /LCD清屏函數(shù) 86 void reset() 87 LCD_write_cmd(0 x01); 88 89 /鍵盤掃描子程序 90 unsigned char getkey() 91 unsigne

8、d char k=19;/如果沒有鍵按下,返回?zé)o效值,此值可為除了0到15外任意值 92 unsigned char h,l,z; 93 staticpressed=0; 94 P1=0 x0f; 95 if(P1!=0 x0f) 96 if(pressed=0) 97 pressed=1; 98 h=P1/保存行掃描狀態(tài) 99 P1=0 xf0;/開始列掃描 100 l=P1/保存列掃描狀態(tài) 101 z=h|l;/得出鍵值 102 switch(z) 103 104 case 0 xe7:k=1;break; 105 case 0 xd7:k=2;break; 106 case 0 xb7:

9、k=3;break; 107 case 0 x77:k=10;break; /開始=10 108 case 0 xeb:k=4;break; 109 case 0 xdb:k=5;break; 110 case 0 xbb:k=6;break; 111 case 0 x7b:k=11;break;/泵號/模式=11 112 case 0 xed:k=7;break; 113 case 0 xdd:k=8;break; 114 case 0 xbd:k=9;break; 115 case 0 x7d:k=12;break;/速度=12 116 case 0 xee:k=13;break;/返回/

10、清除=13 117 case 0 xde:k=0;break; 118 case 0 xbe:k=14;break;/確認(rèn)=14 119 case 0 x7e:k=15;break;/容積=15 120 121 122 123 124 else 125 pressed=0; 126 127 return(k); 128 129 /輸入數(shù)字子程序 130 int number() 131 unsigned char in=0;int n=0;unsigned char index=0;/定義標(biāo)志位為0 132 a=b=c=d=0; 133 display(15,1,0 x20); 134 dis

11、play(14,1,0 x20); 135 display(13,1,0 x20); 136 display(12,1,0 x20); 137 while(1)/開始輸入數(shù)字 138 if(b!=0|c!=0|d!=0)|a!=0)display(15,1,numa); 139 elsedisplay(15,1,0 x20); 140 if(c!=0|d!=0)|b!=0)display(14,1,numb); 141 elsedisplay(14,1,0 x20); 142 if(c!=0|d!=0)display(13,1,numc); 143 elsedisplay(13,1,0 x20

12、); 144 if(d!=0)display(12,1,numd); 145 elsedisplay(12,1,0 x20); 146 in=getkey(); 147 if(in=14) 148 n=(a+(10*b)+(100*c)+(1000*d);break;/按OK得出數(shù)字 跳出循環(huán) 149 if(in=9) 150 switch(index) 151 case 0:a=in;index=index+1;break; 152 case 1:b=a;a=in;index=index+1;break; 153 case 2:c=b;b=a;a=in;index=index+1;break

13、; 154 case 3:d=c;c=b;b=a;a=in;index=index+1;break; C:UsersYIF ANDesktop醫(yī)用注射液流量控制與檢測系統(tǒng)設(shè)計(jì)程序原格式control.c Page 3 155 156 if(in=13) 157 switch(index) 158 case 0:break; 159 case 1:a=0;index=index-1;break; 160 case 2:a=b;b=0;index=index-1;break; 161 case 3:a=b;b=c;c=0;index=index-1;break; 162 case 4:a=b;b=

14、c;c=d;d=0;index=index-1;break; 163 164 165 166 return(int)(n); 167 / 168 /顯示adultspeed 169 void as(int x) 170 display(0,x,a); 171 display(1,x,d); 172 display(2,x,u); 173 display(3,x,l); 174 display(4,x,t); 175 display(5,x,s); 176 display(6,x,p); 177 display(7,x,e); 178 display(8,x,e); 179 display(9,

15、x,d); 180 181 /顯示childspeed 182 void cs(int x) 183 display(0,x,c); 184 display(1,x,h); 185 display(2,x,i); 186 display(3,x,l); 187 display(4,x,d); 188 display(5,x,s); 189 display(6,x,p); 190 display(7,x,e); 191 display(8,x,e); 192 display(9,x,d); 193 194 /顯示mode 195 void md() 196 display(0,0,m); 197

16、 display(1,0,o); 198 display(2,0,d); 199 display(3,0,e); 200 201 void wk(int x,int y) 202 display(x,y,w); 203 display(x+1,y,o); 204 display(x+2,y,r); 205 display(x+3,y,k); 206 207 void wt(int x,int y) 208 display(x,y,w); 209 display(x+1,y,a); 210 display(x+2,y,i); 211 display(x+3,y,t); 212 213 214 /

17、泵選擇程序 215 void beng() 216 unsigned char input=0;unsigned char bengnum=0;unsigned int vol=0;unsigned char mode=0; 217 reset(); 218 while(1) 219 display(0,0,p); 220 display(1,0,u); 221 display(2,0,m); 222 display(3,0,p); 223 weishu(bengnum,1); 224 input=getkey(); 225 if(input=13 227 if(input=13 229 if

18、(input=13break; C:UsersYIF ANDesktop醫(yī)用注射液流量控制與檢測系統(tǒng)設(shè)計(jì)程序原格式control.c Page 4 232 case 2:ctl2=1;break; 233 case 3:ctl3=1;break; 234 case 4:ctl4=1;break; 235 236 bengnum=0; 237 if(input=13 239 if(bengnum=0) 240 display(0,0,p); 241 display(1,0,u); 242 display(2,0,m); 243 display(3,0,p); 244 bengnum=number

19、(); 245 246 if(input=15 248 display(0,0,v); 249 display(1,0,o); 250 display(2,0,l); 251 vol=number(); 252 switch(bengnum) 253 case 1:vol1=vol;break; 254 case 2:vol2=vol;break; 255 case 3:vol3=vol;break; 256 case 4:vol4=vol;break; 257 258 reset(); 259 if(bengnum!=0 261 md(); 262 mode=number(); 263 if

20、(mode=1) 264 switch(bengnum) 265 case 1:clk1=0;break; 266 case 2:clk2=0;break; 267 case 3:clk3=0;break; 268 case 4:clk4=0;break; 269 270 display(15,0,d); 271 display(14,0,l); 272 display(13,0,i); 273 display(12,0,h); 274 display(11,0,c); 275 if(mode=2) 276 switch(bengnum) 277 case 1:clk1=1;break; 27

21、8 case 2:clk2=1;break; 279 case 3:clk3=1;break; 280 case 4:clk4=1;break; 281 282 display(15,0,t); 283 display(14,0,l); 284 display(13,0,u); 285 display(12,0,d); 286 display(11,0,a); 287 if(input=14break; 289 case 2:ctl2=0;break; 290 case 3:ctl3=0;break; 291 case 4:ctl4=0;break; 292 default:bengnum=0

22、; 293 294 break; 295 if(input=13)break; 296 297 reset(); 298 /設(shè)置兒童成人速度程序 299 void set() 300 unsigned char shuru=0;unsigned char xuanze=0;unsigned int sudu=0; 301 reset(); 302 while(1) 303 as(0);cs(1); 304 weishu(childspeed,1); 305 weishu(adultspeed,0); 306 shuru=getkey(); 307 if(shuru=12) 308 reset(

23、); C:UsersYIF ANDesktop醫(yī)用注射液流量控制與檢測系統(tǒng)設(shè)計(jì)程序原格式control.c Page 5 309 md(); 310 xuanze=number(); 311 if(xuanze!=0 313 if(xuanze=2)as(0); 314 sudu=number(); 315 if(xuanze=1)childspeed=sudu; 316 if(xuanze=2)adultspeed=sudu; 317 318 if(shuru=14 319 320 if(shuru=13)break; 321 322 reset(); 323 /數(shù)字個十百千數(shù)計(jì)算顯示 32

24、4 void weishu(int x,int weizhi) 325 326 unsigned int ge,shi,bai,qian=0; 327 qian=x/1000; 328 bai=(x%1000)/100; 329 shi=(x%100)/10; 330 ge=(x%10); 331 if(shi!=0|bai!=0|qian!=0)|ge!=0)display(15,weizhi,numge); 332 if(bai!=0|qian!=0)|shi!=0)display(14,weizhi,numshi); 333 if(bai!=0|qian!=0)display(13,we

25、izhi,numbai); 334 if(qian!=0)display(12,weizhi,numqian); 335 336 /完成警報(bào) 337 void alert1() 338 if(ctl1=0 340 if(adultclk=0 342 if(vol10|vol1=0)bee=1;ctl1=1; 344 if(ctl1=1) 345 wt(2,0);bee=0; 346 if(ctl1=0) 347 wk(2,0); 348 349 void alert2() 350 if(ctl2=0 352 if(adultclk=0 354 if(vol20|vol2=0)bee=1;ctl

26、2=1; 356 if(ctl2=1) 357 wt(12,0);bee=0; 358 if(ctl2=0) 359 wk(12,0); 360 361 void alert3() 362 if(ctl3=0 364 if(adultclk 366 if(vol30|vol3=0)bee=1;ctl3=1; 368 if(ctl3=1) 369 wt(2,1);bee=0; 370 if(ctl3=0) 371 wk(2,1); 372 373 void alert4() 374 if(ctl4=0 376 if(adultclk 378 if(vol40|vol4=0)bee=1;ctl4=1; 380 if(ctl4=1) 381 wt(12,1);bee=0; 382 if(ctl4=0) 383 wk(12,1)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論