- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本单片机C程序编车奶分析
第五部分 基本单片机C程序分析;2、任务:闪烁灯;3、任务:按键识别;参考程序(传统的延时消抖按键程序)
include AT89X52.H
sbit INT_0=P3^2; //定义按键的输入端
sbit D1=P3^0; //D1小灯定义
void delay10ms(void) //延时程序
{
unsigned char i,j;
for(i=20;i0;i--)
for(j=248;j0;j--);
}
key( ) //按键判断程序
{
if(INT_0==0) //判断是否按下键盘
{
delay10ms( ); //延时,软件去干扰
if(INT_0==0) //确认按键按下
{
D1=!D1; //D1亮灭交替变化
}
while(INT_0==0);//按键锁定,每按一次D1只变化一次
} ;续前页:
}
main()
{
while(1) //永远循环,扫描判断按键是否按下
{
key(); //对于此处CPU只按键判断 一直扫描;
}
}
;4、任务:数码管静态显示;参考程序:
#include AT89X52.H
sbit GE=P1^3;
code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f}; //显示段码
main()
{
unsigned char display_date=4; //定义并赋值要显示的数据
while(1)
{
P0=seg7code[display_date]; //查表,输出
GE=0; //P1^3为低电平,相当于把数码管的4H端接地
}
};5、任务:数码管动态显示;续前页:
void Led(int date) //显示函数
{
qian=0; //P1.0输出低电平,选通千位数
P0=seg7code[date/1000]; //取出千位数,查表,输出。
Delay(10); //延时
qian=1; //销隐
bai=0; //P1.1输出低电平,选通百位数
P0=seg7code[date%1000/100]; //取出百位数,查表,输出。
Delay(10); //延时
bai=1; //销隐
shi=0; //P1.2输出低电平,选通十位数
P0=seg7code[date%100/10]; //取出十位数,查表,输出。
Delay(10); //延时
shi=1; //销隐
ge=0; //P1.3输出低电平,选通十位数
P0=seg7code[date%10]; //取出个位数,查表,输出。
Delay(10);
ge=1;
}
;续前页:
main()
{
int display_date=1234; //定义并赋值要显示的数据
while(1)
{
Led(display_date);//调用显示函数显示数据display_date
}
} ;上述数码管动态显示程序的另一种写法;续前页:
disdat[0]=disdat/1000; //取出千位
disdat[1]=disdat%1000/100; //取出百位
disdat[2]=disdat%100/10; //取出十位
disdat[3]=disdat%10; //取出个位
for(k=0;k4;k++) //显示四位数据
{
P0=tvdate[disdat[k]]; //送出要显示数据的段码
P1=datebit[k]; //P2位选
delay(10); //延时
}
}
main()
{
while(1)
{
display();
}
} ;6、任务:4X4矩阵键盘识别;键盘识别的两种方法;程序:(线反转法)
#include reg52.h
unsign
文档评论(0)