- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
接口课程设计模拟密码做(C语言).
华 北 科 技 学 院
接口设计课程设计说明书
学号:
班级: 姓名:
设计题目: 模拟密码锁
设计地点: 接口实验室
设计时间: 至
成绩评定:
1、工作量: A( ),B( ),C( ),D( ))))))
《接 口 技 术》课程设计报告
课设地点:接口实验室 2015年 6 月 25日
设计题目 模拟密码锁 设计目的
进一步掌握8255和8254芯片的使用方法
通过8254产生不同的频率信号,使PC机发出声音
掌握PC机控制双色点阵LED显示程序的设计方法
理解接口电路的应用
设备与环境
设计内容
设计原理图
实验原理
发声原理
硬件电路的设计及实现相对简单。硬件电路PC机、TPC-386EM、定时器芯片8254、可编程并行接口芯片8255A、扬声器模块组成采用可编程并行接口芯片8255A, 8255A方式0,端口C输出方式(控制字为0x80),8264选计数器0,方式3,先读低8位,再读高8位,直接从初始换数组中读取所需计数值。
驱动控制扬声器利用8254与8255A共同执行。利用8255A的PC0,PC1控制扬声器的开启、关闭,利用8254的OUT0端口将计数值分高地位输出。再利用设置不同的计数值,使8254产生不同频率的波形,使扬声器产生不同频率的音调,达到类似音阶变换的效果。
8253内部结构
8255内部结构
点阵原理
点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。当微机输出的控制信号使得点阵中有些LED发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。
试验仪上设有一个共阳极8x8点阵的红绿两色LED显示器,其点阵结构如下图所示。该点阵对外引出24条线,其中8条行线,8条红色列线,8条绿色列线。此处我们使用的是红色LED,只需要将与其相连的行线加高电平,列线加低电平即可。
总体设计与详细设计
总体设计
在此模拟密码锁中共有三个部分:LED灯显示,扬声器和8x8点阵
详细设计
LED灯显示部分:8255芯片的片选地址CS接288H,8255的控制字为0x80,C口高四位为输出。对于LED灯,高电平为亮,低电平为灭。对于此实验只用到红黄绿三种颜色,所以只要给其赋值0x80,0x40,0x20中的一个即可。
扬声器部分:8255的片选地址接288H,8254的片选地址接280H,从初始化数组中读出计数初值,将8254初始化为方式三,给8253赋计数初值(分高低位)。再设置8255C口输出,通过给端口0x28a传值(0x03或0x00)控制扬声器的开关,中间再加上合适的延时,即可得到想要的声音效果。
8x8点阵部分:先初始化一个二维数组用于存放0到9这十个数,每读完一个数组中的值(此时点阵器会亮相应的列),左移一位,然后读下一个值,由于同一个数的显示之间延时较短,可以在版面上看到数字。点阵器的红选接0xA0端口,行选接0xA8端口,WR接总线IOW端口,点阵模块数据总线D7~D0接总线区的数据总线D7~D0。
程序流程图
实物接线图
/* 模拟密码锁 */
#include stdio.h
#include stdlib.h
#include conio.h
#include ApiExusb.h
#pragma comment(lib,ApiExusb.lib)
#define porth 0x2A0
#define portlr 0x2A8
int i;
int a[4] = {0x30,0x30,0x30,0x30};
int b[4];
int k,m,key;
int flag=0;
unsigned short time[]={0x08};//计数值的低位
unsigned short time1[]={0x07};//计数值的高位
unsigned short low[]={0xE8,0x49,0xD6,0x31,0xF7,0xE0,0xE8, 0x74, 0xEE,0xC1,0xD0 ,0x11};unsigned short high[]={0x0E,0x0D,0x0B,0x0B,0x09,0x08,0x07, 0x07, 0x13,0x11,0x0F ,0x11};
unsigned int buff[][8]
文档评论(0)