阶段性成果.ppt
上传人:天马****23 上传时间:2024-09-10 格式:PPT 页数:21 大小:7.8MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

阶段性成果.ppt

阶段性成果.ppt

预览

免费试读已结束,剩余 11 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

多路复用腌鱼计时计数器一、市场分析:传统的腌鱼计时计数需要工作人员目测钟表来确定腌鱼时间,根据所腌鱼的重量来确定腌鱼所需的时间。同时需要专门人员负责记录同一盆佐料腌鱼的条数。当达到最大腌鱼次数时需要更换佐料。这样往往不能精确计时,同时也给工作人员带来了不便。基于此问题,我们专门为石家庄某餐饮企业设计开发了一款“多路复用腌鱼计时计数器”。二、产品规划:2、产品按键功能示意图:该产品共分为三路计时器,一路计数器。其中1、2、3键分别控制一、二、三路计时器。当开机后1、2、3键中某键按下时,相应的计时器开始倒计时,并且计数器加一。当任意一路计时器倒计为0时,蜂鸣器发出间断性声音以提示工作人员将腌好的鱼取出。当计数器达到所设定的该盆佐料所能腌鱼的最大次数后,蜂鸣器长鸣,从而提醒工作人员更换佐料,同时计数器清零,重新计数。另外,根据客户需求,因为每次淹鱼的大小不尽相同,并且腌鱼的容器可能会发生更换,所以我们特别开发了可调计时时间、计数次数功能。当按下5键蜂鸣器长响时,选择调时调数功能,此时1、2、3每按一次,计时时间增加半分钟,4键每按一次计数上限增加1,再次按下5键蜂鸣器短响,进入计时计数状态,此时,按下1、2、3中某一个按键时,相应计时器开始计时。3、原理图:4、PCB电路图:三、开发流程图:四、阶段性成果:1、编写程序阶段#include<io.h>#include<util/delay.h>#include"avr/interrupt.h"#include"define.h"#include"EEPROM.h"#defineLED_DDRDDRB#defineLED_P0RTPORTB#defineKEY_DDRDDRD#defineKEY_PORTPORTD#defineKEY_PINPINDintnum1[3]={720,720,720};//每分钟四次比较匹配unsignedcharanjianjiange=0;//防抖unsignedcharDISP_NUM=0;unsignedcharBitTab[]={0xFD,0xF7,0xFB,0xFE,0xbf,0xdf,0xef,0x7f};//LED位选unsignedcharDispTab[]={0xEB,0x88,0xB3,0xBA,0xD8,0x7A,0x7B,0xA8,0xFB,0xFA,0xEF,0x8c,0xB7,0xBE,0xDC,0x7E,0x7D,0xAC,0xFF,0xFE};//LED字形码unsignedcharDISP_DATA[8];//显示的数字unsignedcharfunction=1;//function为功能迹0代表调整时间和调整次数1代表开始计时计数inttime[3]={30,30,30};//计数时间单位0.1分钟,即6秒unsignedcharstart[3]={0};//计时计数开始的标志unsignedcharTIME=15;//计数次数unsignedchartimes=0;unsignedcharfun;//scanKey的返回值,由该值判断那一个键被按下unsignedcharTC2A=0;//使能蜂鸣器的标志位voiddevice_init(void)//对num1数组赋值voidEEPROM_write(uint16address,uint8data)//EEPROM写函数uint8EEPROM_read(uint16address)//EEPROM读函数unsignedcharscanKey(void)//扫描按键函数voidDisplay(void)//数码管显示函数voidTC0_Init(void)//初始化定时器0SIGNAL(SIG_OUTPUT_COMPARE0)//定时器中断服务程序voidkeyfun(unsignedcharfun)//按键功能函数voidport_init(void)//分别对各个端口进行初始化intmain(void){port_init();PORTD&=0x7f;//通电后发出短暂声音提示_delay_ms(10);PORTD|=(1<<7);device_init();SREG|=0X80;//全局中断使能while(1){fun=scanKey();if(anjianjiange==0)//去抖动{anjianjiange=1;if(fun!=0xff)keyfun(fun);}Display();//数码管显示函数}}完全程序注释见附件>>