文档详情

单片机控制技术项目式课程(下篇,共上中下3篇).ppt

发布:2025-04-10约4.63万字共302页下载文档
文本预览下载声明

//数码管动态显示子函数voiddisplay(){uchari;switch(digbit) {case1: i=0; break; case2: i=1; break; case4: i=2; break; case8: i=3; break; default: break; }P2=0x00; //关闭显示P0=DisplayTable[wordbuf[i]];//送字型码P2=digbit; //送字位码DelayMS(2);if(digbit0x08) //共4位digbit=digbit*2; //左移一位elsedigbit=0x01;} //主函数voidmain(){intm,j,key;count=0; //初始没有输入,计数器设为0for(j=0;j4;j++) //刚加电时,初始0000wordbuf[j]=0;while(count5){ key=keyscan(); //调用键盘扫描函数 if(key=0key10)m=1; //输入0~9 elseif(key==10)m=2; //开始倒计时键 elseif(key==11)m=3; //取消键 elsem=4; //其他按键 switch(m){ case1:if(count4) {wordbuf[count]=key; //将按键序号即数字存入数组 P0=DisplayTable[key];//每次输入一个数字时4位都显示该数 count++; }break; case2:count=5; //按下开始键就跳出此循环 break; case3:count=0; //计数清零 for(j=0;j4;j++) {wordbuf[j]=0; //数码管显示0000 P0=DisplayTable[0]; } break; default:break;}}digbit=0x01;init_time1(); //打开T1的1s计时while(1){display(); } //调用动态显示}项目拓展STC89C52实验板简易电子琴的设计在实验板上设计一个简易的电子琴,具体要求:按K1键发1音,按K2键发2音……按K8键发高音1。由蜂鸣器来发出相应的音调。1.任务要求2.任务分析音乐主要是由音符和节拍决定的,“哆、唻、咪、法、嗦、啦、唏”音符对应于不同的声波频率,而节拍则表达的是声音持续的时间。通过控制单片机定时器的定时时间可以产生不同频率的方波,用于驱动无源蜂鸣器就能发出不同的音符,然后利用延时子程序来控制发音时间的长短,即可控制节拍。把乐谱中的音符和相应的节拍变换成定时常数和延时常数,做成数据表格存放在存储器中。由程序查表得到定时常数和延时常数,用1个定时器控制产生方波的频率,用延时程序控制发出该频率方波的持续时间。当延时时间到后再查询下1个音符的定时常数和延迟常数,依次进行下去即可。发音原理:7.1.2矩阵键盘控制数码管显示矩阵键盘的工作原理矩阵键盘由行线和列线组成,按键位于行、列的交叉点上。如图所示,1个4×4的行、列结构可以构成1个含有16个按键的键盘。在按键数量较多的场合,矩阵键盘与独立键盘相比要节省很多I/O口线。7.1.2矩阵键盘控制数码管显示矩阵键盘的工作原理矩阵键盘的按键识别方法:扫描法和线反转法扫描法第一步:识别键盘是否有键闭合第二步:识别具体闭合的按键扫描法线反转法第一步:将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行。第二步:将行线编程为输出线,列线编程为输入线,并使输出线为全零电平,

显示全部
相似文档