单片机课程设计报告 - 图文

更新时间:2023-12-15 18:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机流水灯课程设计报告

湖 北 理 工 学 院

电气与电子信息工程学院

《单片机课程设计报告》

实习名称: 单片机课程设计 专业名称: 轨道交通信号与控制 班 级: 轨道交通信号与控制2014(1)班 学 号: 姓 名:

指导教师: 实习时间: 20161121 - 20161202 实习地点: K2-314

单片机流水灯课程设计报告

目录

一. 摘要---------------------------------------------------3

二. 关键词------------------------------------------------3

三. 课程简介---------------------------------------------3

四. 电路元件清单---------------------------------------4

五. 系统方案选择与论证-----------------------------5

六. 工作原理---------------------------------------------5

七. 实物调试及结果分析----------------------------11

八. 课程设计小结--------------------------------------12

单片机流水灯课程设计报告

流水灯设计

一. 摘要:

单片机技术在社会各领域中具有广泛的应用,在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式市发展速度,成为日后此系统中的核心部分。由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。本文主要讲的是单片机,课题名称为单片机流水灯控制,它使我们学会了如何使用单片机控制我们日常生活中的多设备设施的应用。本课题详细地介绍了一种由AT-89C51集成块编程实现的控制电路,它完成了单片机流水灯控制功能,并给出了具体的硬件电路和相应的程序。这种控制电路可靠性,灵活性高,使用范围广,特别适合中小城市的交通灯、霓虹灯等的应用。而且,它对其他类似系统的开发具有一定的借鉴意义。

二. 关键词

单片机,流水灯,硬件电路,程序

三. 课题简介:该课程设计介绍一个采用AT-89C51单片机芯片的P0口和P1口控制

制作的流水灯。P0口接的是4*4的Led点阵,通过51最小系统版来控制,从而实现自动闪烁的功能。P1口接的是矩形键盘,也通过51最小系统版的控制来实现密码锁和计算器的功能。电路采用5V电源供电,主要由4个板块构成,设计思路清晰,操作简便,可广泛用于灯光控制、密码解锁等领域。

四. 电路元件清单

元件 晶振 复位开关 数量 元件 1 USB接口 数量 1 17 USB数据线 1 按钮开关 1 三极管 4 2 ATMEL24C02芯片 1 1 2 若干 若干 电阻 ST89C51芯片 1 排阻 1 底座 电容 瓷片电容 2 导线 发光二极管 17 排针 4 洞洞板 单片机流水灯课程设计报告

五、 系统方案选择与论证

方案一:硬件方面:流水灯采用的是利用ATC9851单片机的P1口、P0口来完成信号输入与转换,最终的显示结果通过LED显示出来,另外加了4个三极管来控制LED的工作电流。P1口所接的矩阵键盘又为整个作品增加了密码解锁和计算器的新功能。电路原理图如附录所示。软件方面:流水灯的自动变换部分是通过软件编写延时以及变换不同的类型,用40MS作为开关转化过渡,采用的是主、子程序,循环结构,另外加了开关扫描程序,扫面开关利用软件依次去抖动延时20MS、10MS、5MS、3MS、1MS,每次抖动10次,具体的程序见下文。

方案二:运用电子电路设计流水灯,该方案主要利用到了状态控制器,状态译码器,状态控制器主要用于记录流水灯的工作状态,再通过状态译码器分别点亮相应状态的信号灯。

由以上两种方案比较可以看出,利用ATC9851单片机所设计的流水灯比利用电子电路所设计的流水灯具有明显的优越性。利用ATC9851单片机控制的硬件电路比较简单,但功能作用并不低于电子电路设计的,方便小巧又通俗易懂,因此我们选择单片机来控制流水灯。

六、 工作原理

如下图为流水灯控制原理图,其中单片机采用的是AT89C51,P0口所接的51最小系统版作为Led发光管的输出控制,P1口所接的矩阵键盘作为Led发光管的输入控制。

单片机流水灯课程设计报告

1.该作品4个模块的工作原理:

(1). 51最小系统板(AT89C51开发板最核心的部位,由一块AT89C51芯片,排阻R1,排针H1、H2,、H3、H4,电解电容C1,瓷片电容C2、C3,晶振Y1,复位按键S1构成):在芯片内已编入相应程序的前提下,对矩阵键盘发出的指令进行识别、判断,最后输出相应指令,使Led点阵得到理想的变化状态。

(2).EEPROM(又叫带电可擦可编程只读存储器,由ATMEL29 24C02芯片和电容构成):主要作用于密码解锁和计算器上的数据存储和校验,它的特点是能够用于存放某些需要断电后保存的数据。

单片机流水灯课程设计报告

(3).矩阵键盘(由16个开关构成):它主要是提供输入信号。在芯片内已对各个按键赋予了相应的功能,S1、S2、S3、S5、S6、S7、S9、S10、S11、S13分别对应数字1、2、3、4、5、6、7、8、9、0,S4对应解锁/改密码/+/-功能、S8对应确定功能、S12对应退出功能、S14对应计算器功能、S15对应欣赏功能(即可观看Led自动闪烁)、S16对应强制重置密码1234。

(4).4×4Led点阵(由16个Led晶体管,4个S8050 D331三极管和若干排针构成):用来显示解锁密码的对错,流水灯自动变换花型,计算结果显示。其中三极管主要是通过控制电流,把微弱信号放大成幅度值较大的电信号的作用。

单片机流水灯课程设计报告

2.主程序流程图:

初始化 开始

输入密码解锁解错误 Led键盘显示‘×’ 正确 Led灯光闪烁 计算器功能 Led键盘显示‘√’ 此控制器欲使用其闪烁和计算功能时必须提前解锁,正确后才能通过矩阵键盘来实现Led闪烁功能和计算上的加减乘除,否则永远无法使用其各项功能,这与手机密码解锁的原理相一致。

3.部分程序清单 主程序如下:

#include \

int main(void) {

KeyData_Eeprom_Read(); //读取i2c_eeprom_密码值 Key_Init(); //按键初始化 Dynamic_Start();//开始动画 while(1) {

Key_Text();//按键检测+值转换 Unlock_Text(); //解锁检测 SetKey_Text(); //设置密码检测 ResetKey_Text();//重置密码检测

Calculate_Text();//开启计算器功能检测

Dynamic_LEDenjoy_Text(); //开启动画欣赏功能检测 Dynamic_Error_Text(); //未解锁报错检测 }

return 0; // int 型主函数 main 的返回值为 0

单片机流水灯课程设计报告

EEPROM存储程序如下: #include \void i2c_Start(void) { i2c_SDA = 1;i2c_Delay_10Us();i2c_SCL = 1;i2c_Delay_10Us();i2c_SDA = 0; i2c_Delay_10Us();i2c_SCL = 0;i2c_Delay_10Us(); }

void i2c_Stop(void) { i2c_SCL = 0;i2c_Delay_10Us();i2c_SDA = 0;i2c_Delay_10Us();i2c_SCL = 1; i2c_Delay_10Us();i2c_SDA = 1;i2c_Delay_10Us(); }

unsigned char i2c_Write_Byte(unsigned char write_byte) { unsigned char i, j;j = 0;

for(i = 0; i < 8; i++) {i2c_SDA = write_byte >> 7; write_byte <<= 1; i2c_Delay_10Us();i2c_SCL = 1;i2c_Delay_10Us();i2c_SCL = 0;i2c_Delay_10Us(); }

i2c_SDA = 1;i2c_Delay_10Us();i2c_SCL = 1; while(i2c_SDA) { j++;

if(j > 200)

{i2c_SCL = 0;i2c_Delay_10Us();

return 0;

} }

i2c_SCL = 0;i2c_Delay_10Us(); return 1; }

unsigned char i2c_Read_Byte(void) { unsigned char i, read_byte;

read_byte = 0;

i2c_SDA = 1;i2c_Delay_10Us(); for(i = 0; i < 8; i++) { i2c_SCL = 1;i2c_Delay_10Us(); read_byte <<= 1; read_byte |= i2c_SDA; i2c_Delay_10Us();i2c_SCL = 0;i2c_Delay_10Us(); }

单片机流水灯课程设计报告

return read_byte;

}

void Eeprom_24c02_Write(unsigned char addr, unsigned char write_data) { i2c_Start();i2c_Write_Byte(0xa0);i2c_Write_Byte(addr); i2c_Write_Byte(write_data); i2c_Stop(); }

unsigned char Eeprom_Read(unsigned char addr) { unsigned char read_data;

i2c_Start();i2c_Write_Byte(0xa0);i2c_Write_Byte(addr); i2c_Start();i2c_Write_Byte(0xa1); read_data = i2c_Read_Byte();

i2c_Stop();

return read_data; }

void KeyData_Eeprom_Read(void) { unsigned char datakey_thousand, datakey_hundred, datakey_ten, datakey_unit;

datakey_thousand = Eeprom_Read(0);Delay_Ms(5); datakey_hundred = Eeprom_Read(1);Delay_Ms(5); datakey_ten = Eeprom_Read(2);Delay_Ms(5); datakey_unit = Eeprom_Read(3);Delay_Ms(5);

data_key_stored = 1000 * datakey_thousand + 100 * datakey_hundred + 10 * datakey_ten + datakey_unit; }

void KeyData_Eeprom_Write(void) { unsigned char datakey_thousand, datakey_hundred, datakey_ten, datakey_unit; datakey_thousand = data_setkey / 1000;datakey_hundred = data_setkey % 1000 / 100; datakey_ten = data_setkey % 100 / 10;datakey_unit = data_setkey % 10; Eeprom_24c02_Write(0,datakey_thousand);Delay_Ms(10); Eeprom_24c02_Write(1,datakey_hundred);Delay_Ms(10); Eeprom_24c02_Write(2,datakey_ten);Delay_Ms(10); Eeprom_24c02_Write(3,datakey_unit);Delay_Ms(10); }

void InitialKeyData_Eeprom_Write(void) { Eeprom_24c02_Write(0,1);Delay_Ms(10); Eeprom_24c02_Write(1,2);Delay_Ms(10); Eeprom_24c02_Write(2,3);Delay_Ms(10); Eeprom_24c02_Write(3,4);Delay_Ms(10);

data_key_stored = 1234;

单片机流水灯课程设计报告

七、 实物调试及结果分析

1、 硬件调试:硬件调试是利用开发系统,基本测试仪器(万用表,示波器等)检查用户系

统存在的故障,分静态调试和动态调试。在硬件调试中,由于4×4Led点阵所用的二极管型号不同,刚开始有很多灯都不能按指定的要求点亮,后来经过检验发现其所需电流不同,不得已重新做了一个4×4Led点阵。其余的硬件调试都比较正常,应该注意的是不能为了美观而忽略二极管的型号以及其正常发光所需要的电流。 实物效果图如下:

2、 软件调试:软件调试是用户对程序的汇编,连接,执行来发现程序中存在的语法错误与

逻辑错误并加以排除纠正的过程,并利用仿真软件对编译的程序仿真,不断修正,调试直至实现与设计方案相同。

单片机流水灯课程设计报告

八、 课程设计小结

这次单片机课程设计我们组主要做的是最基础的流水灯设计,通过单片机来控制,程序来实现相应的功能,主要分为硬件和软件两个部分,因为以前对硬件有过很多接触,所以在硬件各个模块上的组装和焊接上没有多大问题,但以前所学过的编程知识不扎实,也很少实践,所以编程时遇到了不少困难,但好在最后将程序写出来了,但硬件和软件结合起来调试时又出现了点问题,最后只实现了部分功能。这次实践虽然未能按照意愿将流水灯设计的很完美,但也从过程中遇到的困难中学会了很多,也正是这些困难让我们学会一步一步的去思考去寻求解决问题的方法,不断地调试不断地检验,最后让作品更加的完美。

经过这次实习,使我们的动手能力和学习能力都有了显著的提高。在考虑问题时会更加的深入,懂得如何把理论知识转化为实践知识,同时也能从实践中领会理论知识。并学会了把硬件和软件结合在一起去完成一个作品。再次感谢老师的指导和同学的帮助。

单片机流水灯课程设计报告

电气与电子信息工程学院 《单片机课程设计》成绩评定表

姓名 学号 专业班级 轨道交通信号与控制2014(1)班 课设名称:单片机课程设计 答辩记录: 1、 阐述用keil软件编辑调试C51程序的过程。 启动软件→建立工程文件→建立并添加源文件→配置工程属性→ 程序调试 2、 叙述单片机实现流水灯控制系统的开发过程。 设计电路图→制作电路板→程序设计→硬软件联调→程序下载→ 产品测试 3、说明单片机流水灯控制系统电路的构成,及各部分的作用。 该电路分为四个模块,51最小系统板、EEPROM、矩阵键盘、4×4Led点阵。 (1)51最小系统板:由一块AT89C51芯片,排阻R1,排针H1、H2,、H3、H4,电解电容C1,瓷片电容C2、C3,晶振Y1,复位按键S1构成,通过芯片内编入的程序,对矩阵键盘发出的指令进行识别、判断,最后输出相应指令,使Led点阵得到理想的变化状态; 单片机流水灯课程设计报告

(2)EEPROM:由ATMEL29 24C02芯片和电容构成,主要作用于密码解锁和计算器上的数据存储和校验,它的特点是能够用于存放某些需要断电后保存的数据; (3)矩阵键盘:由16个开关构成,它主要是提供输入信号。AT89C51芯片内对矩阵键盘的各个按键赋予了相应的功能,S1、S2、S3、S5、S6、S7、S9、S10、S11、S13分别对应数字1、2、3、4、5、6、7、8、9、0,S4对应解锁/改密码/+/-功能、S8对应确定功能、S12对应退出功能、S14对应计算器功能、S15对应欣赏功能(即可观看Led自动闪烁)、S16对应强制重置密码1234,当按下开关时,会将信号传输给最小系统板; (4)4×4Led点阵:由16个Led晶体管,4个S8050 D331三极管和若干排针构成,主要用来显示解锁密码的对错,流水灯自动变换花型,计算结果显示。其中三极管主要是通过控制电流,把微弱信号放大成幅度值较大的电信号的作用。 成绩评定依据: 考勤表现(10%): 实习报告(40%): 实习过程(40%): 答辩情况(10%): 最终评定成绩(以百分制评定)

本文来源:https://www.bwwdw.com/article/sni5.html

Top