仿真文件和c源码
自动售货机.zip
(38.73 KB, 售价: 1 E币)
部分源码
- #include<reg52.h>
- sbit key1=P1^0;
- sbit key2=P1^1;
- sbit key3=P1^2;
- sbit key4=P1^3;
- sbit key5=P1^4;
- sbit key6=P1^5;
- sbit key7=P1^6;
- sbit key8=P1^7;
- sbit led1=P3^0;
- sbit led2=P3^1;
- sbit led3=P3^2;
- int step=1;
- int price=0;
- int num=1;
- int table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F}; //数码管显示0-9
- unsigned char dispbuf[8]={0,0,0,0,0,0,0,};
- int table2[]={0xe0,0xc0,0xa0,0x80,0x20};//控制退币
- int total_money=0;//所选商品总价格
- int back_money=0; //应退金额
- int in_money=0;
- /*
- 延时功能
- */
- void delay(int z)
- {
- int x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- //?调用时重新初始化??复位函数
- void reset()
- {
- step=1;
- price=0;
- num=1;
- total_money=0;
- back_money=0;
- in_money=0;
- }
- /*
- 选择商品函数?每个按键对应不同的物品价格及数量
- */
- void choose()
- {
- if(key1==0)
- {
- delay(80);
- if(key1==0)
- {
- num=1;
- price=4;
- }
- }
- else if(key2==0)
- {
- delay(80);
- if(key2==0)
- {
- price=6;
- num=1;
- }
- }
- else if(key3==0)
- {
- delay(80);
- if( key3==0)
- {
- price=10;
- num=1;
- }
- }
- }
- /*
- 确定及取消
- 确定则执行?step加一?取消则执行step減一
- */
- void apply()
- {
- if(key7==0)
- {
- delay(80);
- if(key7==0)
- {
- step++;
- }
- }
- else if(key8==0)
- {
- delay(80);
- if(key8==0)
- {
- step--;
- }
- }
- }
- /*
- 计算所选商品所需金额
- */
- void totalmoney()
- {
- total_money=price*num;
- }
- /*
- //累加投入币值
- */
- void inmoney()
- {
- if(key4==0)
- {
- delay(80);
- if(key4==0)
- in_money+=1;
- }
- else if(key5==0)
- {
- delay(80);
- if(key5==0)
- in_money+=5;
- }
- else if(key6==0)
- {
- delay(80);
- if(key6==0)
- in_money+=10;
- }
- }
- /*
- 计算所需退还币值
- */
- void backmoney()
- {
- back_money=in_money -total_money;
- }
- /*
- 显示函数?每一步显示不同的内容
- */
- void display ()
- {
- if(step==1)
- {
- P2=0x04;
- totalmoney();
- P0 =table1[total_money%10];
- delay(80);
- P2 = 0x08;
- P0 = table1[total_money/10];
- delay(80);
- }
- else if(step==2)
- {
- P2=0x04;
- inmoney();
- P0=table1[in_money%10];
- delay(80);
- P2=0x08;
- P0=table1[in_money/10];
- delay(80);
- }
- else if(step==3)
- {
- P2=0xf0;
- backmoney();
- if(back_money<0)
- {
- step--;
- P0=table1[in_money];
- }
- if(back_money>=0)
- {
- P2=0x04;
- backmoney();
- P0=table1[back_money%10];
- delay(80);
- P2=0x08;
- P0=table1[back_money/10];
- delay(80);
- reset();
- }
- else
- P0=table1[1];
- }
- }
- /*
- //主函数
- */
- void main()
- {
- while(1)
- {
- choose();
- apply();
- display();
- }
- /*?if(back_money>=10)
- {int?s=back_money/10;
- for(s;s>0;s--?)
- {led2=0;
- delay(1000);
- led2=1;
- back_money-=10;
- }
- }
- if(back_money<10&&back_money>0?)
- {
- led3=0;
- delay(1000);
- led3=1;
- }
- delay(1000);
- {
- led1=0;
- delay(1000);
- led1=1;
- delay(1000);
- led1=0;
- delay(1000);
- led1=1;
- delay(1000);
- led1=0;
- delay(1000);
- led1=1;
- delay(1000);
- }*/
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|