|
電子秤的程序及仿真圖
仿真.jpg (97.66 KB, 下載次數: 67)
下載附件
2017-5-17 16:03 上傳
仿真1.jpg (94.68 KB, 下載次數: 71)
下載附件
2017-5-17 16:03 上傳
仿真2.jpg (93.38 KB, 下載次數: 81)
下載附件
2017-5-17 16:03 上傳
仿真3.jpg (83.5 KB, 下載次數: 58)
下載附件
2017-5-17 16:03 上傳
目錄
電子技能課程設計報告書......................................................................................... 1
基于AT89C51的數字電子秤的設計...................................................................... 1
1、設計目的......................................................................................................... 1
2、設計的主要內容和要求................................................................................ 1
3、 整體設計方案............................................................................................... 1
3.1設計方案................................................................................................... 1
3.2工作原理................................................................................................... 1
4、 硬件電路的設計........................................................................................... 2
5、軟件設計......................................................................................................... 3
5.1主程序設計.............................................................................................. 3
5.2 LM4229液晶顯示驅動程序.................................................................. 4
5.3 ADC0832采樣程序................................................................................. 5
5.4 4*4鍵盤程序............................................................................................ 6
6、系統仿真......................................................................................................... 6
7、 使用說明 ..................................................................................................... 9
8、設計總結......................................................................................................... 9
參考文獻................................................................................................................ 9
附錄A ................................................................................................................ 10
0.png (51.63 KB, 下載次數: 59)
下載附件
2017-5-17 16:02 上傳
電子秤總圖.jpg (95.08 KB, 下載次數: 83)
下載附件
2017-5-17 16:03 上傳
電子秤框圖.jpg (45.58 KB, 下載次數: 50)
下載附件
2017-5-17 16:03 上傳
流程圖1.jpg (16.57 KB, 下載次數: 69)
下載附件
2017-5-17 16:03 上傳
總流程圖.jpg (21.98 KB, 下載次數: 59)
下載附件
2017-5-17 16:03 上傳
流程圖4.jpg (14.53 KB, 下載次數: 46)
下載附件
2017-5-17 16:03 上傳
流程圖3.jpg (15.23 KB, 下載次數: 46)
下載附件
2017-5-17 16:03 上傳
流程圖2.jpg (13.56 KB, 下載次數: 51)
下載附件
2017-5-17 16:03 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #include <absacc.h>
- #include <math.h>
- #include<lm4229.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit ADCS =P3^5;
- sbit ADDI =P3^7;
- sbit ADDO =P3^7;
- sbit ADCLK =P3^6;
- uint x1,y1,z1=0,w1;
- uchar ad_data,k,n,m,e,num,s; //采樣值存儲
- uint temp1;
- sbit beep =P3^0;
- char press_data; //標度變換存儲單元
- float press;
- unsigned char ad_alarm,temp; //報警值存儲單元
- unsigned char abc[5]={48,46,48,48,48};
- unsigned char price_all[6]={48,48,46,48,48,48};
- float price_unit[10]={5.5,2.8,3.6,4.5,5.8,6.8,7.9,8.0,9.5,0}; //商品初始單價
- uchar price_danjia[5]={48,46,48,48,48};
- float price;
- uint price_temp1,price_temp2; //商品總價
- uchar Adc0832(unsigned char channel);
- void alarm(void);
- void data_pro(void);
- void delay(uint k);
- void keyscan();
- void disp_init();
- void price_jisuan();
- /************
- 主函數
- ************/
- void main(void)
- {
- delay(500); //系統延時500ms啟動
- //ad_data=0; //采樣值存儲單元初始化為0
- lcd_init(); //顯示初始化
- disp_init(); //開始進入歡迎界面
- delay(1000); //延時進入稱量畫面
- clear_lcd(0,4,40);
- clear_lcd(16,0,100);
- clear_lcd(28,0,40);
- clear_lcd(44,0,100);
- clear_lcd(56,0,40);
- clear_lcd(72,0,100);
- clear_lcd(84,0,40);
- clear_lcd(100,0,100);
- clear_lcd(112,0,40);
- write_lcd(0,8,"實用電子秤");
- while(1)
- {
- ad_data =Adc0832(0); //采樣值存儲單元初始化為0
- alarm();
- data_pro(); //讀取重量
- keyscan(); //查詢商品種類
- write_lcd(40,0,"------------------------------");
- write_lcd(56,0,"單 價:");
- write_lcd(56,11,price_danjia);
- write_lcd(56,20,"元/千克");
- write_lcd(72,0,"總重量:");
- write_lcd(72,11,abc);
- write_lcd(72,20,"千克");
- write_lcd(88,0,"總 價:");
- price_jisuan(); //計算出價格
- write_lcd(88,10,price_all);
- write_lcd(88,20,"元");
- write_lcd(112,0,"設計學生: 0612201*16 朱珍奇");
- }
- }
- /************
- 讀ADC0832函數
- ************/
- //采集并返回
- uchar 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_();
- _nop_();
- ADCLK=1;//拉高CLK端
- ADDI=(channel>>1)&0x1;
- _nop_();
- _nop_();
- ADCLK=0;//拉低CLK端,形成下降沿3
- ADDI=1;//控制命令結束
- _nop_();
- _nop_();
- dat=0;
- for(i=0;i<8;i++)
- {
- dat|=ADDO;//收數據
- ADCLK=1;
- _nop_();
- _nop_();
- ADCLK=0;//形成一次時鐘脈沖
- _nop_();
- _nop_();
- dat<<=1;
- if(i==7)dat|=ADDO;
- }
- for(i=0;i<8;i++)
- {
- j=0;
- j=j|ADDO;//收數據
- ADCLK=1;
- _nop_();
- _nop_();
- ADCLK=0;//形成一次時鐘脈沖
- _nop_();
- _nop_();
- j=j<<7;
- ndat=ndat|j;
- if(i<7)ndat>>=1;
- }
- ADCS=1;//拉搞CS端
- ADCLK=0;//拉低CLK端
- ADDO=1;//拉高數據端,回到初始狀態
- dat<<=8;
- dat|=ndat;
- return(dat); //return ad k
- }
- void data_pro(void)
- {
- unsigned int;
- if(0<ad_data<256)
- {
- int vary=ad_data;
- press=(0.019531*vary);
-
- temp1=(int)(press*1000); //放大1000倍,便于后面的計算
- abc[0]=temp1/1000+48; //取壓力值百位
- abc[1]=46;
- abc[2]=(temp1%1000)/100+48; //取壓力值十位
- abc[3]=((temp1%1000)%100)/10+48; //取壓力值個位
- abc[4]=((temp1%1000)%100)%10+48; //取壓力值十分位
- }
-
- }
- /*****************報警子函數*******************/
- void alarm(void)
- {
- if(ad_data>=256)
- beep=0; //則啟動報警
-
- else
- beep=1;
- }
- void delay(uint k)
- {
- uint i,j;
- for(i=0;i<k;i++)
- for(j=0;j<100;j++);
- }
- //開機歡迎界面
- void disp_init()
- {
- write_lcd(0,8,"歡迎使用電子秤");
- write_lcd(16,0,"------------------------------");
- write_lcd(28,0,"設計學生:朱珍奇");
- write_lcd(44,0,"------------------------------");
- write_lcd(56,0,"班級學號:0612201*16");
- write_lcd(72,0,"------------------------------");
- write_lcd(84,0,"指導老師:龔倫峰");
- write_lcd(100,0,"------------------------------");
- write_lcd(112,0,"設計日期:2009年6月16日");
-
- }
- //鍵盤服務程序
- void keyscan()
- {
- P1=0xfe;
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- delay(5);
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- temp=P1;
- switch(temp)
- {
- case 0xee:num=1,price=price_unit[0], write_lcd(24,0,"名 稱: 杏 仁");
- break;
- case 0xde:num=2,price=price_unit[1],write_lcd(24,0,"名 稱: 李 子");
- break;
- case 0xbe:num=3,price=price_unit[2],write_lcd(24,0,"名 稱: 草 莓");
- break;
- case 0x7e:num=4,price=price_unit[3],write_lcd(24,0,"名 稱: 葡 萄");
- break;
- }
- while(temp!=0xf0)
- {
- temp=P1;
- temp=temp&0xf0;
- }
- }
- }
- P1=0xfd;
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- delay(5);
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- temp=P1;
- switch(temp)
- {
- case 0xed:num=5,price=price_unit[4],write_lcd(24,0,"名 稱: 西 瓜");
- break;
- case 0xdd:num=6,price=price_unit[5],write_lcd(24,0,"名 稱: 蘋 果");
- break;
- case 0xbd:num=7,price=price_unit[6],write_lcd(24,0,"名 稱: 雪 梨");
- break;
- case 0x7d:num=8,price=price_unit[7],write_lcd(24,0,"名 稱: 核 桃");
- break;
- }
- while(temp!=0xf0)
- {
- temp=P1;
- temp=temp&0xf0;
- }
- }
- }
- P1=0xfb;
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- delay(5);
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- temp=P1;
- switch(temp)
- {
- case 0xeb:num=9,price=price_unit[8],write_lcd(24,0,"名 稱: 香 蕉");
- break;
- case 0xdb:num=10,price=price_unit[9],write_lcd(24,0,"名 稱: 商品代碼");
- break;
- case 0xbb:num=11,price=price_unit[1];
- break;
- case 0x7b:num=12,price=price_unit[2];
- break;
- }
- while(temp!=0xf0)
- {
- temp=P1;
- temp=temp&0xf0;
- }
- }
- }
- P1=0xf7;
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- delay(5);
- temp=P1;
- temp=temp&0xf0;
- while(temp!=0xf0)
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (52.36 KB, 下載次數: 71)
下載附件
2017-5-17 16:05 上傳
所有資料51hei提供下載 帶仿真 程序 課程設計報告書:
dfg.rar
(1.1 MB, 下載次數: 132)
2017-5-17 09:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|