- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学习情境二 键盘系统设计与制作;【训练项目2-1】独立键盘系统设计与制作;二、项目实训仪器、设备及实训材料;任务2 实现键盘左、右移循环选择“+”或“-”功能
任务描述:在Proteus软件和单片机实训板上,采用单片机P0和P2端口分别连接8位数码管的数据和控制端口, P1.0—P1.3口连接4个按键,其中KEY0为“+”键、KEY1为“一”键、KEY2为“右移”键、KEY3为“左移”键;实现键盘左、右移循环选择“+”或“-”功能,要求被选中的数码管中的数字闪烁,并且键盘具有连续和单击响应功能。;四、思考与分析
(1)在任务1中,采用定时器T1溢出中断的方法,延时去抖动。
(2)绘制出任务2中数码管显示程序流程图。
(3)比较任务1和任务2中的键盘程序流程图和程序代码的异同性。 ;2.1 中断;中断系统的结构;MCS-51系列单片机中断源;中断标志 ;中断的开放和禁止 ;中断的开放和禁止 ;中断优先级 ;中断优先级 ;中断处理过程 ;中断处理过程 ;中断处理过程 ;2.2 定时器/计数器;定时/计数器 ;定时/计数器 ;定时/计数器 ;定时器的方式寄存器TMOD;GATE:门控位。
0:只要软件控制位TR0或TR1置1即可启动定时器开始工作;
1:只有INT0或INT1引脚为高电平,且TR0或TR1置1时,才能启动相应的定时器开始工作。
;例如:设定时器T0为定时工作方式,要求用软件启动
定时器T0工作,按方式1工作;定时器T1为计数
工作方式,要求软件启动,工作方式为方式2。
则根据TMOD各位的定义可知,其控制字为:;定时器的控制寄存器TCON;定时器的四种工作方式;定时器的方式0、1示意图;定时器的方式2示意图;定时器的初始值的计算;用T1、工作方式0实现1秒延时函数,晶振频率为12MHz。
方式0采用13位计数器,其最大定时时间为:8192×1?s = 8.192ms,因此,定时时间不可能象任务7中一样选择50ms,可选择定时时间为5ms,再循环200次。
定时时间为5ms,则计数值为5ms/1?s =5000,T1的初值为:
X = M ?计数值= 8192 ? 5000 = 3192 = C78H = 0110001111000B
13位计数器中TL1的高3位未用,填写0,TH1占高8位,所以,X的实际填写值应为:
X = 0110001100011000B = 6318H;用T1方式0实现任务7中1秒延时函数如下:
void delay1s()
{
unsigned char i;
TMOD=0x00; // 置T1为工作方式0
for(i=0;i0xc8;i++){ // 设置200次循环次数
TH1=0x63; // 设置定时器初值
TL1=0x18;
TR1=1; // 启动T1
while(!TF1); // 查询计数是否溢出,即定时5ms时间到,TF1=1
TF1=0; // 5ms定时时间到,将定时器溢出标志位TF1清零
}
};用T1、工作方式2实现1秒延时,晶振频率为12MHz。
因工作方式2是8位计数器,其最大定时时间为:256×1?s = 256?s,为实现1秒延时,可选择定时时间为250?s,再循环4000次。定时时间选定后,可确定计数值为250,则T1的初值为:X = M ?计数值=256 ? 250 = 6 = 6H。采用T1方式2工作,因此,TMOD =0x20。;用定时器工作方式2实现的1秒延时函数如下:
void delay1s()
{
unsigned int i; // i取值范围为0~4000,因此不能定义成unsigned char
TMOD=0x20; // 设置T1为方式2
TH1=6; // 设置定时器初值,放在for循环之外
TL1=6;
for(i=0;i4000;i++){ // 设置4000次循环次数
TR1=1; // 启动T1
while(!TF1); // 查询计数是否溢出,即定时250?s时间到,TF1=1
TF1=0; // 250?s定时时间到,将定时器溢出标志位TF1清零
}
};2.3 单片机与键盘接口;【训练项目2-2】??阵键盘系统设计与制作;三、项目实施过程及其步骤
任务1 实现任意数字输入
任务描述:
文档评论(0)