基于C语言的8X8点阵设计.doc

上传人:h**** 文档编号:126565 上传时间:2018-07-09 格式:DOC 页数:21 大小:3.31MB
下载 相关 举报
基于C语言的8X8点阵设计.doc_第1页
第1页 / 共21页
基于C语言的8X8点阵设计.doc_第2页
第2页 / 共21页
基于C语言的8X8点阵设计.doc_第3页
第3页 / 共21页
基于C语言的8X8点阵设计.doc_第4页
第4页 / 共21页
基于C语言的8X8点阵设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、目 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 录 凌阳, 拇指 凌阳 1. 引 凌阳, 拇指 凌阳 言 3 凌阳, 拇指 凌阳 1.1. 设计意义 3 凌阳, 拇指 凌阳 1.2. 系统功能要求 3 凌阳, 拇指 凌阳 1.3. 本组成员所做的工作 3 凌阳, 拇指 凌阳 2. 总体设计方案 3 凌阳, 拇指 凌阳 3. 设计原理分析 7 凌阳, 拇指 凌阳 4. 系统调试 10 凌阳, 拇指 凌阳 5. 设计总结 12 凌阳, 拇指 凌阳 参考文献 1 错误 !未定义书签。 凌阳, 拇指 凌阳 6. 附 凌阳, 拇指 凌阳 录 A;源程序 13 凌阳, 拇指 凌阳 7. 附

2、 凌阳, 拇指 凌阳 录 B; 原理图 18 凌阳, 拇指 凌阳 8. 附 凌阳, 拇指 凌阳 录 C;作品实物图片 19 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 2 LED点阵的显示 凌阳, 拇指 凌阳 班级姓名 : 凌阳, 拇指 凌阳 摘要: : LED 显示屏作为一种新型的显示器件 , 拇指 是由多个发光二极管按矩阵形式排列封装而成 , 拇指 通常用来显示时间、图文等信息 。 食指 本设计是基于 ATS52 单片机的 16x16 显示屏 , 拇指 其中包含了硬件、软件、调试等方案的设计 。 食指 此外、该设计只需简单的级联就能实现显示屏的拓展 , 拇指 但级联时要注意

3、不要超过驱动负载范围 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 1 凌阳, 拇指 凌阳 引言 凌阳, 拇指 凌阳 1.1 设计意义 凌阳, 拇指 凌阳 LED 显示屏 是一种通过控制半导体发光二极管的显示方式 , 拇指 用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕 。 食指 图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制 , 拇指 图文、图像并茂 , 拇指 以实时、同步、清晰的信息传播方式播放各种信息 , 拇指 还可显示二维、三维动画、录像、电视、 VCD 节目以及现场实况 。 食指 LED 显示屏显示画面色彩鲜艳 , 拇

4、指 立体感强 , 拇指 静如油画 , 拇指 动如电影 , 拇指 广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所 。 食指 凌阳, 拇指 凌阳 它的优点:亮度高、工作电压低、功耗小 、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 1.2 系统功能要求 凌阳, 拇指 凌阳 1.2.1、利用单片机控制双色 8 8LED 点阵的显示 。 食指 先测试 8 8LED 点阵模块每个 LED 是否显示正常 , 拇指 测试完成后 , 拇指 显示广东石油化工学院八个汉字 , 拇指 要求汉

5、字循环向右移动 。 食指 凌阳, 拇指 凌阳 1.2.2、所有的 8 8LED 全部显示成红色 , 拇指 接着熄灭所有 LED;显示广东石油化工学院向右移动 , 拇指 直到全部溢出 ,然后熄灭所有 LED;如此循环显示 。 食指 凌阳, 拇指 凌阳 1.2.3、在 8X8 点阵式 LED 能显示“ ”、“ ”和心形图 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 1.3 本组成员工作 凌阳, 拇指 凌阳 方案原理论证: 凌阳, 拇指 凌阳 焊接: 凌阳, 拇指 凌阳 调试: 凌阳, 拇指 凌阳 设计报告: 凌阳, 拇指 凌阳 2 凌阳, 拇指 凌阳 总体设计方案 凌阳, 拇指 凌阳 2.1

6、 凌阳, 拇指 凌阳 设计思路 凌阳, 拇指 凌阳 图文显示一般有静态和动态显示两种方案 , 拇指 静态方案虽然设计简单 , 拇指 但其使用的管脚太多 ,拇指 如本设计中 16 16 的点阵共有 256 个发光二极管 , 拇指 显然单片机没有这么多的端口 , 拇指 如果我采用锁 存器来扩展端口 , 拇指 按 8位的锁存器来计算 , 拇指 16 16 的点阵需要 256/8=32 个锁存器 。食指 这个数字很庞大 , 拇指 因为我们仅仅是 16 16 的点阵 , 拇指 在实际应用中的显示屏往往要大得多 , 拇指这样在锁存器上花的成本将是一个很庞大的数字 。 食指 因此在实际应用中的显示屏几乎都不

7、采用这种设计 , 拇指 而采用另外一种称为动态扫描的显示方法 。 食指 凌阳, 拇指 凌阳 动态扫描的意思简单地说就是逐行轮流点亮 , 拇指 这样扫描驱动电路就可以实现多行(比如 16行)的同名列共用一套驱动器 。 食指 具体就 16 16 的点阵来说 , 拇指 把所有同 1 行的发光 管的阳极连在一起 , 拇指 把所有同 1 列的发光管的阴极连在一起(共阳极的接法) , 拇指 先送出对应第一行发3 光管亮灭的数据并锁存 , 拇指 然后选通第 1 行使其燃亮一定时间 , 拇指 然后熄灭;再送出第二行的数据并锁存 , 拇指 然后选通第 2 行使其燃亮相同的时间 , 拇指 然后熄灭;以此类推 ,

8、拇指 第 16 行之后 , 拇指 又重新燃亮第 1 行 , 拇指 反复轮回 。 食指 当这样轮回的速度足够快(每秒 24 次以上) , 拇指 由于人眼的视觉暂留现象 , 拇指 就能够看到显示屏上稳定的图形了 。 食指 凌阳, 拇指 凌阳 采用扫描方式进行显示时 , 拇指 每一行有一个行驱动器 , 拇指 各行的同名列共用一 个驱动器 。 食指 显示数据通常存储在单片机的存储器中 , 拇指 按 8 位一个字节的形式顺序排放 。 食指 显示时要把一行中各列的数据都传送到相应的列驱动器上去 , 拇指 这就存在一个显示数据传输的问题 。 食指 从控制电路到列驱动器的数据传输可以采用并列方式或串行方式 。

9、 食指 显然 , 拇指 采用并行方式时 , 拇指 从控制电路到列驱动器的线路数量大 , 拇指 相应的硬件数目多 。 食指 当列数很多时 , 拇指 并列传输的方案是不可取的 。 食指 凌阳, 拇指 凌阳 采用串行传输的方法 , 拇指 控制电路可以只用一根信号线 , 拇指 将列数据一位一位传往列驱动器 , 拇指在硬件方面无疑是十分经济 的 。 食指 但是 , 拇指 串行传输过程较长 , 拇指 数据按顺序一位一位地输出给列驱动器 , 拇指 只有当一行的各列数据都以传输到位之后 , 拇指 这一行的各列才能并行地进行显示 。 食指这样 , 拇指 对于一行的显示过程就可以分解成列数据准备(传输)和列数据显

10、示两部分 。 食指 对于串行传输方式来说 , 拇指 列数据准备时间可能相当长 , 拇指 在行扫描周期确定的情况下留给行显示的时间就太少了 , 拇指 以致影响到 LED的亮度 。 食指 凌阳, 拇指 凌阳 解决串行传输中列数据准备和列数据显示的时间矛盾问题 , 拇指 可以采用重叠处理的方法 。 食指 即在显示本行各列数据的同时 , 拇指 传 送下一列数据 。 食指 为了达到重叠处理的目的 , 拇指 列数据的显示就需要具有所存功能 。 食指 经过上述分析 , 拇指 就可以归纳出列驱动器电路应具有的功能 。 食指 对于列数据准备来说 , 拇指 它应能实现串入并处的移位功能;对于列数据显示来说 , 拇

11、指 应具有并行锁存的功能 。食指 这样 , 拇指 本行已准备好的数据打入并行锁存器进行显示时 , 拇指 串并移位寄存器就可以准备下一行的列数据 , 拇指 而不会影响本行的显示 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 2.2 凌阳, 拇指 凌阳 设计方框图 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 2.3 凌阳, 拇指 凌

12、阳 主控制器 STC89C52RC 单片机简介 凌阳, 拇指 凌阳 STC89C52 是一种低功耗、高性能 CMOS8 位微控制器 , 拇指 具有 凌阳, 拇指 凌阳 8K 凌阳, 拇指 凌阳 在系统可编程Flash 凌阳, 拇指 凌阳 存储器 。 食指 在单芯片上 , 拇指 拥有灵巧的 8 凌阳, 拇指 凌阳 位 CPU 凌阳, 拇指 凌阳 和在系 统可编程 Flas h, 拇指 使得STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案 。 食指 凌阳, 拇指 凌阳 具有以下标准功能: 凌阳, 拇指 凌阳 8k 字节 Flash, 拇指 512 字节 RAM, 拇指 凌阳,

13、 拇指 凌阳 32 凌阳, 拇指 凌阳 位 I/O 凌阳, 拇指 凌阳 口线 , 拇指 看门狗定时器 ,拇指 内置 4KB 凌阳, 拇指 凌阳 EEPROM, 拇指 MAX810 复位电路 , 拇指 三个 16 凌阳, 拇指 凌阳 位 凌阳, 拇指 凌阳 定时器 /计数器 , 拇指 一个 6单 片 机 列驱动器 行驱动器 8X8LED 显示点阵 电源 4 向量 2 级中断结构 , 拇指 全双工串行口 。 食指 另外 凌阳, 拇指 凌阳 STC89X52 凌阳, 拇指 凌阳 可降至 0Hz 凌阳, 拇指 凌阳 静态逻辑操作 ,拇指 支持 2 种 软件 可选择节电模式 。 食指 空闲模式下 , 拇

14、指 CPU 凌阳, 拇指 凌阳 停止工作 , 拇指 允许 RAM、定时器/计数器、串口、中断继续工作 。 食指 掉电保护方式下 , 拇指 RAM 内容被保存 , 拇指 振荡器被冻结 ,拇指 单片机一切工作停止 , 拇指 直到下一个中断或硬件复位为止 。 食指 最高运作频率 35Mhz, 拇指6T/12T 可选 。 食指 凌阳, 拇指 凌阳 和 atmel 的对比 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 STC89C52RC 单片机 : 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 8K 字节程序存储空间; 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 512 字节数据存储空间; 凌 阳, 拇指 凌阳凌阳,

15、 拇指 凌阳 内带 4K字节 EEPROM存储空间 ; 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 可直接使用串口下载; 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 AT89S52 单片机 : 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 8K 字节程序存储空间; 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 256 字节数据存储空间; 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 没有内带 EEPROM 存储空间 ;凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 5 2.4 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 74HC595 芯片 凌

16、阳, 拇指 凌阳 74HC595 是硅结构的 CMOS 器件 , 拇指 凌阳, 拇指 凌阳 兼容低电压 TTL电路 , 拇指 遵守 JEDEC 标准 。 食指 凌阳, 拇指 凌阳 74HC595 是具有 8 位 移位寄存器 和一个存储器 , 拇指 三态输出功能 。 食指 凌阳, 拇指 凌阳 移位寄存器和存储器是分别的时钟 。 食指 凌阳, 拇指 凌阳 数据在 SHcp 的上升沿输入到移位寄存器中 , 拇指 在 STcp 的上升沿输入到存储寄存器中去 。 食指 如果两个时钟连在一起 , 拇指 则移位寄存器总是比存储寄存器 早一个脉冲 。 食指 凌阳, 拇指 凌阳 移位寄存器有一个串行移位输入(

17、Ds) , 拇指 和一个串行输出( Q7) ,和一个异步的低电平复位 , 拇指 存储寄存器有一个并行 8位的 , 拇指 具备三态的总线输出 , 拇指 当使能 OE 时(为低电平) , 拇指 存储寄存器的数据输出到总线 。 食指 凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 8 位串行输入 /输出或者并行输出移位寄存器 , 拇指 具有高阻关断状态 。 食指 三态 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 2.5 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 8X8 点阵 凌阳, 拇指 凌阳 6 一共 64 个发光点构成

18、, 拇指 上下两排引脚 , 拇指 每排8 个 , 拇指 一共 16 个 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 8X8 点阵的显示原理: 凌阳, 拇指 凌阳 8X8 点阵共由 64 个发光二极管组成 , 拇指且每个发光二极管是 凌阳, 拇指 凌阳 放置在行线和列线的交叉点上 , 拇指 当对应的某一行置 1 电平 , 拇指 某一列置 0 电平 , 拇指 则相应的 凌阳, 拇指 凌阳 二极管就亮;如要将第一个点点亮 , 拇指 则 1 脚接高电平 a脚接低电平 , 拇指 则第一 个点就亮了; 凌阳, 拇指 凌阳 如果要将第一行点亮 , 拇指 则第 1 脚要接高电平 , 拇指 而( a、 b、 c、

19、d、 e、 f、 g、 h 凌阳, 拇指 凌阳 ) 凌阳, 拇指 凌阳 这些引脚接低电平 , 拇指 那么第一行就会点亮;如要将第一列点亮 , 拇指 凌阳, 拇指 凌阳 则第 a 脚接低电平 , 拇指 而( 1、 2、 3、 4、 5、 6、 7、 8)接高电平 , 拇指 那么第一列就会点亮 .凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 3 凌阳, 拇指 凌阳 设计原理分析 凌阳, 拇指 凌阳 3.1 凌阳, 拇指 凌阳 硬件设计 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 3.1.1 电源部分 凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳凌阳 ,拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳,

20、拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 3.1.2 单片机系统 凌阳, 拇指 凌阳 123P6POWER_DCS4POWER_keyL1ledR2RES2VCC说明:此部分为为电源部分。电源为 +5V 电源,再通过一个电源开关POWER_key。 LED 灯为电源指示灯,通电则亮, R2 电阻为 1K。 7 VCC10UFC1Cap Pol1100pFC2Cap10KR1RST12 34S1KEY1 2Y

21、1XTAL22pFC3Cap22pFC4CapX1X2凌 阳, 拇指 凌阳 常用的时钟电路设计有两种方式 ,一种是内部时钟方式 , 拇指 一种是外部时钟方式 。 食指本 设计 采用 内部时钟方式 , 拇指 将 XTAL1( X1)与 XTAL2( X2)之间跨接一个晶振和瓷片电容 , 拇指 从而构成一个稳定的自激震荡器 。 食指 电容值取 22pF, 拇指 其大小将影响震荡频率的高低、振荡器的稳定性和起振的快速性 。 食指 为减少线间的寄生电容 ,拇指 晶振和电容应尽能安装得与单片机靠近 , 拇指 保证晶振稳定可靠的工作 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌

22、阳, 拇指 凌阳 另一部分是复位部分 。 食指 上电自动复位电路是最简单的复位电路 , 拇指 只需要一个1K 左右电阻、一个 22pF 左右的电容及 12MHZ 的晶振 。 食指 有时还需要按键手动复位 , 拇指 此时只要在电容上并联一个按键即可 。 食指 电容一个为一般电容 , 拇指 一个为电解电容 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 3.1.3 按键部分 凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳 12 34凌阳, 拇指 凌阳 由于按键的封装为四脚 , 拇指 为了布线 , 拇指 就把按键画成左上角的样子 , 拇指 再把两边相连 ,拇指 这是因为按键距离长的一边都是相通的 , 拇

23、指 根据这个特性而画出按键 。 食指 另外 , 拇指 两按键接的是外部中断 INT0 和 INT1。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 3.1.4 连接口 凌阳, 拇指 凌阳 左图为与 8X8LED 模块的连接口 , 拇指 由于用到 P1 口 , 拇指 所以干脆全部口都引出来 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P32P331 234S2KEY1 234S3KEY1 23 45 67 89 10P2P10P11P12P13P14P15P16P17VCC8 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 3.1.5 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 8

24、X8LED 点阵模块 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 上图就是 8X8 点阵驱动模块 。 食指 凌阳, 拇指 凌阳 各行的同名列共用一个列驱动 , 拇指 数据通常存储在单片机的存储器中 , 拇指 按 8 位一个字节的形式存放 。 食指 由于列线过多 , 拇指 故多采用串行传输 。 食指 由于每次要传输 16 位 , 拇指而且数据要逐位输给驱动器 , 拇指 只有当一行中各列数据都已传输到位后 , 拇指 这一行的各列才能进行并行显示 , 拇指 耗时较长 。 食指 为了满足以上要求 , 拇指 驱动选择 74LS595 移位寄存器 。 食指 移位寄存器和存储器是分别的时 钟 。 食指 凌阳,

25、拇指 凌阳 数据在 SCHcp 的上升沿输入 ,拇指 在 STcp 的上升沿进入的存储寄存器中去 。 食指 如果两个时钟连在一起 , 拇指 则移位寄存器总是比存储寄存器早一个脉冲 。 食指 凌阳, 拇指 凌阳 移位寄存器有一个串行移位输入( Ds) , 拇指 和一个串行输出( Q7) ,和一个异步的低电平复位 , 拇指 存储寄存器有一个并行 8 位的 ,拇指 具备三态的总线输出 , 拇指 当使能 OE 时(为低电平) , 拇指 存储寄存器的数据输出到总线 。 食指 其 特点: 8 位串行输入 凌阳, 拇指 凌阳 /8 位串行或并行输出 凌阳, 拇指 凌阳 存储状态寄存器 , 拇指 三种状态 ;

26、 凌阳, 拇指 凌阳输出寄存器可以直接清除 凌阳, 拇指 凌阳 100MHz的移位频率 。 食指 输出能力: 凌阳, 拇指 凌阳 并行输出 , 拇指 总线驱动;串行输出;标准中等规模集成电路 凌阳, 拇指 凌阳 。 食指 凌阳, 拇指 凌阳 74HC595 是一个串入并出的芯片 , 拇指 通过一个 for(i=0;i8;i+)来存储数据 。 食指 凌阳, 拇指 凌阳 具体来说就是第一个时钟信号来到时低位的数据向高位挪动一位 , 拇指 在这个程序中是 SH_CK 凌阳, 拇指 凌阳 信号 , 拇指 当 SH_CLK 凌阳, 拇指 凌阳 是一个上跳沿时 , 拇指 传入的形参 dat 与 0x80

27、相与 , 拇指 得到的数为 1,则通过 SDATA 置 1,否通过置为 0,并存储在 SDATA 的相应位置(最低位)上 , 拇指 DS 内部也自动左移一位数据然后 dat 向左移一位 , 拇指 使次高位变为最高位与 0x80 相与 , 拇指 并存储 。 食指 通过 8次后 , 拇指 就可以得到数据 , 拇指 并存储在 SDTTA 中了 ,拇指 凌阳, 拇指 凌阳 这时 ST_CK 一个上跳沿 , 拇指 数据即送出去了 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 9 4 凌阳, 拇指 凌阳 软件设计 凌阳, 拇指 凌阳 显示屏软件模块: 初始化程序 、 主程序、 多字

28、滚动 、 显示程序 、 扫描程序 。 食指 显示程序 的主要功能是向屏体提供显 示数据 , 拇指 并产生各种控制信号 , 拇指 使屏幕按设计的要求显示 。 食指 软件设计中 , 拇指 显示屏的软件系统分为两层;第一层是底层的显示驱动程序 ,拇指 第二层是上层的系统应用程序 。 食指 显示驱动程序负责向屏体送显示数据 , 拇指 并负责产生行扫描信号和其他控制信号 , 拇指 配合完成 LED 显示屏的扫描显示工作 。 食指 显示驱动器程序由定时器 T0 中断程序实现 。 食指 系统应用程序完成系统环境设置(初始化)、显示效果处理等工作 , 拇指 由主程序来实现 。 食指 凌阳, 拇指 凌阳 凌阳,

29、 拇指 凌阳 4.1 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 74HC595 驱动 凌阳, 拇指凌阳 /*-*/凌阳, 拇指 凌阳 #ifndef 凌阳, 拇指 凌阳 _74HC595_H_凌阳, 拇指 凌阳 #define 凌阳, 拇指 凌阳 _74HC595_H_凌阳, 拇指 凌阳 /*-*/凌阳, 拇指 凌阳 sbit 凌阳, 拇指 凌阳 SD 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 P14; /串行数据输入 凌阳, 拇指 凌阳 sbit 凌阳, 拇指 凌阳 ST_CK 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 P15; /存储寄存器时钟输入

30、 凌阳, 拇指 凌阳 sbit 凌阳, 拇指 凌阳 SH_CK 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 P16; /移位寄存器时钟输入 凌阳, 拇指 凌阳 /*-*/凌阳, 拇指 凌阳 /函数声明 凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 Ser_IN(unsigned 凌阳, 拇指 凌阳 char 凌阳, 拇指 凌阳 Data); /串行数据输入 凌阳, 拇指凌阳 void 凌阳, 拇指 凌阳 Par_OUT(void); /串行数据输出 凌阳, 拇指 凌阳 /*-*/凌阳, 拇指 凌阳 /串行数据输入 凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 Ser_IN(unsign

31、ed 凌阳, 拇指 凌阳 char 凌阳, 拇指 凌阳 Data)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 unsigned 凌阳, 拇指 凌阳 char 凌阳, 拇指 凌阳 i;凌阳, 拇指 凌阳 for(i 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 0; 凌阳, 拇指 凌阳 i 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 8; 凌阳, 拇指 凌阳 i+)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 SH_CK 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 0; 凌阳, 拇指 凌阳 SD 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 Data 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 Data 凌阳, 拇指

32、 凌阳 = 凌阳, 拇指 凌阳 1;凌阳, 拇指 凌阳 SH_CK 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 1;凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 /*-*/凌阳, 拇指 凌阳 /并行数据输出 凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 Par_OUT(void)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 ST_CK 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 0;凌阳, 拇指 凌阳 ST_CK 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 1;凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 #endif 凌阳, 拇指 凌阳 10 根据 74HC595 的功能表 , 拇指

33、就可以很容易写出上面的头文件 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 4.2 凌阳, 拇指 凌阳 中断 凌阳, 拇指 凌阳 4.2.1 外部中断 0 凌阳, 拇指 凌阳 在该中断中实现的功能为状态跳转 , 拇指 用 flag 变量来实现 。 食指 凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 ex0() 凌阳, 拇指 凌阳 interrupt 凌阳, 拇指 凌阳 0 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 if(INT0=0)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 delay_ms(20);凌阳, 拇指 凌阳 if(INT0=0)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 flag+

34、;凌阳, 拇指 凌阳 if(flag=4)凌阳, 拇指 凌阳 flag=0;凌阳, 拇指凌阳 k=0;凌阳, 拇指 凌阳 n=0;凌阳, 拇指 凌阳 m=0;凌阳, 拇指 凌阳 TR0=1;凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 4.2.2 定时器 0 凌阳, 拇指 凌阳 利用定时器 0实现定时扫描 。 食指 每 1ms 扫描一次 。 食指 凌阳, 拇指 凌阳 TH0=(65536-1000)/256=0xfc 凌阳, 拇指 凌阳 TL0=(65536-1000)%256=0x18 凌阳, 拇指 凌阳 如上 , 拇指 为定时器初值计算方法 。 食指 凌阳

35、, 拇指 凌阳 void 凌阳, 拇指 凌阳 t0() 凌阳, 拇指 凌阳 interrupt 凌阳, 拇指 凌阳 1 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 TH0 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 0xfc; 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌

36、阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌

37、阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 TL0 凌阳, 拇指 凌阳 = 凌阳, 拇指 凌阳 0x18;凌阳, 拇指 凌阳 display();凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 4.3 显示函数 凌阳, 拇指 凌阳 该函数用了 Ser_IN(),Par_OUT(),函数 , 拇指 在 74HC595 头文件里有定义 。 食指 凌阳, 拇指 凌阳 该函数里还对速度进行了控制 。 食指 凌阳, 拇指 凌阳 4.4 凌阳, 拇指 凌阳 扫描坏点 凌阳, 拇指 凌阳 if(onlyone=0)凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 for(i=0; 凌阳, 拇指 凌阳 i2; 凌阳, 拇指 凌阳 i+)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 for(j=0; 凌阳, 拇指 凌阳 j8; 凌阳, 拇指 凌阳 j+) 凌阳, 拇指 凌阳 /全亮 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 Ser_IN(0); 凌阳, 拇指 凌阳 /8X8 点阵列扫描 凌阳, 拇指 凌阳

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

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。