51单片机实验 2017年11月22日
来源:互联网 发布:adobe flash cs6 mac 编辑:程序博客网 时间:2024/06/06 04:25
2017年11月22日
按键程序
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit we = P2^7;
sbit du = P2^6;
sbit S4 = P3^2;
sbit S5 = P3^3;
//uchar ledflow = 0x7f;
uchar counter,time_counter;
uchar code leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
0x76, //"H"
0x38, //"L"
0x37, //"n"
0x3E, //"u"
0x73, //"P"
0x5C, //"o"
0x40, //"-"
0x00, //熄灭
0x00 //自定义
};
void delay(uint z)
{
uint x,y;
for(x = z;x > 0;x --)
for(y =112;y > 0;y --);
}
延时函数,前面有说过
void display(uchar i)
{
uchar shi,ge;
shi = i/10;
ge = i%10;
定义shi,ge两个函数为无符号字符型数据
取商为十位, 取余为个位
P0 = 0xff;
P0口初始化
we = 1;
打开位选
P0 = 0xbf;
送入位选数据,也就是你想让八组中的哪一组数码管亮
we = 0;
关闭位选
P0 = 0xff;
P0口初始化防止数码管余晖
du = 1;
打开段选
P0 = leddata[shi];
将上面的leddata[]数组中包括的数字送入段选,shi实际上只是自己定义的数组名称不代表什么
du = 0;
关闭段选
delay(1);
一小段延时
P0 = 0xff;
we = 1;
打开位选
P0 = 0x7f;
送入位选数据,0x7f转二进制是01111111相当于最后一位亮
we = 0;
关闭位选
P0 = 0xff;
P1口初始化
du = 1;
打开段选
P0 = leddata[ge];
送入个位的数据
du = 0;
关闭段选
delay(1);
小延时
}
void main()
主函数开始
{
while(1)
一直运行检测小按键子程序
{
display(time_counter);
显示函数time_counter,用于显示数字
if(S4 == 0)
检测按键是否按下
{
delay(50);
软件去抖动延时
if(S4 == 0)
再次检测按键是否按下
{
time_counter ++;
如果检测到按下那么time_counter函数加1
while(!S4);
等待按键松开,相当于S4等于1这样检测按键是否按下的程序将不成立显示的数字保持不变
如果这里为!0相当于一直按着S4键程序就会停在0上相当于一个死循环
如果这里为!1相当于没有检测按键松开的程序,它会像秒表的毫秒计数一般直到你松开按键
}
}
if(S5 == 0)
检测按键是否按下
{
delay(50);
软件去抖动延时
if(S5 ==0 && time_counter !=0)
检测按键是否按下并且time_counter函数不为零
{
time_counter --;
如果条件成立那么time_counter函数自减1
while(!S5);
检测S5按键是否松开
}
}
}
}
- 51单片机实验 2017年11月22日
- 51单片机实验 2017年11月16日
- 51单片机实验2017年11月17日
- 51单片机实验2017年11月20日
- 51单片机实验 2017年11月27日
- 51单片机实验2017年12月4日
- 51单片机实验 2017年12月13日
- 2017年11月19日实验感想
- 2013年11月1日单片机C语言总结
- 2017年3月9日Java上机实验项目
- 安卓的第一份实验单【2014年10月15日布置,11月11日上交】
- 2017年1月22日 星期日
- 2017年1月22日
- 2017年3月22日
- 2017年4月22日
- 2017年6月22日
- 2017年8月22日 星期二
- 2011年11月22日
- HDOJ2111 Saving HDU(背包问题)
- iOS开发之UI篇(4)—— 触摸事件
- Jzoj4743 积木
- 搜索算法
- JDBC简单工作原理
- 51单片机实验 2017年11月22日
- HDU 1671 Phone List(字典树)
- Maven, HelloWorld, Java, Hadoop
- ABAP 对内表数据下载到EXCEL的几种方法
- 剑指offer---实现Singleton模式(2)
- 技术人生——一个月的工作感悟
- Storm实时大数据平台Storm实战进阶DataOptTopology实例
- ICCV2017 paperlist
- 28.开源项目--git一个脱离了组织的提交