自动售货机 - 单片机 - 程序,PROTUES仿真(DOC)(4)

2019-09-01 12:44

开始 是否投入1元 N 是否投入5元 N 是否选择啤酒 N 是否选择可乐 N 是否按下结束 N Y 金额加1 Y 金额加5 Y 金额是否≥3 Y N 金额是否≥5 Y N 找钱 Y 金额减3 Y 金额减5 是否≥3元 N N 是否≥5元 Y 啤酒营业灯亮 Y 可乐营业灯亮 4.3软件程序

/*----------------------------------------------- 名称:自动售货机控制程序 编写:shi wei song 日期:2013.6.22 修改:无

------------------------------------------------*/

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit KEY_ADD1=P1^0; //定义按键输入端口 sbit KEY_DEC3=P1^1; //定义按键输入端口 sbit KEY_ADD5=P1^2; //定义按键输入端口 sbit KEY_DEC5=P1^3; //定义按键输入端口 sbit KEY_STOP=P1^6;

#define DataPort P2 //定义数据端口 程序中遇到DataPort 则用P2 替换 sbit LATCH1=P1^4;//定义锁存使能端口 段锁存 sbit LATCH2=P1^5;// 位锁存 sbit LED_YY_pijiu=P0^0; sbit LED_YY_kele=P0^1; sbit QUHUO=P0^2; sbit ZHAOQIAN=P0^3;

Unsigned char code

dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9

unsigned char code

dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码

unsigned char TempData[8]; //存储显示值的全局变量

void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t);

void Display(unsigned char FirstBit,unsigned char Num); void Init_Timer0(void); DELAY() {

unsigned int i;

for(i=0;i<60000;i++);

17

}

void main (void)

/*------------------------------------------------ 主函数

------------------------------------------------*/ {

unsigned char num=0; KEY_ADD1=1; //按键输入端口电平置高 KEY_DEC3=1; //按键输入端口电平置高 KEY_ADD5=1; //按键输入端口电平置高 KEY_DEC5=1; //按键输入端口电平置高

Init_Timer0();

while (1) //主循环 {

if(!KEY_ADD1) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_ADD1) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_ADD1);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{ if(0

} } }

if(!KEY_ADD5) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_ADD5) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_ADD5);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{ if(num<99) //加操作 num++;

18

} } }

if(!KEY_DEC3) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_DEC3) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_DEC3);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{

if(num>2) //减操作 { num=num-3; if(num>=0) { QUHUO=1; DELAY(); QUHUO=0; } } } } }

if(!KEY_DEC5) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_DEC5) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_DEC5);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{

if(num>4) //减操作 { num=num-5; if(num>=0) { QUHUO=1; DELAY();

QUHUO=0; }

19

} } } }

if(!KEY_STOP) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_STOP) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_STOP);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{ if(0

if(0

LED_YY_pijiu=1;//灯全灭 LED_YY_kele=1;

if(num>2)//如果投币金额大于等于3元 {

LED_YY_pijiu=0;//啤酒灯亮 }

if(num>4)//如果投币金额大于等于5元 {

LED_YY_kele=0;//可乐灯亮 } }

20


自动售货机 - 单片机 - 程序,PROTUES仿真(DOC)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:控规层面城市设计编制设计要点20150605

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: