版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主要内容: 简单I/O接口的扩展; 通用接口的使用;
LED显示接口的应用;
键盘输入接口的应用。第9章接口扩展与应用1AA’BCDB’C’D’DCBA00010011001001100100110010001001顺逆应用举例【例7.1】试编制一个4相8拍步进电机驱动程序。
步进电机
4相8拍节拍表2步进电机接口电路P1.3P1.2P1.1P1.0P1.4P1.5P3.2(INT0)+5V方向DIRA方式MOD点动BCD步进电机3#include<Reg51.h>#define
uchar
unsignedchar/*单步定时常数0,定时时间50ms(fosc=6MHz)*/constintTC0=-25000;/*连续定时常数1,定时时间10ms(fosc=6MHz)*/constintTC1=-5000;sbitDIR=P1^4;/*定义P1.4脚名*/sbitMOD=P1^5;/*定义P1.5脚名*/要求:1.P1.4状态确定旋转方向:0=逆时针、1=顺时针2.P1.5状态确定运转形式:0=手动、1=连续3.P3.2输入单步运行信号:0=停止、1=运转利用定时器0作为连续运行的节拍发生器,利用P1.3~P1.0作为步进电机节拍输出控制口。4/*步进电机节拍表*/const
ucharrht[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};uchar
rhi=0;/*节拍索引*/time0()interrupt1/*T0中断服务*/{if(MOD){TH0=TC1>>8;/*重装定时器0连续时常*/TL0=TC1&0xff;}
else{TH0=TC0>>8;/*重装定时器0单步时常*/TL0=TC0&0xff;}P1=~rht[rhi];/*输出节拍*/
if(DIR)/*根据方向选择调整下一节拍索引*/
if(rhi=
=0)rhi=7;else
rhi-
-;
else
if(rhi=
=7)rhi=0;else
rhi+
+;}【例7.1】(续)5main(){TH0=TC1>>8;/*装入定时器0连续运行时常*/TL0=TC1&0xff;P1=0xff;EA=1;ET0=1;TR0=1;
while(1){if(MOD) /*T0工作在定时方式、模式1*/TMOD=0x01; /*置T0内启动*/
elseTMOD=0x09; /*置T0外启动*/}}【例7.1】(续)6通用接口芯片Intel8155简介主要构成:
2个8位并行口,1个6位并行口;
1个14位计数器,1个256字节RAMTINRAM256BytePAPCPBPA7~PA0ALERSTAD7~0IO/MI/O控制TOUT14位初值寄存器PC5~PC3PB7~PB0PC2~PC0地址锁存CERDWR14位减1计数器计数控制并口控制78155RAM/端口地址分配IO/MA7A6A5A4A3A2A1A0访问电路方向0××××××××RAM写/读1×××××000命令/状态口写/读1×××××001
8位并行口PA写/读1×××××010
8位并行口PB写/读1×××××011
6位并行口PC写/读1×××××100计数器低8位值写1×××××101计数器高6位值写88155命令与状态字76543210TC1TC0IEBIEAPC1PC0BDADPA、PB口方向0-输入1-输出并口工作方式PA、PB口中断允许0-禁止请求1-允许请求计数器控制PC1PC0说明00
PA、PB为基本输入/输出口,PC为基本输入口01
PA、PB为基本输入/输出口,PC为基本输出口10
PA为选通输入/输出口,PC口的0~2为其状态/控制线;
PB为基本输入/输出口,PC口的3~5为基本输出口11
PA为选通输入/输出口,PC口的0~2为其状态/控制线;
PB为选通输入/输出口,PC口的3~5为其状态/控制线。命令字:98155命令与状态字(续)76543210-RZIEBFIRIEBFIRTC1TC0说明00空操作01停止计数10计数器归0后,停止计数。11计数初值装入后,若计数器没工作则将其启动中断请求PA口计数器归0缓冲器满中断允许PB口计数器控制状态字108155计数器初值与工作方式76543210C7C6C5C4C3C2C1C0低8位计数初值IC高6位计数初值IC计数器工作方式M1M0说明00单次计数,方波输出。(计数值>IC/2,TOUT=1;否则TOUT=0,计数结束TOUT=1。)01连续计数,方波输出。(计数值>IC/2,TOUT=1;否则TOUT=0。)10单次计数,脉冲输出。(计数值≠1时,TOUT=1;计数值=1时,TOUT=0。)11连续计数,脉冲输出。(计数值≠1时,TOUT=1;计数值=1时,TOUT=0。)76543210M1M0C14C12C11C10C9C811
4位LED数码管显示扫描驱动程序(1/100秒计时器),其中:1.8155的PA为字型口(PA0~PA6对应字段a~g,低电平亮)2.8155的PB为位置口(PB4~PB7对应#0~#3位,高电平有效)3.利用T0作为5ms扫描定时器,兼做1/100秒计时器【例7.2】PA0PB7PB6PB5PB4ALE来自MCS-51ALE数据总线DBRD地址总线ABWRRD8155AD7~0CEPA1PA6abg地址译码WRCC3CC2CC1CC012#include<Reg51.h>#define
uchar
unsignedchar#define
uint
unsignedint#defineCMD(uchar
xdata*)0xffe8/*8155的命令口地址*/#definePA(uchar
xdata*)0xffe9/*8155的PA口地址*/#definePB(uchar
xdata*)0xffea/*8155的PB口地址*/#definePC(uchar
xdata*)0xffeb/*8155的PC口地址*/#defineTC0(-2500)/*T05ms时间常数*/#defineST10(2)/*10ms软定时时间常数*/#defineSTFH(5)/*刷新25ms定时时常*/【例7.2】程序13uchardisp[4];/*显示缓冲区*/uchart10ms;/*10ms软定时器*/uchar
tfresh;/*刷新软定时器*/uint
csec;/*1/100s计时器*/void
fresh(uint,uchar*);/*显示扫描和定时中断服务,每5ms一次*/time0()interrupt1{/*显示扫描位置表*/
static
ucharpot[4]={0x1f,0x2f,0x4f,0x8f};
static
uchar
di=0;/*显扫索引*/TH0=TC0>>8;/*重装定时器0时常*/TL0=TC0&0xff;*PA=disp[di];/*当前字型送PA口*/*PB=pot[di];/*当前位置送PB口*/【例7.2】(续)14
/*显示扫描和定时中断服务(续)*/if(++di==4)di=0;
if(!(--t10ms))/*10ms定时*/{t10ms=ST10;
csec++;/*1/100s计数*/}
if(!(--tfresh))/*刷新定时*/{
tfresh=STFH;fresh(csec,disp);/*刷新显示当前的1/100秒*/}}【例7.2】(续)15main(){TMOD=0x01;/*定时器0工作在定时方式、模式1、内启动*/TH0=TC0>>8;/*装入定时器0时常*/TL0=TC0&0xff;*CMD=0x43;/*8155初始化,PA、PB基本输出,PC基本输入*/*PA=0xff;/*关显示*/*PB=0x0f;t10ms=ST10;
tfresh=STFH;
csec=0;fresh(csec,disp);/*刷新当前1/100秒显示*/IE=0x82;/*开中断,允许定时器0请求中断*/TR0=1;/*启动定时器0*/
while(1);/*等待定时器中断请求*/}【例7.2】(续)16/*显示刷新函数*/voidfresh(uint
x,uchar*y){/*0~9字型表*/
static
ucharfont[10]={0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0x0F8,0x80,0x90};
ucharq,r;r=x%100;/*将x转换成BCD十进制数字字型送到y[]中*/q=x/100;y[0]=font[r%10];y[1]=font[r/10];y[2]=font[q%10];y[3]=font[(q/10)%10];}【例7.2】(续)17
设计一个4位LED数码管显示和3×3键盘扫描驱动程序。显示:字符“In”和键入值“k”
其中:1.8155PA为字型口(PA0~PA6对应字段a~g,低电平亮)2.8155PB为位置口
PB0~PB2对应#0~#2KSCN位,低电平有效;
PB4~PB7对应#0~#3LED位,高电平有效。3.8155PC为键入口
PC0~PC2对应#0~#2KIN位,低电平有按键。利用T0作为5ms键盘/显示扫描定时器。【例7.3】18数码显示与键盘接口电路PA0PB7PB6PB5PB4ALE来自MCS-51ALE数据总线DBRD地址总线ABWRRD8155AD7~0CEPA1PA6abg地址译码WRCC3CC2CC1CC0PB2PB1PB0PC2PC1PC0+5V03614725M0行1行2行2列1列0列19#include<Reg51.h>#define
uchar
unsignedchar#define
uint
unsignedint#defineCMD(uchar
xdata*)0xffe8/*8155的命令口地址*/#definePA(uchar
xdata*)0xffe9/*8155的PA口地址*/#definePB(uchar
xdata*)0xffea/*8155的PB口地址*/#definePC(uchar
xdata*)0xffeb/*8155的PC口地址*/#defineTC0(-2500)/*T05ms时间常数*/uchardisp[4];/*显示缓冲区*/ucharkey; /*键扫描值输出*/【例7.3】程序20/*键盘、显示扫描和定时中断服务,一次/5ms*/time0()interrupt1{/*扫描位置表*/
static
ucharpot[4]={0x1e,0x2d,0x4b,0x8f};/*键行值转换表*/
static
ucharkct[8]={0x3,0x0,0x1,0x3,0x2,0x3,0x3,0x3};
static
uchar
si=0,kst=0;/*扫描索引,键盘状态*/static
ucharkit,sit;/*键入值、扫描索引暂存*/
uchar
kc;/*键入值暂存*/TH0=TC0>>8;/*重装定时器0时常*/TL0=TC0;*PA=disp[si];/*当前字型送PA口*/*PB=pot[si];/*当前位置送PB口*/
kc=~(*PC)&0x07;/*从PC口输入键值*/【例7.3】(续)21if(!kst&&kc){kit=kc;sit=si;kst=1;}
else
if(si==sit){switch(kst){case1:
if(kc==kit)key=kct[kc]*3+si+1;
kst=2;
break;
case2:
if(!kc)kst=3;
break;
case3:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度企业场地租赁合同书样式
- 2024年度艺术品交易保证金合同
- 2024年度生产场地租赁及运营管理合同
- 2024年度企业融资借款合同书样本
- 邓小平理论概论课件
- 2024年度技术服务合同标的为云计算平台
- 2024年度建筑施工成本控制合同2篇
- 2024年度版权许可使用合同标的的许可费用及支付方式
- 宋词二首课件
- 2024年度宠物店知识产权保护合同:宠物店与知识产权公司之间的保护协议
- 广州南沙保税港区产业发展规划
- 小米宏观产业环境分析报告
- 装修标准服务流程
- 燃气工程技术专业基础知识试题库及答案解析
- DB3301-T 65.28-2018 反恐怖防范系统管理规范 第28部分:反恐怖防范目标硬质隔离设施建设规范
- 专利侵权与维权
- 2024年中国出版集团有限公司招聘笔试参考题库含答案解析
- 2024年天津医药集团招聘笔试参考题库含答案解析
- 医疗器械安全生产培训
- 考研数学模拟试卷(数学二)(附答案详解)
- 2023充电桩场地租赁简单合同范本正规范本(通用版)
评论
0/150
提交评论