




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
笔者开发了一种电路,它可以安装在电子琴的按键上。这个电路有64个LED指示灯,64个按键。这64个按键和电子琴共用。电子琴也使用这64个按键弹奏音乐。每个按键对应一个LED灯。电路通过STC89C51单片机控制,当要演奏一首乐曲时,这个乐曲要弹奏的第一个按键上面的LED灯就会亮起来,只有演奏者按下这个按键,这个LED等才会熄灭。同时,当上一个LED灯熄灭以后,这个乐曲要弹奏的第二个按键上面的LED灯就会亮起。只有演奏者按下这个按键,这个LED等才会熄灭。紧接着,这个乐曲要弹奏的第三个按键上面的LED灯就会亮起,同样,只有演奏者按下这个按键,这个LED等才会熄灭。按键上面的LED就按照乐曲要弹奏的按键的顺序亮起,同时,只有演奏者按照乐曲要弹奏的按键的顺序弹奏乐曲,按键上的LED才会熄灭。这样就实现了,演奏者按照乐曲弹奏按键的顺序,也就是按照LED等亮起的顺序,演奏乐曲的功能。也就让一个不会弹琴的人,按照LED的指示来学习弹琴。下面是这个电路的电路图。电路中,单片机STC89C51控制芯片HD7279A。HD7279A控制64个按键和64个LED灯。按照程序,第一个LED亮,当按下第一个按键时,这个LED灭,同时,第二个LED亮,当按下第二个按键时,这个LED灭。这样就实现了按键以此熄灭LED的功能。下面是程序:#include /* 函数定义 *void long_delay(void);/ 长延时void short_delay(void);/ 短暂延时void delay10ms(unsigned char);/ 延时10MSvoid write7279(unsigned char, unsigned char);/ 写入到HD7279unsigned char read7279(unsigned char);/ 从HD7279读出void send_byte(unsigned char);/ 发送一个字节unsigned char receive_byte(void);/ 接收一个字节/* 变量及I/O口定义 *unsigned char digit5;unsigned char key_number, j, k,m,n;unsigned int tmr;unsigned long wait_cnter;unsigned char code dis_code65= 16,17,1,2;unsigned char code dis_code1256= 0,1,2,3,4;unsigned char code dis_code29= 0,1,2,3,4,5,6,7,8; unsigned char code dis_code365= 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;unsigned char code dis_code4256= 0,1,2,3,4,5,6,7,8,9,10,11,12;unsigned char code dis_code5128= 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17; unsigned char code dis_code665= 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;unsigned char code dis_code7256= 0,1,2,3,4,5,6,7,8,9,10;unsigned char code dis_code8128= 0,1,2,3,4,5,6,7,8,9,10,11;unsigned char code dis_code9128= 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;sbit cs=P14;/ cs at P1.4sbit clk=P15;/ clk 连接于 P1.5sbit dat=P12;/ dat 连接于 P1.2sbit key=P13;/ key 连接于 P1.3sbit S1=P00;/ key 连接于 P1.3sbit S2=P01;/ key 连接于 P1.3/* HD7279A 指令 *#define CMD_RESET 0xa4#define CMD_TEST 0xbf#define DECODE0 0x80#define DECODE1 0xc8#define CMD_READ 0x15#define UNDECODE 0x90#define RTL_CYCLE 0xa3#define RTR_CYCLE 0xa2#define RTL_UNCYL 0xa1#define RTR_UNCYL 0xa0#define ACTCTL 0x98#define SEGON 0xe0#define SEGOFF 0xc0#define BLINKCTL 0x88 void write7279(unsigned char cmd, unsigned char dta)send_byte (cmd);send_byte (dta);unsigned char read7279(unsigned char command)send_byte(command);return(receive_byte();void send_byte(unsigned char out_byte)unsigned char i;cs=0;long_delay();for (i=0;i8;i+)if (out_byte&0x80)dat=1;elsedat=0;clk=1;short_delay();clk=0;short_delay();out_byte=out_byte*2;dat=0;unsigned char receive_byte(void)unsigned char i, in_byte;dat=1;/ set to input modelong_delay();for (i=0;i8;i+)clk=1;short_delay();in_byte=in_byte*2;if (dat)in_byte=in_byte|0x01;clk=0;short_delay();dat=0;return (in_byte);void long_delay(void)unsigned char i;for (i=0;i0x30;i+);void short_delay(void)unsigned char i;for (i=0;i8;i+);/ * 延时n个1MS * / * 输入:n 延时个数 * void delay1ms(unsigned char n)unsigned int i;while(n -)for(i = 0;i 125;i +); / i + ,8S 左右/ * 延时n个10MS * / * 输入:n 延时个数 * void delay10ms(unsigned char n)unsigned int i;while(n -)for(i = 0;i 1250;i +);/ i + ,8S 左右 void delay(void) unsigned int n; for(n=0;n10000;n+) ;/* 主程序 */* 主程序 *main() unsigned char p;p=0; /将i初始化为0while(1) if(S1=0) /如果S1键按下 delay10ms(20); /延时一段时间 if(S1=0) /如果再次检测到S1键按下 p+; /i自增1delay10ms(20); /延时一段时间 if(p=4) /如果i=9,重新将其置为1 p=1; switch(p) /使用多分支选择语句 case 1: for (j=0;j256;) write7279(SEGON,dis_code1j);/ 将64个显示段逐个点亮if (!key)/ 如果有键按下key_number=read7279(CMD_READ);/ 读出键码if (key_number=dis_code1j)/ 如果有键按下 write7279(SEGOFF,dis_code1j);/ 将64个显示段逐个点亮 delay10ms(20); j+; break;case 2: for (j=0;j256;) write7279(SEGON,dis_codej);/ 将64个显示段逐个点亮i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46280.5-2025芯粒互联接口规范第5部分:基于2.5D封装的物理层技术要求
- GB/T 46280.3-2025芯粒互联接口规范第3部分:数据链路层技术要求
- 2025年机关老年大学招聘笔试模拟考试题
- 资源共享合作协议模板
- 2025年企业战略规划师专业技能认证试题及答案解析
- 2025年品牌形象设计师综合能力测评试题及答案解析
- 2025年健身教练技术水平考查试题及答案解析
- 2025年建筑经理执业资格考试试题及答案解析
- 课件中参考文献
- 2025年国际企业管理专业考试试题及答案解析
- 教学课件-信号智能电源屏(鼎汉)的简介与维护
- CML慢性髓系白血病医学教学课件
- 临床实习带教工作总结
- 老年营养不良
- 北京香格里拉饭店庭园环境设计
- 【公开课】社区教案
- 高考语文一轮复习备考小说语言 (共25张ppt)
- 2023年漳州市交通发展集团有限公司招聘笔试模拟试题及答案解析
- 放射性药物医学知识培训
- 关于运用监督执纪“第一种形态”的实施办法重点内容学习PPT课件(带内容)
- SHSG0522023年石油化工装置工艺设计包(成套技术)内容规定
评论
0/150
提交评论