完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
简介
1.硬件部分 普中单片机开发板 数码管 独立按键 2.软件部分 keil软件 硬件部分 普中单片机开发板 数码管 独立按键 (这些都是开发板的最基本的配置) 软件部分 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; /*端口引脚定义*/ ***it LSA=P2^2; ***it LSB=P2^3; ***it LSC=P2^4; ***it KEY1 = P3^0; ***it KEY2 = P3^1; /*变量定义*/ int number; unsigned char KeyNum=0; //被触发的按键编号 unsigned char KeyLock1=0; unsigned char KeyLock2=0; unsigned int cnt; /*函数声明部分*/ void KEY_Scan(); void KEY_Action(); void Light_Scan(); void delay(u16 i); void Display(); void Time0Iint(); /*数码管码表*/ unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管显示0~F的值 unsigned char LightBuf[]={0xFF,0xFF,0xFF,0xFF,0XFF}; /******************************************************************************* * 函 数 名 : delay * 函数功能 : 延时函数,i=1时,大约延时10us *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * 函 数 名 : Display * 函数功能 : 数码管显示部分 *******************************************************************************/ void Display() { LightBuf[0]=smgduan[number%10]; LightBuf[1]=smgduan[number/10%10]; LightBuf[2]=smgduan[number/100%10]; LightBuf[3]=smgduan[number/1000%10]; LightBuf[4]=smgduan[number/10000%10]; } /******************************************************************************* * 函 数 名 : Light_Scan() * 函数功能 : 数码管扫描函数,选择显示的位置 *******************************************************************************/ void Light_Scan() { u8 i; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0;P0=LightBuf[4];break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0;P0=LightBuf[3];break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0;P0=LightBuf[2];break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0;P0=LightBuf[1];break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1;P0=LightBuf[0];break;//显示第4位 default: break; } delay(100); //间隔一段时间扫描 P0=0x00;//消隐 } } /******************************************************************************* * 函 数 名 : KEY_Scan() * 函数功能 : 按键扫描函数 *******************************************************************************/ void KEY_Scan() { static unsigned char cnt1 = 0xFF; static unsigned char cnt2 = 0xFF; cnt1 =(cnt1<<1)|KEY1; cnt2 =(cnt2<<1)|KEY2; if(cnt1 != 0x00) { KeyLock1 = 0; } else if(KeyLock1==0) { KeyNum = 1; KeyLock1 = 1; } if(cnt2 != 0x00) { KeyLock2 = 0; } else if(KeyLock2==0) { KeyNum = 2; KeyLock2 = 1; } } /******************************************************************************* * 函 数 名 : KEY_Action() * 函数功能 : 按键执行操作部分 *******************************************************************************/ void KEY_Action() { switch(KeyNum) { case 1:number++; KeyNum = 0; break; case 2:number--; KeyNum = 0; break; default:break; } } /******************************************************************************* * 函 数 名 :Time0Iint * 函数功能 :定时器0配置,定时器初始化函数 *******************************************************************************/ void Time0Iint() { EA=1; TH0 = (65536-2000)/256;//定时2ms TL0 = (65536-2000)%256; TMOD &= 0xFC; TMOD = 0x01; ET0 = 1; TR0 = 1; } /******************************************************************************* * 函 数 名 :void InterruptT0() interrupt 1 * 函数功能 : 定时器0中断执行部分 *******************************************************************************/ void InterruptT0() interrupt 1 { TH0 = (65536-2000)/256;//定时2ms TL0 = (65536-2000)%256; Light_Scan(); KEY_Scan(); } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { Time0Iint(); while(1) { Display(); KEY_Action(); } } |
|
|
|
只有小组成员才能发言,加入小组>>
2549 浏览 0 评论
1148浏览 2评论
747浏览 1评论
500浏览 0评论
266浏览 0评论
429浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:12 , Processed in 1.191015 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号