版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10口编程
10编程,该开发板使用了573锁存器,通过P2口的5,6,7位连接3-8译
码器,扩展出了8个口,其中4个口分别连接4个573锁存器,这里以LE
D的锁存器来举例:
原理图573:
分析代码:
P2=((P2&0x1f)I0x80);
其中0x1f=00011111,P2与。x1f进行与运算,高三位清零,其余位
保持原来状态,不改变,即把控制3-8译码器的高三位留出来:
接着再或上0x80;容易发现0x80=10000000;或运算,与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,则把锁存器锁上
To
类似的方法,数码管、蜂鸣器等都是如此操作,
选中锁存器代码:
P2=((P2&0x1f)|(这里填对应锁存器的位移号))。
二、数码管动态扫描和定时器
数码管显示分为段选和位选,
数码管定义和显示函数:
Codeunsignedchartab[]
(OxcO,0xf9,0xa4,OxbO,0x99,0x92,0x82,0xf8,0x80,0x90);
unsignedchardspbuf[]={10,10,10,10,10,10,10,10);
unsignedchardspcom=0;
voiddispIay()
(
接着定时中断函数和优先级:定时器0
voidisr_timer_0(void)interruptI下面是模块化的函数:void
UartInit()
SCON=0x50;
TMOD|=0x20;
TH1=256-(SYSREMCL0CK/BAUDRATE/384+;
ES=1;
TR1=1;
EA=1;
)
voidUartSend(unsignedchar*pBuff,intlength)
(
unsignedchare;
inti=0;
for(i=0;i
c=pBuff;
SBUF=c;
whiIe(T1==0);
TI=O;
)
)
接收数据可以这样写:
定义全局变量:
unsignedcharuart_buf[100];初始化的函数就是如此写;
adc_pcf8591的协议:
依次是:start/1cy发送读地址0x91、等待应答、读回AD转换后的数值、
读回后发送应答给PCF8591,表示收到,并且不需要再返回应琴,要传参数
1,如图红圈示,即函数Ack⑴;、最后stop〃C总线。
D/A转换(其实挺麻烦,先前太自信了,哈):
所谓D/A转换其实就是把数字信号转换成模拟信号输出,用单片机发数字通
过D/A转换限电压输出,检测的方法可以用电压表测量。
配置的方法跟A/D类似,先发地址字节,再发控制字节,然后把数字发出去
(AD这里是接收模拟信号,是相反的机制)。
控制字节:
如图示,控制字节的第6位是1的话是模拟输出模式,其余位全为0,发送格
式品艮AD一样:
代码如一开始图示。
(2)EEPROM的使用,AT24co2,可以掉电依旧保存上一次操作
的数据,下次上电后接着运行。
需要注意两个函数,一个是写进EEPROM里面保存,再次上电再从里面读回
来:
其中写函数需要指定AT24co2的也址以及需要写入的数据,读函数要想取回
写进的数据,需要从相同的地址里面读:
其中AT24co2的存储地址是0x00,可以是其他地址,如0x02,但是读和写的
地址必须一致。
写与读的协议与AD或D)相同,由芯片资料及原理图知EEPR0M(A
T24co2)的写地址为Oxa0;读地址为0xa7;注意:读数的时候读出一
个数之后发送一个应答信号,CK(0)表示还想继续读下一个字节,若/GK
(1);则不想再读数,让EEPR0M停止发送。
人、DS18B20时钟芯片的使用
比赛有提供代码,只需记住这个函数:
读取温度值,整数(其中,提示EA总中断要打开、关闭,也可以不用)。
浮点、数的表示。
注意,只有提供函数,没有提供读取温度的函数,即上面的那个,只有下面:这
几个函数。
编写读取温度的函数需要记住DS13B20的三条指令,OxCC,跳过ROM检测;然
后启动温度转换:0x44;转换需要时间,这里精确延时De/ay_OneIV/re
(200);再次执行跳过,然后读取温
度指令:OxBE.;注意读出的温度是低字节先,然后才是高字节,分别用两个变
量保存还要通过公式转换成我们需要的整数或浮点数。完整代码如上图示。
九、超声波传感器的使用
include〃〃/隹文51单片机特殊功能寄存器
,•//,,,,
include
//include
〃12M用这个
〃用这个
"definesomenop{nop();nop。;nopOnop();nop();
_nop_O:_nop_0;)
sbitTX=P1〃发射引脚
sbitRX=P1〃接收引脚
codeunsignedchartab口
(OxcO,0xf9,0xa4,OxbO,0x99,0x92,0x82,0xf8,0x80f0x90,/
Oxff);
unsignedchardspbuf[8]={10f10,10,10,10f10,10,10);//显
示缓冲区
unsignedchardspcom=0;
unsignedintintr=0;
bits_flag;
unsignedintt=0;
voidsend_wave(\void);
voiddisplay(void);
voidmain(void)
I(
unsignedintdistance;
TMOD/=0x11://配置定时器工作模式
THO=(65536-2000)/256;
TLO=(65536-2000)%6;
TH1=0;
TL1=0;
EA=1;
ETO=1;〃打开定时器O中断
whiIe(1){
if(s_flag)
s_flag-0;
t=TH1;
t«=8;
t/=TL1;
distance(unsigned
int)Ct*;〃it算距
离
}
TH1=0;
TL1=0;
dspbuf[5]=distance/100;
dspbuf[6]=distanceO/1O;
dspbuf[7]=distance;
}
〃定时器0中断服务函数
vo/disr_timer_0(void)interrupt1//默认中断优先级1
(
THO=(65536-2000)/256;
TLO=(65536-2000)%6;〃定时器重载
display();//2ms执行一次
if(++intr—200){
s_flag-7;
intr-0;
〃显示函数voiddispIay(void){
XBYTE[OxEOOO]=Oxff;〃去除鬼影
XBYTE[OxCOOO]=(1«dspcom);
XBYTE[OxEOOO]=tab[dspbuf[dspcom]];
7f(++dspcom==8)
dspcom=0;
//TX引脚发送40KHz方波信号驱动超声波发送探头
vo/dsendwave(void)
unsignedchari=8;//发送8个脉冲
do
TX=
somenop;
TX=0;
somenop;
)
whiIe(i一i);
)
必要时还可以加个看门狗:WDT_C0NTR=0x34;
十、步进电机与直流电机的使用
参考代码如下:
#include
sbitA1=P1N;//定义步进电机连接端口
sbitB1二P厂3;
sbitC1二P「2;
sbitD1=P11;vo/dqudong1();
^defineDy_A1(A1=1;B1==0;C1=0;D仁0;}//A相通电,其他相断电
7defineDy_B1{A1=0;Bl=1;C1=0;Djt0;}//B相通电,其他相断电
八defineDy_C1{A1=0;B1=0;C1=1;D1=0:}//C其他相断电
^defineDy_D1{A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断
电〃采用1相励磁
^defineDy_OFF{A1=0;B1=0;C1=0;D1=0;}//H电
unsignedcharSpeed,Speed1;
voidDe/ayUs2x(unsignedchart)
/
I
whiIe(----1);
voidDelayMs(unsignedchart)
whiIe(t--)
〃大致延时1mS
De!ayUs2x(245);
De/ayUs2x(245);
main()
Dy_OFF;
for(;;)
qudong!();
voidqudong!0unsignedint/=470;〃旋转—周时间
Speed=5;
wh1Ie(i-)〃正向
Dy_A1
〃遇至寸Coi!_A1用{A1=1;B1=0;C1=0;D1=0;)代替
DeIayMs(Speed);
〃改变这个参数可以调整电机转速,
〃数字越小,转
速越大,力矩越小
Dy_B1
〃顺序从A1—D1相通电如果为正转,叫〈么)顿序从D1—A1相通电则为
反转
DelayMs(Speed);
Dy_C1
DeIayMs(Speed);
Dy_D1
DeIayMs(Speed);
}
Dy_OFF
i=512;
whiIe(/--)〃反向
Dy_D1〃遇,到CoI!_A1用
(A1=1;B1=0;C1二0;D1:0:}代替
DelayMs(Speed);〃改变这个参数可以调整电
机转速,
〃数字越小,转速
越大,力矩越小
Dy_C1
DelayMs(Speed);
Dy_B1
DelayMs(Speed);
Dy_A1
DelayMs(Speed);
直流电机:
#include
"defineuintunsignedint
voiddrive0;
voiddelay(uint);
sbitdJ1=P1。〃电机,1引脚
umtset;〃set为电机转角标志位unsignedcharangle,angleI;
//angle为电机PWM变化打角
voidTimeOInit()〃中断初始化
TM0D=0X01;
1E=0X82;
THO=(65536-58)/256;
TLO=(65536-58)%6;
TR0=1;
)
vo/dmain()〃
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西版小学三年级上信息技术全册教案
- 23.1 图形的旋转 人教版数学九年级上册堂堂练(含答案)
- 师德师风学习心得8
- 保育员培训-七步洗手法及消毒工作培训
- 一例糖尿病患者足部溃疡的综合护理课件
- 1 例基于老年护理需求评估的高龄丧偶老人健康风险管理的个
- 第六课+折り紙+第一课时课件 初中日语人教版七年级第一册
- 2024年幼儿园教师节演讲稿范文(35篇)
- 2024年小学教师期末工作总结(15篇)
- 关于教师节教师发言稿范文(34篇)
- 人教版《周末巧安排》课件
- 矩形水池设计
- 第三章质量管理常用统计方法课件
- 特种设备安装告知书
- 高职院校《创新创业指导》课程标准(2016.9.30)
- 苏少版小学五年级美术上册全套课件
- 苏少版(简谱版)三年级音乐上册全册课件汇总
- 中学生安全教育(开学第一课)课件
- 小学信息技术《电脑文件分类存》优质教学课件
- 医院口腔门诊建筑设计和院感要求
- DB21T 3414-2021 辽宁省防汛物资储备定额编制规程
评论
0/150
提交评论