/****************************************************************************************
简单菜单程序,八个按键.使用AVR单片机.2008/3/24--2008/3/29
编译器为ICCAVR7.14.晶振7.3728M,单片机为ATmega16(用ATmega32在proteus中仿真不成功!)
*****************************************************************************************/
#include #include #include #include "menu.h" //所有变量定义以及函数声明均放在这个头文件里. #include "delay.h" #include "lcd_12864.h" #include "get_key.h" #define blueon PORTB|=(1< //SFR初始化. void main_init(void) { DDRA=0xff; //A口设置为输出. PORTA=0x00; DDRB=0xff; //B口设置为输出. PORTB=0x00; // ASSR&=~(1< PORTC=0xff; //AVR没有上拉寄存器,在PORTC中写1即表示打开上拉了. DDRD=0x00; //D口设置为输入. PORTD=0xff; //打开D口上拉. } void main_menu_initial(void) //LED主菜单初始化. { main_menu[0].menu_count=3; //有三个菜单项. main_menu[0].display=blue; main_menu[0].subs=NULL; //点亮兰灯 main_menu[0].children_menus=blue_menu; main_menu[0].parent_menus=NULL; main_menu[1].menu_count=3; main_menu[1].display=green; //点亮绿灯 main_menu[1].subs=NULL; main_menu[1].children_menus=green_menu; main_menu[1].parent_menus=NULL; main_menu[2].menu_count=3; main_menu[2].display=red; //点亮红灯. main_menu[2].subs=openred; main_menu[2].children_menus=NULL; main_menu[2].parent_menus=NULL; } void blue_menu_initial(void) { blue_menu[0].menu_count=2; blue_menu[0].display=qr; //点亮兰灯,确认. blue_menu[0].subs=openblue; blue_menu[0].children_menus=NULL; blue_menu[0].parent_menus=main_menu; blue_menu[1].menu_count=2; blue_menu[1].display=qx; //取消. blue_menu[1].subs=closeblue; blue_menu[1].children_menus=NULL; blue_menu[1].parent_menus=main_menu; } void green_menu_initial(void) { green_menu[0].menu_count=2; green_menu[0].display=qr; //点亮绿灯---确认. green_menu[0].subs=opengreen; green_menu[0].children_menus=NULL; green_menu[0].parent_menus=main_menu; green_menu[1].menu_count=2; green_menu[1].display=qx; //----取消. green_menu[1].subs=closegreen; green_menu[1].children_menus=NULL; green_menu[1].parent_menus=main_menu; } void led_menu_pro(void) { max_item=menu_led->menu_count; switch(keyval) { case 0: break; case 1: //向上键. if(user_choosen==0) { user_choosen=max_item; } refresh=1; user_choosen--; break; case 2: //向下键. user_choosen++; if(user_choosen==max_item) { user_choosen=0; } refresh=1; break; case 3: //确认键. if(menu_led[user_choosen].subs!=NULL) { (*menu_led[user_choosen].subs)(); //执行函数. } if(menu_led[user_choosen].children_menus!=NULL) { temp_choosen=user_choosen; menu_led=menu_led[user_choosen].children_menus; user_choosen=0; } refresh=1; break; case 4: //返回键. if(menu_led[user_choosen].parent_menus!=NULL) { menu_led=menu_led[user_choosen].parent_menus; } refresh=1; break; default: break; } if(refresh) //是否需要刷新LCD标志位.
上一篇:AVR万年电子日历C程序
下一篇:avr单片机PWM控制直流电机转速和正反转
推荐阅读
史海拾趣
随着公司的不断发展,ABCircuits意识到单打独斗难以应对日益激烈的市场竞争。于是,公司开始积极寻求与其他企业的战略合作。通过与上下游企业的紧密合作,ABCircuits不仅获得了稳定的供应链支持,还成功打开了国际市场的大门。这些合作不仅加速了公司的扩张步伐,也提升了其品牌影响力和市场竞争力。
品质是Big-Sun Electronics Co Ltd公司一直以来的核心竞争力。公司建立了严格的质量管理体系,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把关。同时,Big-Sun还注重品牌建设,通过广告宣传和客户服务,不断提升品牌知名度和美誉度。
为了庆祝公司成立30周年,Digi International推出了全新的品牌标识。这一品牌升级不仅展现了公司的创新精神和市场地位,也为其未来的发展注入了新的活力。同时,品牌升级也反映了公司对市场趋势的敏锐洞察和对客户需求的深入理解。
面对数字化浪潮的冲击,ECS-D公司积极拥抱数字化转型,通过引入先进的信息技术和智能化设备,提升企业的运营效率和创新能力。公司建立了数字化管理平台,实现了生产、销售、财务等各个环节的信息化管理。同时,ECS-D公司还加强了对员工的数字化培训和教育,提升员工的数字化素养和创新能力。这些数字化转型的举措使ECS-D公司在激烈的市场竞争中保持了领先地位,也为公司的未来发展奠定了坚实的基础。
以上五个故事均以ECS公司的发展为主题,分别从不同角度描述了这些公司在电子行业中的成长历程和成功经验。这些故事旨在展示ECS公司如何通过技术创新、全球化战略、品质管理、绿色环保理念和数字化转型等方式实现持续发展和壮大。
Abundance Enterprise Company注重品牌建设和市场推广工作。公司通过多种渠道加强品牌宣传和推广,提高品牌知名度和美誉度。同时,公司还积极参与社会公益活动,履行企业社会责任,树立了良好的企业形象。这些举措有效提升了公司的市场竞争力,为公司的快速发展提供了有力保障。
在3GPP中,3G LTE的正式名称是3G Long Term Evolution(LTE),即3GPP长期演进(LTE)项目。 3GPP长期演进(LTE)项目是近两年来3GPP启动的最大的新技术研发项目,以OFDM/FDMA为核心的技术,与其说是3G技术的“演进”(evolution) ...… 查看全部问答∨ |
|
模电书上说在负反馈放大电路中,输入信号为零时,因为某种电扰动(如合闸通电),其中含有频率为f0的信号,使得AF的附加相移达到180°或-180°,@负反馈变成了正反馈,如果|AF|>1,则产生了自激振荡。我不明白的是,如果@处条件不成立,也就是不 ...… 查看全部问答∨ |
|
【C2000 LaunchPad】单相交流电压+电流表__工程创建篇 总贴位置:https://bbs.eeworld.com.cn/viewthread.php?tid=369113&page=1&extra=page%3D2#pid1466612 【C2000 LaunchPad】单相交流电压+电流表 以前一直用CCS3.3。最近装了个 ...… 查看全部问答∨ |
|
针对水利行业的RTU功能,对其LPC1500进行功能测试,选用4K的EEPROM做为参数存储区,12K的RAM做为串口数据交互缓存.使用SPI接口外挂一片FLASH做为固态存储区.使用自身的ADC做为电压采集使用.3个串口分别用于连接手机模块,传感器,卫星.USB接口用于现场数 ...… 查看全部问答∨ |