结合"61板"的三个按键完成带有语音播报功能的电子钟:、KEY1--按一下播放年、月、日,再按一下播放时、分 (I/O口A0) // 连续按3s,则进入调整状态 调整状态下调整内容的切换 // 2、KEY2--年、月、日、时、分的增加(I/O口A0) // 3、key3--年、月、日、时、分的减少(I/O口A0)
上传时间: 2014-01-14
上传用户:qunquan
ARM7 LPC2368 键盘检测:按一下KEY1,L1灯亮,按一下KEY2,L2灯亮,按一下key3,L3灯亮,按一下key3,L4灯亮.
上传时间: 2013-12-17
上传用户:顶得柱
/*#include<reg52.h> #define uint unsigned int #define uchar unsigned char #define uchar unsigned char sbit K1=P3^4; sbit K2=P3^5; sbit ledr=P1^0; sbit ledg=P1^1; sbit ledb=P1^2; bit LEDDirection=0;//LED控制方向0:渐亮1:渐灭 char pwm=0; char pwmr=0; char scw=0;//中断记数 char tt=0; char n; void dealy(uint z); void Timer0Init(void) { TMOD=0x01; TH0=0xff; TL0=0x47; EX0=1; IT0=0; PX0=1; ET0=1; TR0=1; EA=1; } void main() { Timer0Init(); while(1){ if(K1==0) { dealy (1); if(K1==0) {TR0=1; ledr=0; dealy(5); TR0=0; } } if(K2==0) { dealy (1); if(K2==0) { while(1) { ledr=0; //亮 dealy(100-n*10); ledr=1; //熄 dealy(n*10); } } } } } void Time0Isr(void) interrupt 1 { // pwm=0; TH0=0xff; TL0=0x47; scw++; }*/ #include<reg52.h> #define uchar unsigned char bit LEDDirection=0; sbit P2_0=P1^0; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; uchar zkb,i,t;// zkb指占空比 uchar pwm; void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init() //初始化函数 { TMOD=0X01; TH0=(65536-1000)/256; TL0=(65536-1000)%256; EA=1; ET0=1; TR0=1; } void keyscan() //键盘扫描 { P3=0XFF; if(key1==0) { delay(5); if(key1==0) { while(!key1); if(zkb<9) { zkb++; } } } if(key2==0) { delay(5); if(key2==0) { while(!key2); if(zkb>0) { zkb--; } } } if(key3==0) {TR0=1; delay(5); if(key3==0) {while(!key3); if((zkb<=9)&&(0==LEDDirection)) { zkb++; if(zkb>9) { LEDDirection=1; zkb=9; } } if((zkb>=0 )&&(1==LEDDirection)) { zkb--; if(zkb<0 ) { LEDDirection=0; zkb=0 ; //dealy(3000); } } } //pwm=pwmr; } } void main() //主函数 { zkb=2; init(); while(1) { keyscan(); } } void time0(void) interrupt 1 //中断函数 { TH0=(65536-200)/256; TL0=(65536-200)%256; ++i; if(i>10) { i=0; }; if(i<=zkb) { P2_0=1; } else P2_0=0; } /*void time0(void) interrupt 0 //中断函数 { TH0=(65536-1000)/256; TL0=(65536-1000)%256; ++i; if(i>10) { i=0; }; if(i<=zkb) { P2_0=1; } else P2_0=0; }*/
标签: 调光
上传时间: 2016-07-02
上传用户:184890962
用的是沁恒CH552e淘宝买的评估板,USB中断上传程序用的是沁恒提供的做了些修改。程序使用2个端点一个,端点1作为普通键盘,端点2作为多媒体按键,有详细注释多媒体按键报告,以下是主函数内容。/****主函数****/main(){ CfgFsys( ); //CH552时钟选择配置 mDelaymS(5); //修改主频等待内部晶振稳定,必加 ConfigT0(2); //配置2ms T0中断 USBDeviceInit(); //USB设备模式初始化 EA = 1; //允许单片机中断 UEP1_T_LEN = 0; //预使用发送长度一定要清空 UEP2_T_LEN = 0; //清空端点2发送长度 FLAG = 0; //清空USB中断传输完成标志 Ready = 0; LED_VALID = 1; //给一个默认值 P1_DIR_PU &= 0xE0; //在MOD_OC为0时 p1.5 p1.6 P1.7为推挽输出 P1_MOD_OC = P1_MOD_OC & ~0xE0; //3个口的bit4 = 0 p1.5 p1.6 P1.7设置为推挽输出 P1_DIR_PU = P1_DIR_PU | 0xE0; //3个口的bit4 = 1 p1.5 p1.6 P1.7设置为输出 key1 = 1; key2 = 1; key3 = 1; while(1) { KeyDrive(); //按键驱动 }}
上传时间: 2022-05-15
上传用户: