- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计报告
——Morse电码发声器
学号 姓名:张江涛
学号 姓名:陆圣鹏
学号 姓名:彭 力程序方案:
0-9和A-Z的摩尔斯电码表如下图所示:
将0-9和A-Z的摩尔斯电码制作为一个36行6列的二维数组,如下图所示
当输入0-9或A-Z之间的字符时,程序会根绝具体的字符,从摩尔斯电码表的二维数组中选出对应该字符的一行数组输出,作为该字符的摩尔斯电码。
用一个字节的二进制数代表一个字符的摩尔斯电码,左起第一个1为起始标志(起始标志及之前的0无效)。
起始标志后的0表示点。
起始标志后的1表示划。
如:
A 的报文信息 0000 0101
B 的报文信息 0001 1000
C 的报文信息 0001 1010
按此规律建立一个报文信息表,报文信息表要按 0—9 、A—Z的顺序排列,发送时先查表找字符对应的报文信息,左移报文信息找起始标志,(起始标志及之前的0不发声),然后调用点划子程序发点划声响,发送一个字符循环8次则自动结束。报文信息表同样为一个36行6列的二维数组,如下图所示:
系统细节方案:
点划间隔子程序是通过调用window.h库中的Beep函数是系统发出声音。程序收到字符后,根据字符对应的摩尔斯电码表中的数组,输出该字符的摩尔斯电码,并且查找到该字符的01报文信息表,通过两个循环,调用点划子程序,完成电码的发音功能。
子程序及其流程图:
点声音程序代码: 点声音程序流程图
int dot()//点声音
{
Beep(7000,200);
return 0;
}
划声音程序代码: 划声音程序流程图
int dash()//划声音
{
Beep(7000,600);
return 0;
}点划之间间隔程序代码:
int space()//电码间隔声音
{
Beep(0,400);
return 0;
}
主程序详解:
程序设计初期,用C++编写了一个控制台应用,先编写了一个电码编译的子程序:
int tra(char c)//电码编译
{
if(c=48c=57)
{
coutc的摩尔斯电码是:m[c-48]endl;
for(i=0;i8;i++)
{
if(n[c-48][i]==1)
{
j=i+1;
break;
}
}
for(i=j;i8;i++)
{
if(n[c-48][i]==0)
dot();//调用响铃点函数
if(n[c-48][i]==1)
dash();//调用响铃划函数
space();
}
}
else if(c=65c=90)
{
coutc的摩尔斯电码是:m[c-65+10]endl;
for(i=0;i8;i++)
{
if(n[c-65+10][i]==1)
{
j=i+1;
break;
}
}
for(i=j;i8;i++)
{
if(n[c-65+10][i]==0)
dot();
if(n[c-65+10][i]==1)
dash();
space();
}
}
else if(c48||(c57c65)||c90)
{
coutc输入格式错误,不是0-9或A-Z之间的字符endl;
}
return 0;
}
电码编译子程序流程图:
在主程序中利用fstream库中的ifstream文件流又编写了一段可以打开文件的语句,主程序代码如下:
int main()//主程序
{
while(1)
{
cout请选择输入字符或者文件路径endl;//选择输入字符还是文件
cinch;
if(ch==c)//输入字符进行编括译
{
cout请输入0-9或A-Z之间的字符endl;
while(1)
{
cinc;
tra(c);//调用编码函
Sleep(500);//设置读取字符延迟
}
}
else if(ch==f)//输入文件路径进行编译
{
cout请输入文件路径endl;
string filename;
cinfilename;
ifstream infile(filename,ios::in);
if(!infile)
{
cerr打开文件错误endl;
}
while(infile.get(c))
{
tr
您可能关注的文档
- 计算机方面的实习报告.docx
- 计算机辅助教育网站课程设计.doc
- 计算机检测维护实训报告表格.doc
- 计算机课程设计----实用网络考试系统.doc
- 计算机课程设计——水箱水位控制系统设计.doc
- 计算机课程设计题目.doc
- 计算机类毕业外文翻译---系统开发阶段.doc
- 计算机旅游网站建设开题报告.doc
- 计算机数据结构课程设计---Dijkstra算法和排序器.doc
- 计算机网络毕业设计--学校园网组件设计.doc
- 中国行业标准 GM/T 0126-2023HTML密码应用置标语法.pdf
- 《JJF 2121-2024恒转速源校准规范》.pdf
- 餐饮服务中20条处理要点.docx
- 《GM/T 0011-2023可信计算 可信密码支撑平台功能与接口规范》.pdf
- 《JJF 2134-2024旋转流变仪校准规范》.pdf
- JJF 2121-2024恒转速源校准规范.pdf
- 计量规程规范 JJF 2121-2024恒转速源校准规范.pdf
- 《JJF 2118-2024压力式六氟化硫气体密度控制器校验仪校准规范》.pdf
- JJF 2134-2024旋转流变仪校准规范.pdf
- 计量规程规范 JJF 2134-2024旋转流变仪校准规范.pdf
文档评论(0)