自动售货机课程设计_图文中北大学课程设计说明书2011/2012学年第1学期 学院:电子与计算机科学技术学院 专业:电子科学与技术 学生姓名:包文婷学号:0906044205课程设计题目:自动售货机起迄日期:2011年12月19日~2012年1月6日课程设计地点:电子科学与技术专业实验室指导教师:文丰系主任:刘文怡 …………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………11一、设计目的:1)掌握电子电路的一般设计方法和设计流程;2)学习使用PROTEL软件绘制电路原理图及印刷板图;3)掌握应用EWB对所设计的电路进行仿真,通过仿真结果验证设计的正确性。二、设计要求:设计一台自动售货机,要求如下:×4键盘表示3种线,例如:1元、5元、10元。×4键盘表示3种商品,每一种商品都有自己的价格。,以元为单位。,先输入钱,例如输入10元钱,再按所要购买的商品键,数码管显示找的钱数,发光二极管亮表示商品已经输出。,各位数码管的小数点亮,表示退出所输入的钱。三、设计内容:本次课程设计利用单片机系统实现,通过编程利用单片机对键盘进行扫描,当检测到某个按键被按下的时候,根据判断出来的按键进行相应的操作。当检测出投币键1,2,3时,对钱数进行累加。S1代表投币1元S2代表投币5元,S3代表投币10元,S4代表选择1元商品,S5代表选择5元商品,S6代表选择10元商品。当检测出商品选择键1,2,3时,对钱数进行判断,如果投入的钱数大于商品需要的钱数时,输出商品,二极管灯亮,表示已经输出商品,当钱数少于商品所需要的钱数时,在数码管上输出小数点。显示模块利用两位数码管通过动态扫描显示投入的钱数,并在购买完商品后显示剩余的钱数。四、源程序如下:#include#defineuintunsignedint#defineucharunsignedcharsbitP37=P3^7;sbitP36=P3^6;sbitP21=P2^1;sbitP10=P1^0;sbitP11=P1^1;sbitP12=P1^2;sbitP13=P1^3;sbitP14=P1^4;sbitP15=P1^5;sbitP16=P1^6;//定义键盘IO引脚ucharnum,shi,ge;ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};voiddelay(uintz;voidmain({P1=0xff;num=0;while(1{if(P10==0//投币键1{delay(20;if(P10==0{num=num+1;while(!P10;//检测键松开}}if(P11==0//投币键2{delay(20;if(P11==0{num=num+5;while(!P11;}}if(P12==0//投币键3{delay(20;if(P12==0{num=num+10;while(!P12;}}if(P13==0//商品选择键1{delay(20;if(P13==0{if(num>=1//判断钱数是否足够{num=num-1;P21=0;//点亮二极管,表示商品输出}Else//钱数不够{num=num;P3=0xff;//点亮各位数码管小数点P0=0x7f;}while(!P13;delay(800;}}if(P14==0//商品选择键2{delay(20;if(P14==0{if(num>=5{num=num-5;P21=0;}else{num=num;P3=0xff;P0=0x7f;}while(!P14;delay(800;}}if(P15==0//商品选择键13{delay(20;if(P15==0{if(num>=10{num=num-10;P21=0;}else{num=num;P3=0xff;P0=0x7f;}while(!P15;delay(800;}}if(P16==0{delay(20;if(P16==0{num=0;while(!P16;}}if(num>9//显示模块{
自动售货机课程设计 图文 来自淘豆网m.daumloan.com转载请标明出处.