大赛期间训练程序总结报告(一)

上传人:夏** 文档编号:431095082 上传时间:2022-09-12 格式:DOC 页数:50 大小:615.08KB
返回 下载 相关 举报
大赛期间训练程序总结报告(一)_第1页
第1页 / 共50页
大赛期间训练程序总结报告(一)_第2页
第2页 / 共50页
大赛期间训练程序总结报告(一)_第3页
第3页 / 共50页
大赛期间训练程序总结报告(一)_第4页
第4页 / 共50页
大赛期间训练程序总结报告(一)_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《大赛期间训练程序总结报告(一)》由会员分享,可在线阅读,更多相关《大赛期间训练程序总结报告(一)(50页珍藏版)》请在金锄头文库上搜索。

1、大赛训练期间程序总结报告(一)-显示类 一、显示类:(LED、数码管、LCD)对于显示类的单片机外设,总结起来常用的不过就是:LED(发光二极管)、数码管(由发光二极管组成),LCD(液晶显示屏),它们又分为两大类:一是:即时显示器件。送入数据信号就能马上显示出效果,如:LED和数码管。 二是:有存储功能的显示器件。这类器件送入数据信号不能马上显示(在其内部存在具有存储功能的芯片),而是要等待用户送入一定的操作指令,才能按用户的需求显示数据。由于LCD存在较多的控制接口、相关的存储器件和相关的指令,加之显示操作还要进行寻址,故其操作更复杂,但其能满足用户更多特殊的要求,所以其广泛地应用于日常生

2、活和工业控制中。1、 LDE 跑马灯:对于LED相关的特性及工作原理,我相信各位非常了解,在此我就不再累赘,下面我就直接给出相关的代码:/* 实验目的:学习和掌握发光二极管驱动 */* 程序功能:D2D9依次点亮,点亮间隔为 500ms,然后D9D2依次点亮,点亮间隔为500ms,然后D2D9 闪烁5次(500ms亮,500ms灭)如此循环 */ 包含文件#include STC12C56.H#include STC12C56IO.H#include / 函数申明void Delay_500ms(void);/ 主函数void main(void)uchar i;LED_PWM = 0;whi

3、le(1)P2 = 0xff;/ D1D8全部熄灭Delay_500ms();/ 延时500msD2 = 0;/ 点亮D2Delay_500ms();/ 延时500msD3 = 0;Delay_500ms();D4 = 0;Delay_500ms();D5 = 0;Delay_500ms();D6 = 0;Delay_500ms();D7 = 0;Delay_500ms();D8 = 0;/ 点亮D8Delay_500ms();/ 延时500msD9 = 0;/ 点亮D9Delay_500ms();/ 延时500msP2 = 0xff;/ D1D8全部熄灭Delay_500ms();/ 延时5

4、00msD9 = 0;/ 点亮D9Delay_500ms();/ 延时500msD8 = 0;/ 点亮D8Delay_500ms();/ 延时500msD7 = 0;Delay_500ms();D6 = 0;Delay_500ms();D5 = 0;Delay_500ms();D4 = 0;Delay_500ms();D3 = 0;Delay_500ms();D2 = 0;/ 点亮D2Delay_500ms();/ 延时500msfor(i=0; i5; i+)/ 闪烁5次P2 = 0xff;/ D2D9全部熄灭Delay_500ms();/ 延时500msP2 = 0;/ D2D9全部点亮D

5、elay_500ms();/ 延时500ms/ 延时500msvoid Delay_500ms()/ 12.000MHzunsigned char i, j, k;i = 23;j = 205;k = 120;dodowhile (-k); while (-j); while (-i);对于上序程序进行一个小结:单片的IO口与LED的负极直接相连,程序直接通过控制单片机IO的电平输出直接来控制LED的亮灭,然后综合延时,以达到跑马灯的效果。2、 数码管显示类: 数码管在51单片机设计中是应用最广泛的显示外设之一,一般用于数字显示(如:显示日期、时间、测控到环境的温度、湿度、光照强度,电机(含轴

6、器件)的转速等等),因此也是广泛地应用于日常生活和工业控制。在接下来的大部分项目中我们将直接接触到数码管的应用。对于数码管的结构我提醒的是:A、 一定要注意我们所用数码管是阴极数码管还是阳极数码管。B、 如果是多位的8段数码管,那么一定要分清楚数码管的数据端及控制端(位选端,电源端),然后要辨别出数码管的每一端口与单片机的那个管脚相连,各实现什么功能。C、 由于不同数码管的结构可能存在一定的差异,所以这里我就不详细的给出数码管的字模,以免在程序设计的时候出现错误,不过当你对数码管的结构相当了解后,再用相关的求数码管数模的软件,就能快速而准确的求出来。LED数码管要正常显示,就要用驱动电路来驱动

7、数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。 A、静态显示驱动: 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口进行驱动,或者使用如74HC138的3-8译码器进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O占用多,如驱动5个数码管静态显示则需要5840根I/O口来驱动,要知道我们使用的SCT12C5208AD单片机可用的所有端口才28个呢。故实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。 B、动态显示驱动: 数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,

8、动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp 的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。 最后来个小的总结:A、静态显示LED接口:(1) 连接方法 各数码管的公共极固定接有效电平,各数码管的字形控制端分别由各自的控制信号控制。 (2)优点 LED显示亮度温度,容易调节,编程容易,工作时占用C

9、PU时间短。 (3)缺点 若直接用单片机输出各位数码管的字形信号时,占用单片机的I/O口线较多。一般仅适用于 显示位数较少的应用场合。 B、动态显示LED接口 (1)连接方法 各位数码管的字形控制端对应地并在一起,由一组I/O端口进行控制,各位的公共极相互独 立,分别由不同的I/O控制信号控制。 (2)优点 节省I/O端口线 (3)缺点 显示亮度不够稳定,影响因素较多;编程较复杂,占用CPU时间较多。 (注:由于静态显示相对很简单,所以训练代码中只涉及到了动态显示)这里需要指出的是我们在训练所使用的数码管是共阳极的数码管。下面在来看看我们训练项目中所涉及的一些代码:2.1.1 4位共阳8段数码

10、管动态显示/* 实验目的:学习和掌握8段共阳极数码管的动态驱动 */* 程序功能:8段数码管显示1,2,3,4,延时1秒后 显示5,6,7,8,延时1秒后显示8,9 */ 包含文件#include STC12C56.H#include STC12C56IO.H#include / 定义全局变量uchar FIR_Number;uchar SEC_Number;uchar THI_Number;uchar FOU_Number;/ 8段数码管(共阳极)0,1,2,3,4,5,6,7,8,9的字模/ 数字0的字模为0x0a,依次类推code uchar Segments = 0x0a,0xfa,0

11、x4c,0x68,0xb8,0x29,0x09,0x7a,0x08,0x28,0xff;/说明:下边所用到的DIG1_CS 、DIG2_CS、DIG3_CS、DIG4_CS为数码管的位选端,控/制数码管的显示/ 选择第1个数码管 void SEL_FIR() DIG1_CS = 0;DIG2_CS = 1;DIG3_CS = 1;DIG4_CS = 1/ 选择第2个数码管 void SEL_SEC(void)DIG1_CS = 1;DIG2_CS = 0;DIG3_CS = 1;DIG4_CS = 1;/ 选择第3个数码管 void SEL_THI(void)DIG1_CS = 1;DIG2_

12、CS = 1;DIG3_CS = 0;DIG4_CS = 1;/ 选择第4个数码管 void SEL_FOU(void)DIG1_CS = 1;DIG2_CS = 1;DIG3_CS = 1;DIG4_CS = 0;/ 延时1msvoid Delay_1ms()/ 12.000MHzunsigned char i, j; _nop_(); _nop_();i = 12;j = 168;dowhile (-j); while (-i);/ 八段数码管显示数据 void SEG_Display(void)P2 = 0xff; /显示前对P2口(与数码管的数据位相连)先让所有的数码管都不显示。SEL

13、_FIR();/ 选第一个数码管P2 = SegmentsFIR_Number;/ 第一个数据Delay_1ms();/ 延时1msSEL_SEC(); / 选第二个数码管P2 = SegmentsSEC_Number;Delay_1ms();SEL_THI();P2 = SegmentsTHI_Number;Delay_1ms();SEL_FOU();P2 = SegmentsFOU_Number;Delay_1ms();/ 主函数void main(void)uint i;LED_PWM = 0; /清脉冲调制端口P3.5,在这里实际不起很大作用,对运行没的影响/循环的显示1,2,3,4,延时1秒后 显示5,6,7,8,延时1秒后显示8,9while(1) FIR_Number = 0;SEC_Number = 1;THI_Number = 2;FOU_Number = 3;for(i=0;i100;i+)SEG_Display();/ 显示0,1,2,3FIR_Number = 4;SEC_Number = 5;THI_Number = 6;FOU_Number = 7;for(i=0;i100;i+)SEG_Display();/ 显示6,7,8,9FI

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号