欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
16年山東電賽電子稱程序
[打印本頁]
作者:
zzt
時間:
2017-8-7 21:07
標題:
16年山東電賽電子稱程序
這是16年山東電賽電子稱的程序,各方面功能都已經齊全,希望能幫助到大家
所有資料51hei提供下載:
電賽電子稱.zip
(2.43 KB, 下載次數: 43)
2017-8-7 21:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ADDO=P3^0; //51CPU 準雙向I/0 輸入使能(DOUT) / 串行數據輸出
sbit ADSK=P3^1; // 使能AD(PD_SCK) / 串行時鐘輸入
sbit RS=P1^1; //寄存器選擇引腳,搞電平選擇數據寄存器,低電平選擇指令寄存器
sbit RW=P1^2; //讀寫操作使能引腳,高電平使能讀操作,低電平使能寫操作
sbit E=P1^3; //總使能引腳
sbit FMQ=P1^0; //蜂鳴器
//----------------------AD轉換程序--//
unsigned long ReadCount(void) //無參數,返回長整形變量
{
unsigned long Count; //聲明長整形變量Count
unsigned char i; //聲明字符型變量i
ADSK=0; //串行輸入拉低
Count=0; //變量Count置零
while(ADDO); //等待串行輸出拉高
for(i=0;i<24;i++) //接收24個數據和發送24個脈沖
{
ADSK=1; //發送脈沖
Count=Count<<1; //變量左移
ADSK=0; //拉低
if(ADDO)Count++; //讀入數據(高>>低)
}
ADSK=1; //發送第25個脈沖(選擇A通道、128增益。)
Count=Count^0x800000; //按位相異或
ADSK=0; //串行拉低
return Count; //返回
}
//--------------------延時子函數--------//
void delay(unsigned char delayata)
{
uchar i,j;
for(i=0;i<delayata;i++)
{
for(j=0;j<121;j++)
{;}
}
}
//-------------------------------------單鍵掃描子函數-----//
unsigned char JP()
{
unsigned char x=0x00;
bit i=0;
x=P2; //掃描Y坐標
FMQ=0; //響起蜂鳴器
delay(125); //延時去抖動
P2=0x0f;
delay(2);
x+=P2; //掃描X坐標
switch(x)
{
case 0xee:x=0x31;break; //按下1
case 0xed:x=0x34;break; //按下4
case 0xeb:x=0x37;break; //按下7
case 0xe7:x=0x46;break; //按下F 8888
case 0xde:x=0x32;break; //按下2/.
case 0xdd:x=0x35;break; //按下5
case 0xdb:x=0x38;break; //按下8
case 0xd7:x=0x30;break; //按下0
case 0xbe:x=0x33;break; //按下3
case 0xbd:x=0x36;break; //按下6
case 0xbb:x=0x39;break; //按下9
case 0xb7:x=0x45;break; //按下E 88888
case 0x7e:x=0x44;break; //按下D
case 0x7d:x=0x43;break; //按下C
case 0x7b:x=0x42;break; //按下B
case 0x77:x=0x41;break; //按下A
default:x=0xff;break;
}
FMQ=1; //關閉蜂鳴器
while(i==0) //等待按鍵松開
{
P2=0xf0;
delay(150);
if(P2==0xf0)
{
i=1;
}
else{i=0;}
}
return x; //返回x(ASCII碼)
}
//------------------12864寫指令子函數-----//
void write_12864com(unsigned char com)
{
RS=0;
RW=0;
delay(1);
E=1;
P0=com;
delay(2);
E=0;
delay(1);
}
//------------------12864寫數據子函數-----//
void write_12864dat(unsigned char dat)
{
RS=1;
RW=0;
delay(1);
E=1;
P0=dat;
delay(2);
E=0;
delay(1);
}
//------------------------------LCD初始化-----//
void initinal(void)
{
delay(100);
write_12864com(0x30); //8位并行通信
delay(1);
write_12864com(0x30); //8位并行通信
delay(1);
write_12864com(0x02);
delay(2);
write_12864com(0x06);
delay(2);
write_12864com(0x0c);
delay(2);
write_12864com(0x01);
delay(2);
write_12864com(0x80);
delay(2);
}
//--------------------主函數-------------//
void main(void)
{
uchar LCD[16]={"0123456789ABCDEF"};
code uchar JM1[]={"地表最強戰隊"};
code uchar JM2[]={"單價: 0.0 元 "};
code uchar JM3[]={"重量: 0000.0克 "};
code uchar JM4[]={"總價: 0000.0元 "};
uchar DJ[2]; //單價
uchar ZL[5]; //重量
uchar QPZL[5]; //去皮時的重量
uchar ZJ[5]; //總價
unsigned long J1;
uint J2,J3,J6=0;
bit J5=1;
uint J7;
uchar i;
uchar JM5[]={5679};
initinal(); //初始化
for(i=0;i<3;i++) //填值
{
DJ[i]=0;
}
for(i=0;i<5;i++) //填值
{
ZL[i]=0;
}
for(i=0;i<5;i++) //填值
{
QPZL[i]=0;
}
for(i=0;i<5;i++) //填值
{
ZJ[i]=0;
}
write_12864com(0x81); //定位
for(i=0;i<12;i++)
{
write_12864dat(JM1[i]); //顯示 第三組電子稱
}
write_12864com(0x90); //定位
for(i=0;i<14;i++)
{
write_12864dat(JM2[i]); //顯示 單價:00.0元
}
write_12864com(0x88); //定位
for(i=0;JM3[i]!='\0';i++)
{
write_12864dat(JM3[i]); //顯示 重量: 00.000KG
}
write_12864com(0x98); //定位
for(i=0;JM4[i]!='\0';i++)
{
write_12864dat(JM4[i]); //顯示 總價: 0000.0元
}
P2=0xf0;
while(1)
{
while(P2==0xf0) //但沒有按鍵按下的時候進入,有按鍵按下的時候跳出來
{
J1=ReadCount();
//讀AD值
J3=(unsigned int)((float)(J1/43.10+0.05)/1.0288); //取值
//重量十位,一般為零
ZL[0]=(J3/10000)%10; //重量個位 一
ZL[1]=(J3/1000)%10; //計算位 百科為
ZL[2]=(J3/100)%10; //市科委
ZL[3]=(J3/10)%10; //各位
ZL[4]=J3%10; //小數點后以為
J7=ZL[4];
J7+=ZL[3]*10;
J7+=ZL[2]*100;
J7+=ZL[1]*1000;
J7+=ZL[0]*10000;
J3=QPZL[4];
J3+=QPZL[3]*10;
J3+=QPZL[2]*100;
J3+=QPZL[1]*1000;
J3+=QPZL[0]*10000;
J7-=J3;
ZL[0]=J7/10000;
J7%=10000;
ZL[1]=J7/1000;
J7%=1000;
ZL[2]=J7/100;
J7%=100;
ZL[3]=J7/10;
J7%=10;
ZL[4]=J7;
write_12864com(0x8b); //定位
write_12864dat(LCD[ZL[0]]); //送顯示
write_12864dat(LCD[ZL[1]]); //送顯示
write_12864dat(LCD[ZL[2]]); //送顯示
write_12864dat(LCD[ZL[3]]); //送顯示
write_12864dat(0x2e); //送顯示
write_12864dat(LCD[ZL[4]]); //送顯示
J7=DJ[1]*ZL[4];
J7+=DJ[1]*ZL[3]*10;
J7+=DJ[1]*ZL[2]*100;
J7+=DJ[1]*ZL[1]*1000;
J7+=DJ[1]*ZL[0]*10000;
J7+=DJ[0]*ZL[4]*10;
J7+=DJ[0]*ZL[3]*100;
J7+=DJ[0]*ZL[2]*1000;
J7+=DJ[0]*ZL[1]*10000;
J7+=DJ[0]*ZL[0]*100000;
ZJ[0]=J7/10000;
J7%=10000;
ZJ[1]=J7/1000;
J7%=1000;
ZJ[2]=J7/100;
J7%=100;
ZJ[3]=J7/10;
J7%=10;
ZJ[4]=J7;
write_12864com(0x9b); //定位
i=ZJ[0];
i=LCD[i];
write_12864dat(i); //送顯示
i=ZJ[1];
i=LCD[i];
write_12864dat(i); //送顯示
i=ZJ[2];
i=LCD[i];
write_12864dat(i); //送顯示
write_12864dat(0x2e); //顯示點
i=ZJ[3];
i=LCD[i];
write_12864dat(i); //送顯示
i=ZJ[4];
i=LCD[i];
write_12864dat(i); //送顯示
P2=0xf0;
delay(1);
}
J2=JP();
if(J6>1){J6=0;}
if(J2<0x40)
{
J2-=0x30;
DJ[J6]=J2;
J2=0xff;
J6++;
}
else
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1