欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機鋼筋調直機源程序-第一個自主編譯C程序
[打印本頁]
作者:
hongniu
時間:
2015-6-23 20:41
標題:
單片機鋼筋調直機源程序-第一個自主編譯C程序
第一個自主設計自主編譯的C程序,雖然比不上人家的那好,但是這是我是實實在在,經過N多失敗,仿真得出的,我珍惜,我還要努力!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led4=P1^0;
sbit led3=P1^1; //第一個自己編寫的c程序,付出了太多,才換回這幾行代碼,源于熱愛!2010年8月8日與天津開發區
sbit led2=P1^2;
sbit led1=P1^3;
sbit inc=P2^0; //加
sbit dec=P2^1; //減
sbit flage=P2^3;//模擬傳感器
sbit start=P2^2;
sbit ctrl=P1^7;
float setdate,setdate1,setdate10,ly=0.10,yi=1;//實際 要設定的浮點數
uint h;
uchar g=0,s=0,bw=0,q=0; //顯示單元 個位、十位、百位、千位
uchar gruang,sgruang;//計算圈數實際圈數
uchar j=0;//實際圈數
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//不帶小數點顯示0~9
uchar code tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //帶小數點顯示0~9
void delay(uint z) //延時程序
{
uint x,a,b;
for (x=0;x<z;x++)
{
for(b=120;b>0;b--)
{
for(a=3;a>0;a--);
}
}
}
void display1() //顯示程序
{
led1=0;
P0=tab[g]; //個
delay(1);
led1=1;
led2=0;
P0=tab1[s];//十
delay(1);
led2=1;
led3=0;
P0=tab[bw]; //百
delay(1);
led3=1;
led4=0;
P0=tab[q]; //千
delay(1);
led4=1;
}
void display2() //顯示程序
{
led1=0;
P0=tab[g]; //個
delay(1);
led1=1;
led2=0;
P0=tab[s];//十
delay(1);
led2=1;
led3=0;
P0=tab[bw]; //百
delay(1);
led3=1;
led4=0;
P0=tab[q]; //千
delay(1);
led4=1;
}
float keyball() //按鍵設置程序對加工料長短設置
{
if(inc==0) //兩位加
{
delay(30);
if(inc==0)
{
if(g>9)
{g=0;
if(s>9)
{g=0;s=0;setdate=0;setdate1=0;setdate10=0;}
else s++,setdate1=0,setdate10=(setdate10+yi);//+1
}
else g++,setdate1=(setdate1+ly); //+0.1
}
}
if(dec==0)
{ //兩位減
delay(30);
if(dec==0)
{
if(g==0)
{g=9;
if(s==0)
{g=9;s=9;}
else s--,setdate10=(setdate10-yi);//-1
}
else g--,setdate1=(setdate1-ly); //-0.1
}
}
setdate=(setdate1+setdate10);
return setdate;//返回按鍵設定值
}
uint divdate(float set) //設定計算函數換算成整數圈
{
float d,e,c;
d=0.034; //0.34米/10
e=set;//設定米數
c=(e/d); //值
h=c;
return h; //返回計算后要轉的圈數
}
uint jiance() //圈數檢測傳感器函數
{
if(flage==0)
{
delay(19);
if(flage==0)
{
if(gruang==j)
{ ; //一旦J=S了證明長度達到了空操作
}
else j++; //不到則J++
}
}
return j; //返回實際圈數
}
void main() //主函數
{ uint a;
P2=0x1f;
while (1)
{
gruang=divdate(keyball());//讀入設定值然后換算成計算圈數
display1();//顯示
if(gruang>0)
{ if(start==0)
{
delay(25);
if(start==0)
{
s=0;
g=0;
while(1)
{
sgruang=jiance();//實際轉的圈數
a=sgruang;
g=a%10;
s=a/10;
bw=a/100;
q=a/1000;
display2();
if(gruang==sgruang)
{
ctrl=0;
delay(100);
ctrl=1;
j=0;//長度到了,j復位
}
else ctrl=1;
}
}
}
}
}
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1