欢迎来到天天文库
浏览记录
ID:41031304
大小:61.00 KB
页数:16页
时间:2019-08-14
《第二十八节 数码管通过切换窗口来设置参数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第二十八节:数码管通过切换窗口来设置参数。开场白:上一节讲了数码管的驱动程序,这节在上节的基础上,通过按键切换不同的窗口来设置不同的参数。这一节要教会大家两个知识点:第一个:如何通过一个窗口变量来把按键,数码管,被设置的参数关联起来。第二个:需要特别注意,在显示被设置参数时,应该先分解出每一位,然后再把分解出来的数据过渡到显示缓冲变量里。具体内容,请看源代码讲解。(1)硬件平台:基于朱兆祺51单片机学习板。加按键对应S1键,减按键对应S5键,切换窗口按键对应S9键(2)实现功能: 通过按键设置4个不同的参数。 一共有
2、4个窗口。每个窗口显示一个参数。第8,7,6,5位数码管显示当前窗口,P-1代表第1个窗口,P-2代表第2个窗口,P-3代表第3个窗口,P-4代表第1个窗口。第4,3,2,1位数码管显示当前窗口被设置的参数。范围是从0到9999。有三个按键。一个是加按键,按下此按键会依次增加当前窗口的参数。一个是减按键,按下此按键会依次减少当前窗口的参数。一个是切换窗口按键,按下此按键会依次循环切换不同的窗口。(3)源代码讲解如下:#include"REG52.H"#defineconst_voice_short 40 //蜂鸣器短叫的持续
3、时间#defineconst_key_time1 20 //按键去抖动延时的时间#defineconst_key_time2 20 //按键去抖动延时的时间#defineconst_key_time3 20 //按键去抖动延时的时间voidinitial_myself(); voidinitial_peripheral();voiddelay_short(unsignedintuiDelayShort); voiddelay_long(unsignedintuiDelaylong);//驱动数码管的74HC595
4、voiddig_hc595_drive(unsignedcharucDigStatusTemp16_09,unsignedcharucDigStatusTemp08_01); voiddisplay_drive();//显示数码管字模的驱动函数voiddisplay_service();//显示的窗口菜单服务程序//驱动LED的74HC595voidhc595_drive(unsignedcharucLedStatusTemp16_09,unsignedcharucLedStatusTemp08_01);voidT0_time
5、(); //定时中断函数voidkey_service();//按键服务的应用程序voidkey_scan();//按键扫描函数放在定时中断里sbitkey_sr1=P0^0;//对应朱兆祺学习板的S1键sbitkey_sr2=P0^1;//对应朱兆祺学习板的S5键sbitkey_sr3=P0^2;//对应朱兆祺学习板的S9键sbitkey_gnd_dr=P0^4;//模拟独立按键的地GND,因此必须一直输出低电平sbitbeep_dr=P2^7;//蜂鸣器的驱动IO口sbitled_dr=P3^5; //作为中途暂停指示灯
6、亮的时候表示中途暂停sbitdig_hc595_sh_dr=P2^0; //数码管的74HC595程序sbitdig_hc595_st_dr=P2^1; sbitdig_hc595_ds_dr=P2^2; sbithc595_sh_dr=P2^3; //LED灯的74HC595程序sbithc595_st_dr=P2^4; sbithc595_ds_dr=P2^5; unsignedcharucKeySec=0; //被触发的按键编号unsignedint uiKeyTimeCnt1=0;//按键去抖动延时计
7、数器unsignedcharucKeyLock1=0;//按键触发后自锁的变量标志unsignedint uiKeyTimeCnt2=0;//按键去抖动延时计数器unsignedcharucKeyLock2=0;//按键触发后自锁的变量标志unsignedint uiKeyTimeCnt3=0;//按键去抖动延时计数器unsignedcharucKeyLock3=0;//按键触发后自锁的变量标志unsignedint uiVoiceCnt=0; //蜂鸣器鸣叫的持续时间计数器unsignedcharucDigShow8;
8、 //第8位数码管要显示的内容unsignedcharucDigShow7; //第7位数码管要显示的内容unsignedcharucDigShow6; //第6位数码管要显示的内容unsignedcharucDigShow5; //第5位数码管要显示的
此文档下载收益归作者所有