单片机交通灯实训报告(共8篇)
单片机交通灯实训报告 篇1
第一天:我们来到实训器材放置好的实验室里,老师安排好各个组员,发下实训报告、元件还有简易交通灯电路图来,然后告诉我们利用单片机设计一个基本交通灯控制系统,能够控制东西南北两个方向的交通,红绿灯用红、黄、绿三种颜色的12个发光二极管代替。我们根据原理图在板上布局好,12个发光二极管需要分散点,这样焊点较容易焊好
第二天:在布局好的8.7*6.2万能板上我们要把各个元件都焊好,将焊接好的万能板与下载线一端连接,另一端口连接到计算机的并口,接通电源,检测已焊接好的电路是否接通。纯硬件测试调试。焊接时是在覆铜一面进行焊接,没有覆铜一面用来放置元件。了解了焊接的原理,焊锡借助于助焊剂的作用,经过加热熔化成液态,进入被焊金属的缝隙,在焊接物的表面,形成金属合金使两种金属体牢固地连接在一起
第三天:主控芯片是采用AT89S52单片机,电路完成后检查,确定电路无虚焊、无短路、集成元件是否安装正确,开始调试。我们来到机房,老师讲解采用AT89S52单片机来设计一个基本交通灯控制,编译源程序,运用AEDK51软件编辑,生成HEX文件,烧写成实验板,接着我们跟着老师步骤学会自己编译源程序,汇编语言程序设计,要做好四个状态
第四天:运用AEDK51软件根据程序流程图编辑,编译源程序,汇编语言程序设计,做好四个状态之后,生成HEX文件,烧写成实验板,利用progisp软件调试,慢慢的改正错误,一次次的调试之后加上在同学帮助下终于完成了控制两个方向的单片机交通灯
第五天:成功完成单片机交通灯后,回顾这一周来的实训过程,总结实训中所学到的,认识了单片机的硬件结构,工作原理,汇编语言程序设计以及接口应用
实训结果:根据设计要求,将焊接好的万能板与下载线一端连接,另一端口连接到计算机的并口,运用AEDK51软件编辑,生成HEX文件,烧写成实验板,完成了利用单片机控制12个发光二极管的交替点亮和熄灭
实训心得体会:短短的一周经过老师的精心指导下,花费的时间与精力终于效果渐渐地出现了,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识.,也让我们对单片机有了更深一步的了解。我们注意到,应该在万能板上把12个发光二极管分散点布局,焊接时是在覆铜一面进行焊接,没有覆铜一面用来放置元件,细心的放好芯片再调试,打开AEDK51软件要细心编辑,根据程序流程一步一步认真的完成汇编语言程序设计,保存的文件名称只能是英文,充分利用了AT89S52芯片实现了能根据实际车流量通过单片机芯片的P1口控制红、黄、绿灯的燃亮与熄灭
实训步骤:1.焊接,了解了焊接的原理,无虚焊、无短路2.硬件调试3.软件调试4软件编程,汇编语言程序设计5利用单片机控制12个发光二极管的交替点亮和熄灭
单片机交通灯实训报告 篇2
1968年, 联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号, 面对绿灯的车辆可以直行, 左转弯和右转弯, 除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号, 面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号, 面对黄灯的车辆不能越过停车线, 但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
2 交通管理的方案论证
东西、南北两干道交于一个十字路口, 各干道有一组红、黄、绿三色的指示灯, 指挥车辆和行人安全通行。红灯亮禁止通行, 绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换, 且黄灯燃亮时间为东西、南北两干道的公共停车时间。设东西道比南北道的车流量大, 指示灯燃亮的方案如图1和表1所示:
路口指示灯工作情况说明:当2、4方向为红灯, 此道车辆禁止通行, 2、4道行人可通过;1、3道为绿灯, 此道车辆通过, 行人禁止通行。时间为60秒。黄灯闪烁5秒, 警示车辆和行人红、绿灯的状态即将切换。当2、4方向为绿灯, 此道车辆通行;1、3方向为红灯, 1、3道车辆禁止通过, 行人通行。时间为80秒。2、4方向车流大通行时间长。这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。此表可根据车流量动态设定红绿灯初始值。
3 系统硬件设计
选用设备:8051单片机一片, 8255并行通用接口芯片一片, 74LS07两片, MAX692'看门狗'一片, 共阴极的七段数码管两个双向晶闸管若干, 7805三端稳压电源一个, 红、黄、绿交通灯各两个, 开关键盘、连线若干。
系统总框图如图2所示。
交通灯硬件线路图3所示。
系统工作原理
开关键盘输入交通灯初始时间, 通过8051单片机P1输入到系统。由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息, 由8255的PA口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。8051通过设置各个信号等的燃亮时间、通过8031设置, 绿、红时间分别为60秒、80秒循环由8051的P0口向8255的数据口输出。通过8051单片机的P3.0位来控制系统是工作或设置初值, 当.牌位0就对系统进行初始化, 为1系统就开始工作。红灯倒计时时间, 当有车辆闯红灯时, 启动蜂鸣器进行报警, 3S后然后恢复正常。增加每次绿灯时间车流量检测的功能, 并且通过查询P2.0端口的电平是否为低, 开关按下为低电平, 双位数码管显示车流量, 直到下一次绿灯时间重新记入。绿灯时间倒计时完毕, 重新循环。
4 控制器的软件设计
4.1 每秒钟的设定
延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间, 另一种是采用软延时的方法。
4.2 计数器硬件延时
计数器初值计算。定时器工作时必须给计数器送计数器初值, 这个值是送到TH和TL中的。他是以加法记数的, 并能从全1到全0时自动产生溢出中断请求。因此, 我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:
式中, M为计数器摸值, 该值和计数器工作方式有关。在方式0时M为213;在方式1时M的值为216;在方式2和3为28。
计算公式
T= (M-TC) T计数
或TC=M-T/T计数
T计数是单片机时钟周期TCLK的12倍;TC为定时初值, 如单片机的主脉冲频率为TCLK12MHZ, 经过12分频:
方式0 TMAX=213×1微秒=8.192毫秒
方式1 TMAX=216×1微秒=65.536毫秒
显然1秒钟已经超过了计数器的最大定时间, 所以我们只有采用定时器和软件相结合的办法才能解决这个问题。
1秒的方法。我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求, 进入他的中断服务子程序。在中断服务子程序中, CPU先使软件计数器减1, 然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。
4.3 软件延时
MCS-51的工作频率为2-12MHZ, 我们选用的8051单片机的工作频率为6MHZ。机器周期与主频有关, 机器周期是主频的12倍, 所以一个机器周期的时间为12* (1/6M) =2us。我们可以知道具体每条指令的周期数, 这样我们就可以通过指令的执行条数来确定1秒的时间。
4.4 时间及信号灯的显示
4.4.1 8051并行口的扩展。
8051虽然有4个8位I/O端口, 但真正能提供借用的只有P1口, 因为P2和P0口通常用于传送外部传送地址和数据, P3口也有它的第二功能。因此, 8031通常需要扩展。由于我们用外部输入设定红绿灯倒计时初值、数码管的输出显示、红绿黄信号灯的显示都要用到一个I/O端口, 显然8031的端口是不够, 需要扩展。扩展的方法有两种: (1) 借用外部RAM地址来扩展I/O端口; (2) 采用I/O接口新片来扩充。我们用8255并行接口信片来扩展I/O端口。
4.4.2 显示原理。
当定时器定时为1秒, 时程序跳转到时间显示及信号灯显示子程序, 它将依次显示信号灯时间, 同时一直显示信号灯的颜色, 这时在返回定时子程序定时一秒, 在显示黄灯的下一个时间, 这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值, 重新进入循环。
4.4.3 8255PA口输出信号接信号灯。
由于发光二极管为共阳极接法, 输出端口为低电平, 对应的二极管发光, 所以可以用置位方法点亮红, 绿, 黄发光二极管。
4.4.4 8255输出信号与数码管的连接。
LED灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如SP, g, f, e, d, c, b, a管角上加上7FH所以SP上为0伏, 不亮其余为TTL高电平, 全亮则显示为8。
4.4.5 8255与8051的连接。
用8051的P0口的p0.7连接8255的片选信号CS我们用8031的地址采用全译码方式, 当p0.7=0时片选有效, 其他无效, p0.1 p 0.1用于选择8255端口。
4.5 程序设计流程图如图4所示
5 总结
本系统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器, 实现了能根据实际车流量通过8031芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮, 倒计时剩5秒时黄灯闪烁警示;车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。系统不足之处是不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。
参考文献
[1]陈忠平.单片机原理及接口[M].北京:清华大学出版社, 1997.
[2]李丹明.单片机原理与应用[M].东南大学出版社, 2000.
单片机控制交通灯 篇3
一、工作情况
采用12个共阳LED发光二极管模拟红、绿、黄交通灯,用单片机的P1口控制发光二极管的亮灭状态。而交通灯显示状态见表1。
表1 交通灯显示状态表
时刻南北方向东西方向
T1绿灯亮25秒红灯亮25秒
T2黄灯闪烁5秒红灯亮5秒
T3红灯亮25秒绿灯亮25秒
T4红灯亮5秒黄灯闪烁5秒
表1说明:
第一,当东西方向为红灯时,此道车辆禁止通行,东西道行人可通行;南北方向为绿灯,此道车辆通行,行人禁止通行,时间为25秒。同理,当南北方向为红灯时,此道车辆禁止通行,南北道行人可通行;东西方向为绿灯,此道车辆通行,行人禁止通行,时间为25秒。
第二,当南北方向黄灯闪烁5秒时,警示车辆和行人红、绿灯的状态即将切换,而此时东西方向为红灯。同理,当东西方向黄灯闪烁5秒时,警示车辆和行人红、绿灯的状态即将切换,而此时南北方向为红灯。
第三,这样如上表的时间和红、黄、绿灯依次出现的顺序,这样行人和车辆就能安全畅通的通行。
第四,此表设定红绿灯的初始值为T1时刻,循环。
二、硬件电路
电路图主要是三部分组成:复位电路、时钟电路、控制电路。
复位电路是采用手动复位,当按钮开关闭合时,单片机的RST脚接高电平VCC,从而使单片机强制复位,如不强制复位,因为在复位端RST与VCC之间连接了一个10μF电解电容,单片机上电瞬间,电解电容的电压瞬间变为VCC,电解电容对于这个瞬间的突变相当于短路,于是VCC(高电平)就相当于直接加在复位RET端,正是这个加在RET上的瞬间高电平使单片机复位,很快,电解电容充满电,在电路中相当于断路,于是RST复位端电平由高转低,单片机随即开始执行程序。AT89C51单片机有一个片内振荡器结构,但仍需要一个时钟电路才能使其工作,在XTAL1和XTAL2之间连接一个晶体振荡器,加上两个容量为30pF的电容器组成了时钟电路,这种使用晶振配合产生时钟信号的方法称为内部时钟方式,晶振的频率决定了该系统的时钟频率,本文选用的晶振为12MHz,那么单片机工作的频率就是12MHz,其机器周期为1μs。控制电路中采用的是共阳极的发光二极管,并由P1口作为输出口。当I/O口输出为低电平时,对应的交通灯亮;反之,当I/O口输出为高电平时,对应的交通灯灭(表2)。
表2说明:
第一,P1.7、 P1.6 、P1.5分别表示南北方向的红、绿、黄灯,P1.3、 P1.2、P1.1分别表示东西方向的红、绿、黄灯
第二,P1.4和 P1.0并没有用,其发光二极管一直处于熄灭状态,所以输入高电平1。
第三,黄灯闪烁即为一亮一灭依次循环,故在T21时刻南北方向的黄灯为亮,而在T22时刻南北方向的黄灯为灭。同理,在T41时刻东西方向的黄灯为亮,而在T42时刻东西方向的黄灯为灭。
三、软件设计
程序设计的思路为:主程序负责向P1口发送交通灯显示数据,用寄存器R2存放调用延时0.5S子程序的次数,只要修改调用次数就可獲得不同的延时时间(图1)。
图1交通灯模拟控制系统主程序流程图
单片机最小系统实训报告 篇4
一、实训目的
1、掌握并理解单片机最小系统的原理及制作, 牢记最小系统中各元器件 的参数及各元器的作用./
2、掌握单片机芯片内部的组成及存储机构。
3、理解常用指令的功能和使用方法。
4、掌握单片机的中断源,中断控制寄存器,中断响应过程,定时/计数器的电路结构、功能我使用方法,定时器/计数控制寄存器.5、复习利用Keil51软件对程序进行编译。
6、用protel软件绘制“单片机最小系统”电路,并用测试程序进行仿真。
7、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果能做出不分析我解释,能学出符合规格的实验报告。
二、实训工具
1、点偏激测试平台:PC机,串口线,并口线,单片机开发板
2、软件:keil51测试软件,protel仿真软件,DXP2004软件。
三、实训要求
通过实训,学生应达到以下经济方面的要求:
素质要求
1、以积极认真的态度对待本次实训,遵章守纪、团结协作。
2、善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立工作能力。
能力要求
1、模拟电路的理论知识
2、脉冲与数字电路的理念知识
3、通过模拟、数字电路实验有一定的动手能力
4、能熟练的制作单片机最小系统
5、嫩熟练的编写8951单片机汇编程序
6、能够熟练的运用仿真软件对单片机最小系统仿真
四、实训内容
1、掌握并理解“单片机最小系统”的原理及制作,牢记最小系统中各元器件的参数及格元器件的作用。
2、用keil51测试元件编写8951单片机汇编程序
3、用peotel软件绘制“单片机最小系统”单路原理图。
4、运用仿真软件对单片机最小系统进行仿真。五.实训基本步骤
1、用peotel乳酸钠几十年绘制“单片机最小系统”单路原理图。
2、根据原理图生成pcb图、GB文件。钻孔文件
3、绘制印刷电路板。
4、根据原理图焊接元件,生成单片机开发板。
5、用keil51软件编写单片机最小系统测试程序。
6、用仿真软件绘制单片机最小系统原理图,测试测量程序。
7、把测试程序拷贝到单片机里进行实物测试。
8、观察测试结果。
六、51单片机C编语言程序测试 测试程序流水灯1: //用定时器做流水灯测试 //为定时显示做准备
//P1-0-----PF1.3
L0-----L3 #include
#define unit unsigned int #define unchar unsigned char
sbit L0 = P1^0;sbit L1 = P1^1;sbit L2 = P1^2;sbit L3 = P1^3;
unsigned char data BUFFER[1]={0};
void main(void){ P2=0X0F;
EA=1;IT0=1;ET0=1;TMOD=0X01;TH0=-5000/256;TL0=-5000%256;TR0=1;
while(1){
};} //定时器0中断服务程序// void timer0(void)interrupt 1 using 1 { TH0=-5000/256;TL0=-5000%256;BUFFER[0]=BUFFER[0]+1;if(BUFFER[0]==100)
{
L3=!L3;
L2=!L2;
L1=!L1;
L0=!L0;
} } 测试程序流水灯2:
//此程序为了做花样流水灯的
//采用了C的宏定义 X 可以实现一改全改 #include
#define X 16 //
unsigned int time=0;
unsigned int a[X]={
0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,0X18,0X24,0X42,0X81,0X42,0X24,0X18,0X00,void main(void){ P1=0X0f;EA=1;IT0=1;ET0=1;TMOD=0X01;TH0=9000/256;TL0=9000%256;TR0=1;
while(1){
P1=a[time];};} //定时器0中断服务程序// void timer0(void)interrupt 1 using 1 { TH0=9000/256;TL0=9000%256;
time++;if(time==X)time=0;
} //此程序来测试数码管
//P0.0--P0.7
A B C D E F G dp //P2.0--P2.7
C0M0--------C0M8 #include
#define unit unsigned int #define unchar unsigned char
unsigned char data BUFFER[1]={0};unsigned char X=0;//共阳极码表数码管
unsigned char leddata[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
};
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄灭
0xFF //自定义
};
unsigned char com[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};void Delay(unsigned char cnt){ while(cnt--);} void xian_shi(unsigned char cp){ unsigned char i;unsigned int z=cp;for(i=0;i<8;i++)
{
P0=leddata[z%10];
P2=com[i];
Delay(200);
z=z/10;
} } void main(void){
P0=0X00;P2=0Xff;EX0=1;IT0=1;EA=1;
while(1){
xian_shi(X);};} //定时器0中断服务程序// void timer0(void)interrupt 1 using 1 { X++;if(X==25){
X=0;} } 此程序测试键盘
//P3.0---P3.3
L0-------L3 //从左到有显示为 0 1 2 3
P3.4/ //上///
5 6 7
P3.5/ //到///
9 A B
P3.6/ //下///
C D E F
P3.7/ //P3.4--=P3.7
H0----H3 #include
#define uchar unsigned char #define uint unsigned int
unsigned char led_data[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄灭
0xFF //自定义
};
void delay(uint i)
{ while(i--);}
uchar keyscan(void)// { uchar cord_h,cord_l;//行列值中间变量
P3=0x0f;
//行线输出全为0 cord_h=P3&0x0f;
//读入列线值
if(cord_h!=0x0f)
//先检测有无按键按下
{
delay(100);
//去抖
if(cord_h!=0x0f)
{
cord_h=P3&0x0f;//读入列线值
P3=cord_h|0xf0;//输出当前列线值
cord_l=P3&0xf0;//读入行线值
return(cord_h+cord_l);//键盘最后组合码值
}
}
return 0xFF;}
void main()
{ uchar key;P2=0xbb;
//1数码管亮 按相应的按键,会显示按键上的字符
while(1){ key=keyscan();//调用键盘扫描,switch(key){
case 0xEE:P0=led_data[0];break;//0 按下相应的键显示相对应的码值
case 0xED:P0=led_data[1];break;//1
case 0xEB:P0=led_data[2];break;//2
case 0xE7:P0=led_data[3];break;//3
case 0xDE:P0=led_data[4];break;//4
case 0xDD:P0=led_data[5];break;//5
case 0xDB:P0=led_data[6];break;//6
case 0xD7:P0=led_data[7];break;//7
case 0xBE:P0=led_data[8];break;//8
case 0xBD:P0=led_data[9];break;//9
case 0xBB:P0=led_data[10];break;//a
case 0xB7:P0=led_data[11];break;//b
case 0x7E:P0=led_data[12];break;//c
case 0x7D:P0=led_data[13];break;//d
case 0x7B:P0=led_data[14];break;//e
case 0x77:P0=led_data[15];break;//f } } } //此程序用来测试中断键盘P3.2 INT0 //下跳沿触发 // #include
#define unit unsigned int #define unchar unsigned char
sbit L0=P1^0;sbit L1=P1^1;sbit L2=P1^2;sbit L3=P1^3;
unsigned int times=0;
void delay(unsigned int cp)
{
unsigned int i=cp;
while(i--);
}
unsigned char leddata[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄灭
0xFF //自定义
};
unsigned char com[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
void xian_shi(unsigned char cp){
unsigned char i;unsigned int z=cp;for(i=0;i<8;i++)
{
P0=leddata[z%10];
P2=com[i];
delay(200);
z=z/10;
} }
void main(void){ P1=0Xdd;EX0=1;IT0=1;EA=1;
while(1){
xian_shi(times);};}
//INT0低电平中断服务程序// void intersvr0(void)interrupt 0 using 1 {
L0=!L0;
L1=!L1;
L2=!L2;
L3=!L3;
times ++;}
//最简单的24小时显示 #include
#define unit unsigned int #define unchar unsigned char
unsigned char data BUFFER[1]={0};unsigned char time[3]={0};
unsigned char leddata[]={
0xC0, //“0”
0xF9, //“1”
0xA4, //“2”
0xB0, //“3”
0x99, //“4”
0x92, //“5”
0x82, //“6”
0xF8, //“7”
0x80, //“8”
0x90, //“9”
0x88, //“A”
0x83, //“B”
0xC6, //“C”
0xA1, //“D”
0x86, //“E”
0x8E, //“F”
0x89, //“H”
0xC7, //“L”
0xC8, //“n”
0xC1, //“u”
0x8C, //“P”
0xA3, //“o”
0xBF, //“-”
0xFF, //熄灭
0xFF //自定义
};
unsigned char com[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};void Delay(unsigned char cnt){ while(cnt--);} void xian_shi(void){ unsigned char i;unsigned int SS=time[0]+100*time[1]+10000*time[2];for(i=0;i<6;i++)
{
P0=leddata[SS%10];
P2=com[i];
Delay(200);
SS=SS/10;
} } void main(void){ P0=0X00;P2=0Xff;EA=1;IT0=1;ET0=1;TMOD=0X01;TH0=0xec;TL0=0x78;
TR0=1;
while(1){
xian_shi();};} //定时器0中断服务程序// void timer0(void)interrupt 1 using 1 { TH0=0xec;TL0=0x78;
BUFFER[0]=BUFFER[0]+1;if(BUFFER[0]==100){
time[0]++;
BUFFER[0]=0;
if(time[0]==60)
{
time[0]=0;
time[1]++;
if(time[1]==60)
{
time[1]=0;
if(time[1]==60)
{
time[1]=0;
time[2]++;
if(time[2]==24)
}
}
}
time[2]=0;
} }
七、实训心得
高职高专教育培养的是技术应用型人才,学校为了陪养我们的创新精神和工程实践能力,提高我们的综合素质,我们进行实训,在实践中相互学习和进步。通过实践我们更清楚的认识了我们所学习专业在实践中的运用。也感觉到理论和实践的差距。
八、附件
单片机交通灯实训报告 篇5
我们来到实训室,根据老师发下来的项目实训资料来完成单片机控制4个8×8LED显示实训。我们认真阅读实训内容,打开电脑,打开单片机系统,打开proteu软件,放置以及排序芯片,电阻、译码器、单片机控制的4个8×8LED点阵显示屏。
第二天:
对做好的硬件连接之后,检查所连接好的线是否正确。根据任意编程进行点阵显示,排查连接的是否有错误。
第三天:
分别打开EAT589、字模软件,在EAT598软件上进行编程的时候分清子程序码,使用字模软件的横向取模,取汉字的A51格式。
第四天:
打开软件,在软件上进行汇编语言程序设计,设计出了汉字显示,学习和熟悉单片机的指令程序。第五天:
根据之前所设计的汉字显示来修改,直到完成汉字的切换以及汉字的滚动效果。然后根据自己的兴趣完成自己的作品。
实训结果:
硬件连接完成,可以实现之后的汉字显示汉字切换以及汉字滚动,认真仔细的接好硬件连接,注意在字模上的取模,经过系列的汇编语言程序设计正常运行
体会:
通过这一周的实训,我们很好的完成了单片机的实训,收获了许多单片机的知识。完成了单片机控制4个8×8点阵显示汉字、切换以及滚动汉字。在这次的单片机实训中,了解单片机的用途,译码器原理,掌握单片机的编译程序和装载并进行运行,学习硬件和软件的基本操作,熟悉运行结果及检查进行实践。
ORG 0000H
LJMP MAIN
ORG 0040H
MAIN:MOV SP,#5FH
MOV DPTR,#TAB
MOV R1,#0
LCALL LA
LJMP MAIN
LA:
MOV R0,#00H
MOV R2,#0
MOV R4,#32
LB:
MOV P1,R0;行
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
INC R2
MOV A,R2
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R2
INC R0
DJNZ R4,LB
MOV R5,#8
DJNZ R5,LA
RET
DELAY:MOV R6,#20
D1:
D2:
MOV R7,#30DJNZ R7,$ DJNZ R6,D1 RET
TAB:
DB04H,20H,04H,20H,0FFH,0FEH,04H,20H,00H,00H,7CH,0F8H,44H,88H,44H,0F8H DB44H,88H,7CH,88H,44H,0F8H,44H,88H,7DH,08H,45H,08H,42H,28H,04H,10H
END
实训步骤:
1.硬件连接
2.检查连线是或否正确
3.根据编程进行点阵显示
4.打开软件进行设计汉字的显示
5.分清程序各码进行编译程序并运行
单片机实训 篇6
//#include
//注意那个LCD_Wait()函数,它是判“忙”标志的,在实际硬件要把注掉的那种打开
//Port Definitions********************************************************** sbitLcdRs = P2^0;sbit:特殊功能寄存器,位寻址,位变量名=特殊功能寄存器名^位位置
sbitLcdRw = P2^1;sbitLcdEn = P2^2;sfrDBPort = 0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
sfr特殊功能寄存器名=特殊功能寄存器地址常数
sfr16: 16位特殊功能寄存器,字寻址,低位在低字节,高
位在高字节
//内部等待函************************************************************************** unsigned char LCD_Wait(void){ LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();
数 //while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80
//实际硬件时打开此语句
LcdEn=0;returnDBPort;} //向LCD写入命令或数据************************************************************ #define LCD_COMMAND
0
// Command #define LCD_DATA
// Data #define LCD_CLEAR_SCREEN 0x01
// 清屏 #define LCD_HOMING
0x02
// 光标返回原点 voidLCD_Write(bit style, unsigned char input){ LcdEn=0;LcdRs=style;LcdRw=0;_nop_();
} DBPort=input;_nop_();//注意顺序 LcdEn=1;_nop_();//注意顺序 LcdEn=0;_nop_();LCD_Wait();
//设置显示模式************************************************************ #define LCD_SHOW
0x04
//显示开 #define LCD_HIDE
0x00
//显示关
#define LCD_CURSOR
0x02 //显示光标 #define LCD_NO_CURSOR 0x00
//无光标
#define LCD_FLASH
0x01
//光标闪动 #define LCD_NO_FLASH 0x00
//光标不闪动
voidLCD_SetDisplay(unsigned char DisplayMode){ LCD_Write(LCD_COMMAND, 0x08|DisplayMode);}
//设置输入模式************************************************************ #define LCD_AC_UP
0x02 #define LCD_AC_DOWN 0x00
// default
#define LCD_MOVE
0x01
// 画面可平移 #define LCD_NO_MOVE 0x00
//default
voidLCD_SetInput(unsigned char InputMode){ LCD_Write(LCD_COMMAND, 0x04|InputMode);}
//初始化LCD************************************************************ voidLCD_Initial(){ LcdEn=0;LCD_Write(LCD_COMMAND,0x38);
//8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
//开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
//AC递增, 画面不动 } //************************************************************************ voidGotoXY(unsigned char x, unsigned char y){ if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));}
void Print(unsigned char *str){ while(*str!='){
LCD_Write(LCD_DATA,*str);
str++;} } voidLCD_Print(unsigned char x, unsigned char y, unsigned char *str){ GotoXY(x,y);Print(str);}
#include //用AT89C51时就用这个头文件
//#include
//定义DQ引脚为P3.4 /***********ds18b20延迟子函数(晶振12MHz)*******/ /***********DS18B20对时间要求很严,但只能长不能短 ************在11.0592M下也行,因为时间长些********/ void delay_18B20(unsigned int i){ while(i--);
/**********ds18b20初始化函数**********************/
void Init_DS18B20(void){ unsigned char x=0;
DQ = 1;
//DQ复位
delay_18B20(8);//稍做延时
DQ = 0;
//单片机将DQ拉低
delay_18B20(80);//精确延时大于 480us
DQ = 1;
//拉高总线
delay_18B20(14);
x=DQ;
//稍做延时后如果x=0则初始化成功 x=1则初始化失败
delay_18B20(20);}
/***********ds18b20读一个字节**************/
unsigned char ReadOneChar(void){ unsigned char i=0;unsigned char dat = 0;for(i=8;i>0;i--)
{
DQ = 0;// 给脉冲信号
dat>>=1;
DQ = 1;// 给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
} return(dat);}
/*************ds18b20写一个字节****************/
voidWriteOneChar(unsigned char dat){ unsigned char i=0;for(i=8;i>0;i--)
} } { DQ = 0;DQ = dat&0x01;delay_18B20(5);DQ = 1;dat>>=1;/**************读取ds18b20当前温度************/ unsigned char *ReadTemperature(char TH,charTL,unsigned char RS){ unsigned char tt[2];Init_DS18B20();
} WriteOneChar(0xCC);
// 跳过读序号列号的操作
WriteOneChar(0x4E);// //写入“写暂存器”命令,修改TH和TL和分辩率配置寄存器
//先写TH,再写TL,最后写配置寄存器 WriteOneChar(TH);//写入想设定的温度报警上限 WriteOneChar(TL);//写入想设定的温度报警下限 WriteOneChar(RS);//写配置寄存器,格式为0 R1 R0 1,1 1 1 1
//R1R0=00分辨率娄9位,R1R0=11分辨率为12位 delay_18B20(80);
// this message is wery important Init_DS18B20();WriteOneChar(0xCC);
// 跳过读序号列号的操作 WriteOneChar(0x44);// 启动温度转换
delay_18B20(80);
// this message is wery important Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度 delay_18B20(80);tt[0]=ReadOneChar();
tt[1]=ReadOneChar();
return(tt);
//读取温度值低位
//读取温度值高位
#include //用AT89C51时就用这个头文件
//#include
//sbit DQ = P3^4;
//定义DQ引脚为P3.4 unsigned char t[2],*pt;
//用来存放温度值,测温程序就是通过这个数组与主函数通信的
unsigned char TempBuffer1[9]={0x2b,0x31,0x32,0x32,0x2e,0x30,0x30,0x43,'};
//显示实时温度,上电时显示+125.00C unsigned char TempBuffer0[17]={0x54,0x48,0x3a,0x2b,0x31,0x32,0x35,0x20,0x54,0x4c,0x3a,0x2b,0x31,0x32,0x34,0x43,'};
//显示温度上下限,上电时显示TH:+125 TL:+124C
unsigned char code dotcode[4]={0,25,50,75};/***因显示分辨率为0.25,但小数运算比较麻烦,故采用查表的方法******* 再将表值分离出十位和个位后送到十分位和百分位********************/
void covert0(unsigned char TH, unsigned char TL)//将温度上下限转换为LCD显示的数据 {
if(TH>0x7F)
//判断正负,如果为负温,将其转化为其绝对值
{
TempBuffer0[3]=0x2d;
//0x2d为“-”的ASCII码
TH=~TH;TH++;
}
else TempBuffer0[3]=0x2b;//0x2B为“+”的ASCII码
if(TL>0x7f)
{
TempBuffer0[11]=0x2d;
//0x2d为“-”的ASCII码
TL=~TL+1;
}
else TempBuffer0[11]=0x2b;//0x2B为“+”的ASCII码
TempBuffer0[4]=TH/100+0x30;
//分离出TH的百十个位
if(TempBuffer0[4]==0x30)TempBuffer0[4]=0xfe;//百位数消隐
TempBuffer0[5]=(TH%100)/10+0x30;
//分离出十位
TempBuffer0[6]=(TH%100)%10+0x30;
//分离出个位
TempBuffer0[12]=TL/100+0x30;
//分离出TL的百十个位
if(TempBuffer0[12]==0x30)TempBuffer0[12]=0xfe;//百位数消隐
TempBuffer0[13]=(TL%100)/10+0x30;
//分离出十位
TempBuffer0[14]=(TL%100)%10+0x30;
//分离出个位 }
void covert1(void)//将温度转换为LCD显示的数据 { unsigned char x=0x00,y=0x00;t[0]=*pt;pt++;t[1]=*pt;
if(t[1]>0x07)
//判断正负温度
{
TempBuffer1[0]=0x2d;
//0x2d为“-”的ASCII码
t[1]=~t[1];
/*下面几句把负数的补码*/ t[0]=~t[0];
/* 换算成绝对值*********/ x=t[0]+1;
/***********************/ t[0]=x;
/***********************/ if(x>255)
/**********************/ t[1]++;
/*********************/
}
else TempBuffer1[0]=0x2b;//0xfe为变“+”的ASCII码
t[1]<<=4;//将高字节左移4位
t[1]=t[1]&0x70;//取出高字节的3个有效数字位
x=t[0];
//将t[0]暂存到X,因为取小数部分还要用到它
x>>=4;
//右移4位
x=x&0x0f;
//和前面两句就是取出t[0]的高四位
t[1]=t[1]|x;
//将高低字节的有效值的整数部分拼成一个字节
TempBuffer1[1]=t[1]/100+0x30;
//+0x30 为变 0~9 ASCII码
if(TempBuffer1[1]==0x30)TempBuffer1[1]=0xfe;//百位数消隐
TempBuffer1[2]=(t[1]%100)/10+0x30;
//分离出十位
TempBuffer1[3]=(t[1]%100)%10+0x30;
//分离出个位
t[0]=t[0]&0x0c;
//取有效的两位小数
t[0]>>=2;
//左移两位,以便查表
x=t[0];
y=dotcode[x];
//查表换算成实际的小数
TempBuffer1[5]=y/10+0x30;
//分离出十分位
TempBuffer1[6]=y%10+0x30;
//分离出百分位 }
void delay(unsigned char i){ while(i--);}
main(){ unsigned char TH=110,TL=-20;
//下一步扩展时可能通过这两个变量,调节上下限
//测温函数返回这个数组的头地址 while(1){
pt=ReadTemperature(TH,TL,0x3f);//上限温度-22,下限-24,分辨率10位,也就是0.25C
} }
delay(100);covert1();covert0(TH,TL);
//读取温度,温度值存放在一个两个字节的数组中, LCD_Initial();
//第一个参数列号,第二个为行号,为0表示第一行
单片机实训总结 篇7
在大二的时候,我就听学长介绍过单片机,当时感觉很神奇,从此就对单片机特别感兴趣,也感觉它特别有用。于是经学长推荐,在大二上学期我利用学习之余在图书馆借书,学习了KILE和Proteus软件,刚开始学习的时候,对单片机没有什么认识,不知道什么是单片机,更不知道它有什么作用。通过学习才大体知道了单片机的一些知识。由中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等集成在一块芯片上,构成了一个单片微型计算机,简称为单片机。也算给我正式学习单片机打下一个基础。
在大二下学期,我购买了一套单片机学习开发板和郭天祥主编的《新概念51单片机C语言教程》,从此正式开启我的单片机学习之路。在刚开始学时,就完全模仿郭天祥主编的这本书再结合开发板一步一步的学,从点亮一个发光二级管,流水灯,数码管,定时器,中断,矩阵键盘,AD、DA,串口通行,I2C总线等一步一步的深入学习。此时,我虽然能看懂程序,一些简单的程序可以自己编写,但一些比较复杂的自己编不出来。在大二暑假,我发现了郭天祥主讲的《十天学
会单片机》视屏,于是我坚持天天看视屏,然后在自己根据视屏内容结合开发板写程序,调程序,就这样学了一个暑假。通过这个视屏,我初步了解了单片机的硬件结构,编程方法及调试方法(用KILE软件调试和用开发板调试),寄存器的使用,学会了如何看芯片资料,初步开始利用芯片时序图来编程。可以说这个视屏对我学习单片机有巨大的帮助,更夸张的说是这个视屏将我带进了单片机的世界,让我尽情的体验单片机带给我的快乐!
在大三上学期,我有幸参加了教改班的单片机课程学习。我觉得邓老师的教学很有特点,让我们自己一个模块、一个模块的焊电路板,写程序,调试,然后上讲台讲。这样不仅提高了我对单片机的进一步学习,更锻炼了我在公众面前的表达能力。我觉得大学的教育就应当如此,应该多注重学生的实际动手操作能力,只有自己亲自动手做了,才能体会到其中的艰辛,当然还伴随着众多的乐趣。在经过大三一学期的学习,我的单片机水平有了质的飞跃。首先焊电路板,从单片机最小系统、电源、流水灯开始,第一次自己通过模电上学的一个电源的构成知识做了一个电源,知道了用HC573锁存器对流水灯的作用以及上拉电阻的用法。其次焊数码管,数码管有共阴共阳之分,焊电路板以及写程序都有区别。接着焊了键盘、串口通信、液晶、AD、DA、I2C总线24C02芯片、时钟芯片DS1302、DS12C887、温度传感芯片18B20以及其他模块。通过焊电路,现在对单片机各个模块的硬件设计了如指掌,通过软件调试,我已经基本掌握用芯片资料时序图和寄存器编程。最后阶段我用了一个多月的时间做了三个时钟,下面以我做的三个时钟为例讲一下感受:
1:用定时器中断、24C02芯片、按键和1602液晶做了一个年、月、日、星期、时、份、秒都可调的时钟,充分利用24C02掉电保护的特点,当关闭电源后再次打开,时钟会从上次停止的时间继续走。在做这个时钟时,要注意24C02的时序图以及寄存器的初始化。并且要注意写完时钟后,首次使用24C02,时钟可能是乱码,只需要用按键的加减键将其调为可读的时钟后,以后上电数据就可以正常走。
2:用DS1302、18B20和液晶做了一个不可调节的时钟。设计这个芯片的初衷是学习DS1302和18B20这两个芯片,于是我写程序实现了一个时钟从设定的初值时间开始走,并且显示温度。在设计中,一定要对DS1302寄存器初始化后他才能正常工作,在对照18B20芯片手册写程序时,我充分体验到了邓老师说的一句话“硬件设计简单,软件必然是复杂的”。在对18B20写程序时,遇到了很多麻烦,都是时序的问题。
3:用DS12C887、按键和液晶做了一个年、月、日、星期、时、份、秒可调节的时钟。由于DS12C887内部自带晶振和可充电锂电池,上电后自动充电,所以这个时钟掉电后内部时钟继续走,。在写这个时钟时,DS12C887一直用不起来,开始是由于时序不对,后来表不走,最后发现内部晶振没起振,是因为对其内部寄存器的初始化不对。总之在遇到各种奇怪的现象后不断调试,最终将三个时钟调出来了。
写完这三个时钟,我收获挺大的,现在可以比较熟练地利用时序图写程序,也对单片机的定时、中断有了进一步的了解,可以说这是我单片机学习的又一大提高。
有时候单片机的学习很单调,比如检查电路,程序怎么也写不对,这些问题检查好多遍也没解决,有些知识学起来很抽象,不容易理解,只能慢慢适应,一边学习理论知识,一边编写程序,将程序刷入单片机进行耐心的调试,通过这种方式才能更快速的学习单片机。同时也会从学习中体会成功的喜悦。
单片机交通灯参考文献 篇8
[1]何悠. 基于单片机的智能交通灯控制系统实现方案分析[J]. 数字技术与应用,(10):18-19.
[2]秦风元. 基于51单片机的交通灯设计[J]. 时代农机,2017,44(12):126-127.
[3]贾皓宇. 基于单片机的智能交通灯控制系统[J]. 电脑迷,(02):99.
[4]王刚. 基于单片机AT89S51交通灯的仿真设计[J]. 价值工程,2018,37(17):131-132.
[5]潘琳. 基于STC89C52单片机的智能交通灯控制系统设计[J]. 信息化研究,2018,44(03):74-78.
[6]钱进. 基于单片机的交通灯智能控制分析[J]. 山东工业技术,2018(19):123.
[7]郭玉秀. 基于单片机的十字路口交通灯的设计及仿真[J]. 现代制造技术与装备,2018(08):66-68.
[8]胡瑞楠. 基于51单片机的智能交通灯系统设计[J]. 通讯世界,2018(08):252-253.
[9]武玉升. 基于单片机的智能交通灯控制系统仿真设计[J]. 电子世界,2018(21):118-119+122.
[10]贲艳波. 一种基于单片机的交通灯的设计[J]. 南方农机,2018,49(21):145.
[11]高婷婷,郭宁,史红娟. 基于单片机的智能交通灯系统仿真研究[J]. 当代化工研究,(09):26-27.
[12]郭占苗. 基于STC89C52单片机的交通灯设计[J]. 工业控制计算机,2017,30(06):138-139.
[13]林田卓. 基于51单片机的交通灯控制系统的研究与设计[J]. 电子世界,2017(12):184.
[14]淡海英,杨聪. 基于单片机控制的十字路口交通灯设计与分析[J]. 电子测试,2017(13):9+8.
[15]郑丽敏. 基于单片机交通信号灯控制系统的设计与仿真[J]. 产业与科技论坛,2017,16(16):56-57.
[16]于希辰. 基于AT89C51单片机的数显交通灯设计[J]. 科技资讯,2017,15(27):39-40.
[17]郝庆妮,吴继侠,张姣. 基于单片机的交通灯控制器设计[J]. 电子制作,2017(21):69-70+82.
[18]陈君. 基于AT89S51单片机的智能交通灯设计[J]. 电子技术与软件工程,2016(01):260-261.
[19]冯谷军,罗文,田嵩. 基于单片机的语音元素在智能交通灯设计中的应用[J]. 科技展望,,25(26):136-137.
[20]杨宁,阳泳,江世明. 基于单片机的智能交通灯设计与论述[J]. 电子世界,2016(03):52-53.
[21]陆海全,李志军,闫非凡,吴江龙. 基于单片机的智能交通灯控制系统[J]. 电子技术与软件工程,2016(03):51-53.
[22]张维. 基于单片机的可编程智能交通灯控制系统[J]. 电子设计工程,2016,24(04):171-174.
[23]王明哲. 基于89C51单片机的现代交通灯设计[J]. 电子技术与软件工程,2016(07):254-255.
[24]王婷,李晖. 基于单片机移动交通灯的设计[J]. 电子制作,2016(09):29+34.
[25]周文谊. 基于单片机虚拟串口实现交通灯远程控制仿真[J]. 科技风,2016(18):237.
[26]蔡姗姗. 基于AT89C51单片机的交通灯设计与仿真[J]. 天津科技,2016,43(09):42-43+45.
[27]王麒贵. 基于单片机的LED模拟交通灯设计[J]. 电子制作,2016(21):8-9.
[28]万良生. 单片机在城市智能交通灯控制中的应用[J]. 门窗,(09):409+411.
[29]李娜,虎号,牛晓飞. 基于单片机交通灯设计的实践教学[J]. 宿州学院学报,2014,29(12):125-126+135.
[30]王希娟,李娟娟. 基于Arduino单片机的`交通灯倒计时显示器设计[J]. 计算机光盘软件与应用,2014,17(22):281+283.
[31]张晓军,陆兴华. 基于单片机的交通灯控制系统的设计与仿真[J]. 电子测试,2014(S2):10-11+20.
[32]汤拓. 基于51单片机的交通灯设计[J]. 中国新通信,2015,17(06):110.
[33]马云鹏. 基于单片机的交通灯设计[J]. 企业导报,2015(06):180-181.
[34]聂辉. 基于单片机的交通灯智能控制[J]. 信息与电脑(理论版),2015(08):30-31.
[35]李秀苹. 基于51单片机交通灯电路的研究[J]. 山东工业技术,2015(15):105.
[36]王语园,张鑫. 基于STC89C52单片机的交通灯控制系统设计[J]. 福建电脑,2015,31(07):101-102.
[37]徐燕燕,晏波,刘云. 基于AT89C52单片机的多功能交通灯设计与仿真[J]. 南方农机,2015,46(08):52+54.
[38]王洋. 基于单片机的智能交通灯控制系统分析[J]. 数字技术与应用,2015(08):20.
[39]何正言,田得良,庄卓文,黄江辉,叶晓靖. 基于信号校验技术的单片机交通灯控制终端[J]. 电子设计工程,2015,23(19):181-185.
[40]赵明,杜坚,秦连升. 一种基于单片机的交通灯控制系统[J]. 信息通信,2014(01):82+85.
[41]崔巍,曹新亮,陈羽. 基于单片机的太阳能可控交通灯设计[J]. 信息技术,2014(02):84-86+90.
[42]刘新英,高玉雪. 基于单片机的交通灯控制系统设计[J]. 电子设计工程,2014,22(03):174-177.
[43]王贯安. 基于AT89C51单片机的交通灯控制系统设计与仿真[J]. 硅谷,2014,7(07):24+37.
[44]高偲航. 基于单片机AT89S51自制数码显示交通灯[J]. 电子制作,2014(08):15-16.
[45]姚龙水,王永飞. 基于AT89C51单片机的交通灯控制系统设计[J]. 电子世界,(23):17-18.
[46]徐鑫,杨利亚,周磊,胡允森,郑建领. 单片机智能交通灯控制系统的设计[J]. 电子世界,2013(23):23-24.
[47]肖传清. 基于单片机控制交通灯的设计[J]. 赤峰学院学报(自然科学版),2013,29(22):32-33.
[48]卢文汐. 基于单片机的交通灯控制系统的设计[J]. 科技促进发展,(S1):15+14.
[49]熊丽萍,张翠云,马广原. 基于单片机的交通灯控制系统设计[J]. 机电工程技术,2013,42(03):80-82.
[50]刘静. 利用单片机实现对交通灯的模拟控制[J]. 计算机光盘软件与应用,2013,16(08):30+32.
[51]黄英. 单片机智能交通灯设计[J]. 无线互联科技,2013(06):138.
[52]欧玉荣,张力,王虎,王正玉. 基于51单片机与nRF905收发器的无线智能控制交通灯的设计[J]. 陕西科技大学学报(自然科学版),,30(01):54-57.
[53]陈刚,鲁俊婷. 基于AT89S51单片机控制的交通灯管理系统[J]. 黄河水利职业技术学院学报,2012,24(01):50-51+54.
[54]吴国文. 基于AT89C51单片机的交通灯控制系统设计与仿真[J]. 现代电子技术,2012,35(05):144-146.
[55]覃娴. 基于单片机的新型智能交通灯控制系统[J]. 福建电脑,2012,28(04):153-154.
[56]郭海丽. 基于Proteus与单片机的交通灯控制系统的设计[J]. 衡水学院学报,2012,14(04):126-128.
[57]李栋,章冠,郭建强. 基于单片机的交通灯倒计时显示方面的研究[J]. 信息技术,2012,36(07):125-127.
[58]张菲,徐菲澳,葛贞笛. 基于单片机交通控制系统的探究[J]. 科技创新导报,2012(22):119.
[59]淡海英. 基于单片机AT89C51控制的十字路口交通灯系统设计[J]. 中小企业管理与科技(下旬刊),2012(08):319.
【单片机交通灯实训报告】推荐阅读:
单片机实训作业07-27
单片机实训室简介10-14
单片机PLC实训实验顺序01-06
基于单片机的交通灯控制系统09-07
51单片机控制交通灯原理图及C语言程序01-07
单片机实验报告二10-14
单片机综合实验报告格式12-25
单片机课程学习总结报告05-21
哈工大单片机实验报告09-13
重邮51单片机课程设计报告10-05