欢迎来到天天文库
浏览记录
ID:40217917
大小:1.10 MB
页数:43页
时间:2019-07-26
《单片机输入输出端口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章输入输出端口的用法数字端口用法【学习目标】掌握输入输出端口方向的控制方法;熟练掌握数码管动态扫描的设计和编程;掌握矩阵式键盘设计思路和编程;2第六章输入输出端口的用法输入/输出端口原理1输出端口用法2矩阵小键盘的读取方法4输入端口用法33第五章输入输出端口的用法输入/输出端口原理1输出端口用法2矩阵小键盘的读取方法4输入端口用法341输入/输出端口原理5输入/输出端口简介PIC16F877共有40个引脚,其中有33个I/O引脚、与五个端口相对应。PORTA对应RA0到RA5共6个引脚、PORTB对应RB0到RB7共8个引脚、PORTC对应RC0到RC7共8个
2、引脚、PORTD对应RD0到RD7共8个引脚、PORTE对应RE0到RE2共3个引脚。6输入/输出端口原理7输入/输出端口的相关寄存器位7位6位5位4位3位2位1位0当B口处于输出状态时,PORTB的内容能决定其对应引脚的电平状态。1对应高电平,0对应低电平。当B口处于输入状态时,外部引脚的电平能决定其对应寄存器位的值。高电平对应1,低电平对应0。8PIC的方向寄存器TRISXTRISB是PORTB的方向寄存器。TRISA是PORTA的方向寄存器。TRISC是PORTC的方向寄存器。TRISD是PORTD的方向寄存器。TRISE是PORTE的方向寄存器。TRISX
3、也是8位寄存器。当TRISX某二进制位为1时,PORTX对应位处于输入(Input)状态。当TRISX某二进制位为0时,PORTX对应位处于输出(Output)状态。9第五章输入输出端口的用法输入/输出端口原理1输出端口用法2矩阵小键盘的读取方法4输入端口用法310输出端口用法例题111输出端口用法例题1编程实现跑马灯的运行效果,即D0到D7循环被依次点亮,但同一时刻只有一个灯亮。单片机主频为4MHz。12输出端口用法例题代码main(){inti=0,DelayCNT=0;charData=0;//用来记录向PORTC输出内容的变量TRISC=0;//把C口置为
4、输出状态while(1)//主循环必须是死循环{Data=0x01;//循环的初始值for(i=0;i<8;i++)//需要显示8次{PORTC=Data;//送PORTC显示for(DelayCNT=0;DelayCNT<10000;DelayCNT++);//延时Data=Data<<1;//每显示一次后Data左移一次}}}13多数码管的显示控制144数码管控制:Proteus原理图15动态扫描基本思想只让第1个数码管亮;显示个位;延时20ms;只让第2个数码管亮;显示十位;延时20ms;只让第3个数码管亮;显示百位;延时20ms;……...16动态扫描代码
5、的实现voiddelay10ms(intm)//定义延时函数{inti=0,j=0;for(i=0;i6、while(1){chari=0,j=0,k=0,Number[5]={0,0,0,0,0};Number[1]=2;Number[2]=9;Number[3]=1;Number[4]=3;for(i=0;i<10;i++){PORTC=k=0x01;//每次循环不要忘记k赋初始值for(j=1;j<=4;j++)//共需要刷新四个数码管位置{PORTC=k;//设置要点亮的位置PORTB=TableNumber[Number[j]];//设置字形delay10ms(1);//延时显示字形,造成视觉暂留现象k=k<<1;//左移为显示下一位置做准备}}}}18将数7、码管扫描写成函数形式”seg4.h”#ifndef_SEGMENT74_H_//防止重复编译本头文件#define_SEGMENT74_H_#defineSEG_BITSEL_PORTPORTC//位选端口#defineSEG_BITSEL_PORT_DIRTRISC//位选端口的方向寄存器#defineSEG_FONT_PORTPORTB//字形输出端口#defineSEG_FONT_PORT_DIRTRISB//字形端口的方向寄存器voidDisplayData(unsignedintiData);19将数码管扫描写成函数形式”seg4.c”voidDis8、playD
6、while(1){chari=0,j=0,k=0,Number[5]={0,0,0,0,0};Number[1]=2;Number[2]=9;Number[3]=1;Number[4]=3;for(i=0;i<10;i++){PORTC=k=0x01;//每次循环不要忘记k赋初始值for(j=1;j<=4;j++)//共需要刷新四个数码管位置{PORTC=k;//设置要点亮的位置PORTB=TableNumber[Number[j]];//设置字形delay10ms(1);//延时显示字形,造成视觉暂留现象k=k<<1;//左移为显示下一位置做准备}}}}18将数
7、码管扫描写成函数形式”seg4.h”#ifndef_SEGMENT74_H_//防止重复编译本头文件#define_SEGMENT74_H_#defineSEG_BITSEL_PORTPORTC//位选端口#defineSEG_BITSEL_PORT_DIRTRISC//位选端口的方向寄存器#defineSEG_FONT_PORTPORTB//字形输出端口#defineSEG_FONT_PORT_DIRTRISB//字形端口的方向寄存器voidDisplayData(unsignedintiData);19将数码管扫描写成函数形式”seg4.c”voidDis
8、playD
此文档下载收益归作者所有