HX711的電子秤,12864液晶顯示
單片機源程序如下:
- #include"reg51.h"
- /****************************************************************
- 環宇電子秤系統 stc89C52單片機控制
- 12864 LCD顯示 制作日期:2015/06/25
- *****************************************************************/
- /****************************************************************
- LCD_12864 端口定義
- *****************************************************************/
- #define uchar unsigned char
- #define uint unsigned int
- unsigned char CMDAddress,jian_ma,flag,jiao_flag,set_flag,price_flag;
- unsigned int heavy,price=1,money,alarm=500,jiao_zhun=1010; //相關變量定義 ,上限報警值初始值為500克
- unsigned char menu,jia,jian,confr,fu,menu_flag,exit;
- long data_num,data_temp,data_flash;
- unsigned char f=0;
- sbit IRIN = P3^3; //紅外接收器數據線
- sbit ADDO=P1^0; //ad采集數據接口
- sbit ADSK= P1^1; //ad采集時鐘接口
- sbit RS=P2^3;
- sbit RW=P2^4; //液晶接口定義
- sbit EN=P2^5;
- //sbit rst=P2^7;
- sbit bell=P3^6; //蜂鳴器定義
- sbit key=P2^7; //按鍵定義
- #define Imax 14000 //此處為晶振為12時的取值, 紅外解碼
- #define Imin 8000 //如用其它頻率的晶振時,
- #define Inum1 1450 //要改變相應的取值。
- #define Inum2 700
- #define Inum3 3000
- unsigned char Im[4]={0x00,0x00,0x00,0x00};
-
- unsigned long m,Tc;
- /****************************************************************
- *****************************************************************/
- unsigned char code table1[]="★★歡迎光臨★★環宇電子稱系統 "; //液晶顯示內容
- //如果需要其他顯示內容只需要修改漢子內容
- //但是漢子數量要一致,重新編譯即可
- void read_count() //ad采集函數
- {
- unsigned long count;
- unsigned char i;
- ADSK=0;//使能ad
- count=0;
- while(ADDO); //等待ad轉換結束
- for(i=0;i<24;i++)
- {
- ADSK=1; //PD_SCK置高,發送脈沖
- count=count<<1;
- // delayp();
- ADSK=0; //pd_sck置低
- if(ADDO)count++;
- }
- ADSK=1;
- count=count^0x800000; //第25個脈沖下降沿來時,轉換數據
- // delayp();
- ADSK=0;
- data_num=count; // 讀出來的數據賦值給變量data_num
- }
- void delay_ms(unsigned char x) //x*0.14MS
- {
- unsigned char i;
- while(x--)
- {
- for (i = 0; i<13; i++) {}
- }
- }
- void delay(uint t) //延時函數
- {
- uint x,y;
- for(x=t;x>0;x--)
- for(y=12;y>0;y--);
- }
- void display(uint Temp,uint k1,uint k2 ) // 顯示重量,單價,金額
- {
- uint t1,t2,t3,t4 ; //,t0,t1,t2
- if(!menu_flag) //沒有按鍵按下
- {
- t1=Temp/1000%10;
- t2=Temp/100%10;
- t3=Temp/10%10;
- t4=Temp%10;
- write_cmd(0x93);
- if(t1) //千位的顯示
- {
- write_date(0x30+t1);
- write_date(0x30+t2);
- write_date(0x30+t3);
- write_date(0x30+t4);
- }
- void sao_miao()//按鍵掃描函數
- {
- if(key==0)
- {
- delay(10);
- if(!key)
- {
- while(!key);
- read_count();
- delay(500);
- read_count();
- data_temp=data_num; //重新讀取ad采集值,進入清零功能
- }
- }
- }
- /****************************************************************
- 主函數
- *****************************************************************/
- void main()
- {
- uchar i=0;
- IRIN=1; //I/O口初始化
- m=0;
- f=0;
-
- IT1=1;
- EX1=1; //開外部中斷
-
- TMOD=0x11; //定時器方式
- TH0=0;
- TL0=0;
- TR0=1; //開定時器
- EA=1; //開總中斷
- P0=0;
- delay(50);
- init(); // 初始化
- delay(100);
-
- write_word(table1); // 進入歡迎界面
- for(i=10;i>0;i--)
- delay(3000); // 每一屏顯示秒鐘
- write_cmd(0x00); // 清屏
- show() ; //顯示初始化
- read_count(); //ad采集函數
- delay(3000);
- read_count(); //ad采集函數
- delay(3000);
- read_count(); //ad采集函數
- data_temp=data_num; //采集數據賦值給臨時變量 data_temp
- while(1)
- {
- read_count();
- if(data_num>=data_temp) // 比較采集出來的數值與臨時變量
- data_num=(data_num-data_temp);
- else
- {
- data_num=(data_temp-data_num);
- if(data_num>=500)
- {
- fu=1;
- }
- else
- {
- fu=0;
- data_num=0;
-
- }
-
- }
-
-
-
- heavy=(unsigned int)(data_num/jiao_zhun);//1677; //計算重量
- delay(500);
-
-
-
- data_flash=heavy*price; // 總價=單價*重量
- money=(unsigned int)data_flash;
- if(exit) //如果進行了設置
- {
- exit=0;
- show() ; //顯示刷新
- }
- display(heavy,price,money); //計算完成后送到液晶顯示
- delay(500);
- chu_li(); //掃描函數
- if(heavy>alarm) //重量超過上限報警
- {
- beep();
- }
- delay(500);
- }
- }
- //外部中斷解碼程序
- void intersvr1(void) interrupt 2 using 1
- {
- Tc=TH0*256+TL0; //提取中斷時間間隔時長
- TH0=0;
- TL0=0; //定時中斷重新置零
- if((Tc>Imin)&&(Tc<Imax)) //定時器判斷讀取的啟始碼正確
- {
- m=0;
- f=1;
- return;
- } //找到啟始碼
- if(f==1)
- {
- if(Tc>Inum1&&Tc<Inum3)
- {
- Im[m/8]=Im[m/8]>>1|0x80; m++;
- }
- if(Tc>Inum2&&Tc<Inum1)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
電子稱12864顯示.rar
(65.64 KB, 下載次數: 48)
2018-8-29 13:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|