智能交通灯实习小结_智能小车实训心得体会
智能交通灯实习小结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“智能小车实训心得体会”。
小总结
实习期小结
一:学习小总结
在实习的五天时间里,老师给我们讲了很多关于单片机的很多知识,例如:单片机基础知识加强、常见电子元器件的认识、开发环境最小系统搭建、单片机C语言的了解、keil软件的使用、闪烁报警灯设计、数码管结构原理、移位寄存器原理及控制方法、中断系统应用、定时器设计等。又时也给我们穿插一些关于嵌入式的讲座,增进我们与现代社会的接触。每位老师都讲的很好,我也学到了不少知识,对自己的专业前景也有了更深的了解。
二:具体内容分析
1.最小系统的搭建和硬件电路的组成 1)51系列单片机
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.2)注意事项
a)电烙铁的安全使用。
b)先要观察通用板大小,合理布局,插件,最后焊接。c)烙铁头不能在实验板和引脚接触很长时间,会损坏元件。
3)原理图
小总结
4)应用此电路实现的一些功能:
a)流水灯
b)流水灯和蜂鸣器一起工作 c)4位数码管依次显示 d)数码管计数
e)流水灯蜂鸣器数码管一起工作
5)单片机复位
单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。
6)单片机复位电路如下图:
2、闪烁报警灯的设计 1)闪烁报警灯组成闪烁报警电路由电源电路、发光器件、输出驱动、单片机控制电路等组成2)原理分析
发光二极管正极与一个限流电阻串联,电阻另一端连接电源电压+5v,发光二极管负极
小总结
连接单片机P0.x口,当P0.x口为低电平时二极管导通发光,当P0.x口为高电平是不发光,通过程序控制P0.x为0或1来控制发光二极管的亮灭。
3)闪烁报警灯硬件环境搭建
C122pF+5VC222pF+5VX11912MHzU1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617D1D2D3D4D5D6D7D8R1470SW1C320uF1k18R2470XTAL2R34704709RSTR4R5470+5V293031PSENALEEAAT89C52R9R6R***P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7R8470 4)蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
5)蜂鸣器在单片机上的应用
在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
小总结
6)这里对单片机在蜂鸣器驱动上的设计图
3、数码管结构、原理控制方法,了解蜂鸣器的使用 1)七段数码管
七段数码管是数码管的一种是半导体发光器件,其基本单元是发光二极管。
2)七段数码管应用
数码管是一类价格便宜 使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
3)数码管结构
小总结
4)4连排8段数码管
5)数字对应数码管显示控制转换字节
(共阴编码)
显示--HGFE,DCBA--编码
0 -- 0011,1111--0x3F;1 -- 0000,0110--0x06;2 -- 0101,1011--0x5B;3 -- 0100,1111--0x4F;4 -- 0110,0110--0x66;5 -- 0110,1101--0x6D;6 -- 0111,1101--0x7D;7 -- 0000,0111--0x07;8 -- 0111,1111--0x7F;9 -- 0110,1111--0x6F;
6)动态显示驱动
是将所有数码管通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显
小总结
示。将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
7)蜂鸣器简介:
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
a)有源 b)无源
从图a、b外观上看,两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚都朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。
进一步判断有源蜂鸣器和无源蜂鸣器,还可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器 “-”引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器。
有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。
在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。这里对单片机在蜂鸣器驱动上的应用作一下描述。
利用I/O 软件定时翻转电平 利用定时器定时翻转电平
比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
小总结
4、中断和定时应用 1)中断概念
CPU正 在执行原程序,突然,被意外事情打断,转去执行新程序。CPU执行新程序结束后,又回到原程序中继续执行。这样的过程就叫中断。
2)中断的作用
对突发事故,做出紧急处理。
根据现场随时变化的各种参数、信息,做出实时监控。
CPU与外部设备并行工作,以中断方式相联系,提高工作效率。解决快速CPU与慢速外设之间的矛盾。
在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。
3)89C51中断结构及中断控制
小总结
4)89C51中断系统的五个中断源为
① INT0——外部中断0请求,低电平有效。通过 P3.2引脚输入。
② INT1——外部中断1请求,低电平有效。通过 P3.3引脚输入。
③ T0 —— 定时器/计数器0溢出中断请求。
④ T1 —— 定时器/计数器1溢出中断请求。
⑤ TXD/RXD ——串行口中断请求。
每个中断源都对应一个中断请求标志位,他们设置在特殊功能寄存器TCON和SCON中。当这些中断源请求中断时,相应的标志分别由TCON和SCON中的相应位来锁存。
5)工作模式寄存器—TMOD(89H)
TMOD用于控制T0和T1的工作模式,其各位的定义格式如图所示。
工作模式寄存器TMOD的位定义
其中,低4位用于T0。高4位用于T1。
6)M1,M0控制的四种工作模式
M1 M0 工作模式 功能描述 0 0 模式0 13位计数器 0 1 模式1 16位计数器0 模式2 自动装入8位计数器1 模式3 定时器0:分成两个8位计数器
定时器1:停止计数
三附录:
小总结
流水灯
#include sbit led1=P1^0;void delay()//延迟 { int i,j,k;for(i=0;i
for(j=0;j
main()
{
int n, D;
while(1)//发光二极管依次显示
{
D=0X01;
P1=~D;
delay();
D=0X03;
P1=~D;
delay();
D=0X07;
P1=~D;
delay();
D=0X0F;
P1=~D;
delay();
D=0X1F;
P1=~D;
delay();
D=0X3F;
P1=~D;
delay();
D=0X7F;
P1=~D;
delay();
D=0X00;
P1=D;
delay();} }
流水灯和蜂鸣器
小总结
#include sbit AB=P2^1;sbit CLK=P2^0;sbit SG=P2^2;sbit SS=P2^3;sbit SB=P2^4;sbit SQ=P2^5;sbit fmq=P3^1;sbit F=P2^7;sbit led1=P1^0;unsigned char SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){
} void senddata(unsigned char num){
} void main(){
unsigned i,s,g,b,q,first,second,third,fourth,t;while(1){
for(t=0;t
g=t%10;//个位 s=(t/10)%10;//十位 b=(t/100)%10;//百位 q=t/1000;//千位 first=SZ[g];//个位数码管 second=SZ[s];//十位数码管 third=SZ[b];//百位数码管 unsigned char i;for(i=0;i
} CLK=0;AB=num&0x01;num>>=1;CLK=1;unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)for(k=222;k>0;k--);10
小总结
} 四位计数器
#include sbit AB=P2^1;sbit CLK=P2^0;sbit SG=P2^2;
fourth=SZ[q];//千位数码管 for(i=0;i
{
} SG=0;SS=1;SB=1;SQ=1;delay();SG=1;SS=0;SB=1;SQ=1;delay();SG=1;SS=1;SB=0;SQ=1;delay();SG=1;SS=1;SB=1;SQ=0;delay();senddata(first);//个位控制位
senddata(second);//十位控制位
senddata(third);//百位控制位
senddata(fourth);//千位控制位
P1=0X00;delay();fmq=0;delay();fmq=1;delay();} } 11
小总结
sbit SS=P2^3;sbit SB=P2^4;sbit SQ=P2^5;sbit fmq=P3^1;sbit F=P2^7;unsigned char SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)
for(k=222;k>0;k--);} void senddata(unsigned char num){ unsigned char i;for(i=0;i
CLK=0;
AB=num&0x01;
num>>=1;
CLK=1;} } void main(){ unsigned i,s,g,b,q,first,second,third,fourth,t;while(1){
for(t=0;t
{
g=t%10;
s=(t/10)%10;
b=(t/100)%10;
q=t/1000;
first=SZ[g];
second=SZ[s];
third=SZ[b];
fourth=SZ[q];
//F=~F;
for(i=0;i
{ SG=0;12
小总结
}
} } }
计时器计数
#include sbit AB=P2^1;sbit CLK=P2^0;sbit SG=P2^2;sbit SS=P2^3;sbit SB=P2^4;sbit SQ=P2^5;sbit fmq=P3^1;SS=1;SB=1;SQ=1;senddata(first);delay();SG=1;SS=0;SB=1;SQ=1;senddata(second);delay();SG=1;SS=1;SB=0;SQ=1;senddata(third);delay();SG=1;SS=1;SB=1;SQ=0;senddata(fourth);delay();fmq=0;delay();fmq=1;13 小总结
sbit F=P2^7;sbit led1=P1^0;unsigned char SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)
for(k=222;k>0;k--);} void senddata(unsigned int num){ unsigned char i;for(i=0;i
CLK=0;
AB=num&0x01;
num>>=1;
CLK=1;} } void main(){ unsigned num,i,s,g,b,q,first,second,third,fourth,t;TMOD=0X00;TH0=(65536-50000)/256;TL0=(65536-50000)%256;//EA=1;//ET0=1;TR0=1;while(1){ if(TF0==1)
{
num++;if(num==0)
{
i++;
P1=0X00;
delay();
fmq=0;
delay();fmq=1;
小总结
delay();}
TF0=0;//定时器方式0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;} for(t=0;t
g=t%10;
s=(t/10)%10;
b=(t/100)%10;
q=t/1000;
first=SZ[g];
second=SZ[s];
third=SZ[b];
fourth=SZ[q];
for(i=0;i
{
SG=0;
SS=1;
SB=1;
SQ=1;
senddata(first);delay();
SG=1;
SS=0;
SB=1;
SQ=1;
senddata(second);
delay();
SG=1;
SS=1;
SB=0;
SQ=1;
senddata(third);delay();
SG=1;
SS=1;
SB=1;SQ=0;
小总结
senddata(fourth);
delay();
}
P1=0X00;
delay();
fmq=0;
delay();
fmq=1;
delay();
}
}
}
闪烁报警 #include //sbit led1=P1^0;sbit fmq=P3^1;void delay(){ int i,j,k;for(i=0;i
for(j=0;j
for(j=0;j
main()
{
int n;
while(1){
P1=0XE7;delay();fmq=0;delay();fmq=1;16
小总结
for(n=0;n
P1=0XA5;中断实现计数 #include sbit AB=P2^1;sbit CLK=P2^0;sbit SG=P2^2;sbit SS=P2^3;sbit SB=P2^4;sbit SQ=P2^5;sbit fmq=P3^1;sbit F=P2^7;sbit led1=P1^0;unsigned char num;unsigned char SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay()17
小总结
{ unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)
for(k=222;k>0;k--);} void senddata(unsigned int num){ unsigned char i;for(i=0;i
CLK=0;
AB=num&0x01;
num>>=1;
CLK=1;} } void main(){ unsigned i,s,g,b,q,first,second,third,fourth,t;TMOD=0X00;TH0=(65536-50000)/256;TL0=(65536-50000)%256;//中断请求 EA=1;ET0=1;TR0=1;while(1)//数码管依次计数 {
for(t=0;t
{ g=t%10;
s=(t/10)%10;
b=(t/100)%10;
q=t/1000;
first=SZ[g];
second=SZ[s];
third=SZ[b];
fourth=SZ[q];
for(i=0;i
小总结
SS=1;
SB=1;
SQ=1;
senddata(first);delay();
SG=1;
SS=0;
SB=1;
SQ=1;
senddata(second);
delay();
SG=1;
SS=1;
SB=0;
SQ=1;
senddata(third);delay();
SG=1;
SS=1;
SB=1;
SQ=0;
senddata(fourth);
delay();
}
P1=0X00;
delay();
fmq=0;
delay();
fmq=1;
delay();
}
} } void T0_time()interrupt 1 { //定时器
TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;
if(num==20)19
小总结
{
num=0;
} }