1 / 34
文档名称:

2021年CT107D编程手册.doc

格式:doc   大小:93KB   页数:34页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2021年CT107D编程手册.doc

上传人:非学无以广才 2020/11/4 文件大小:93 KB

下载得到文件列表

2021年CT107D编程手册.doc

相关文档

文档介绍

文档介绍:一、IO口编程IO编程,该开发板使用了573锁存器,经过P2口5,6,7位连接3-8译码器,扩展出了8个口,其中4个口分别连接4个573锁存器,这里以LED锁存器来举例:原理图573:分析代码:P2=((P2&0x1f)|0x80);其中0x1f=0001 1111,P2和0x1f进行和运算,高三位清零,其它位保持原来状态,不改变,即把控制3-8译码器高三位留出来:接着再或上0x80;轻易发觉0x80=1000 0000;或运算,和1或结果为1,和0或结果不变,所以或上0x80只需看P2高三位,则高三位为100,对应3-8译码器话,P2^7=1;P2^6=0;P2^5=0;所以输出Y4=0;Y4再经过和非运算,看下图示:则输出Y4C=1;即LED对应锁存器片选信号被选中,锁存器打通,接下来就能够对P0口进行操作,操作完以后,P2=P2&0x1f;P2高三位直接清零,此时Y4C=0,则把锁存器锁上了。类似方法,数码管、蜂鸣器等全部是如此操作,选中锁存器代码:P2=((P2&0x1f)|(这里填对应锁存器位移号))。二、          数码管动态扫描和定时器数码管显示分为段选和位选,数码管定义和显示函数:Codeunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchardspbuf[]={10,10,10,10,10,10,10,10};=0;voiddisplay(){//段选,消隐P2=((P2&0x1f)|0xe0);P0=0xff;P2=P2&0x1f;//位选P2=((P2&0x1f)|0xc0);P0=(1<<);P2=P2&0x1f;//段码输入P2=((P2&0x1f)|0xe0);P0=tab[dspbuf[]];P2=P2&0x1f;if(++==8)    =0;}注意:位,=0,位依旧为1,每次自增1,1对应二进制00000001,即把1每次向左移,每次全部比上一次多移一位,直至8位移完,对应8个数码管。定时器配置:这里只需记住定时器配置,知道怎么使用就能够了。首先有两个定时器,T0和T1,(也有单片机有T2),定时器有4种工作方法0,1,2,3;其中最常见是方法1(16位),其次是方法2(8位自动重装,串口通讯中止会用到)。定时器需要配置:TMOD|=0x01;配置成使用定时器0,工作方法为1;同理使用定时器1工作方法1:TMOD|=0x10;则同时使用两个定时器且工作方法为1,那么能够:TMOD|=0x11;定时器1配置成工作方法2:TMOD|=0x20;接着配置(以定时器0举例):TH0=(65535-)/256;//配置初值TL0=(65535-)%6;ET0=1;TR0=1;//定时0中止EA=1;//总中止定时器1也是同理,:定时器0voidisr_timer_0(void)interrupt1  //默认中止优先级1{  TH0=(65536-)/256;  TL0=(65536-)%6;  //定时器重载  display();}定时器1:voidisr_timer_1(void)  interrupt3//默认中止优先级3{  TH0=(65536-)/256;  TL0=(65536-)%6;  //定时器重载  display();}注意:定时器0优先级为1,定时器1为3,串口中止优先级为4,总共有5个中止源,后面还会介绍外部中止和串口中止。数码管动态扫描,显示函数放在定时中止函数里面,2ms扫一次是最稳定!!三、          矩阵键盘矩阵键盘需要死记了!这里不再讲独立键盘。第二种单片机键盘扫描代码(没有消抖):sfrP4^4=0xC0;//键盘定义sbitr1=P3^0;  //4行sbitr2=P3^1;sbitr3=P3^2;sbitr4=P3^3;//4列sbitc1=P4^4;sbitc2=P4^2;sbitc3=P3^5;sbitc4=P3^4;//读取矩阵键盘键值unsignedcharkey_scan(){  unsignedcharkey_value;  r1=0;  r2=r3=r4=1;  c1=c2=c3=c4=1;  if(!c1)key_value=0;  elseif(!c2)key_value=1;  elseif(!c3)key_value=2;  elseif(!c4)key_value=3;  r2=0;  r1=r3=r4=1;  c1=c2=c3=c4=1;  if(!c1)key_value=4;  elseif(!c2)key_value=5;  elseif(!c3)key_valu