请选择 进入手机版 | 继续访问电脑版
查看: 5150|回复: 8

“因仑‘3+1’工程特种兵擂台赛”(因仑华山论剑)

[复制链接]
发表于 2014-7-18 06:00:49 | 显示全部楼层 |阅读模式


    江湖召集令:广大武林好友请注意,“因仑‘3+1’工程特种兵擂台赛”题库公开了!!这次活动本着为素未谋面的同道中人提供一个相互切磋、相互交流工程技术的平台,同时也是为了吸引江湖中酷爱工程技术“侠客们”的参与度,提升网站的人气。
     另外,本论坛在上海因仑公司的推动下,由华东师范“风清扬”马潮老师以及“任我行”李外云老师两大绝世高手设擂,并亲自坐镇指导,希望意气风发的武林同道能够在此百花齐放,各显神通。此次两位高手的出山,不仅是为了带领下一代武林同仁提高实战技术,更是为了在江湖中寻觅一个旗鼓相当的对手!绝世的高手都有着绝世的寂寞!如果你也有“一览众山小”的自信与实力,那么来吧!战个痛快!尽情挥洒出精彩的一生!
     题库简介:本题库提供电子信息、物联网行业,基础训练题目。
     解决方案以最优为主实现功能同时实现智能处理器的最优处理。
     题库由全国高校老师提供,针对每个设计科目设置有论坛奖金。
     技术支持:因仑‘3+1’工程特种兵技术团队
     奖励机制:为每道题目设定最低价值两百的底价论坛币,根据设计者完成题目水平由评委老师评比,第一名获得底价论坛币加奖赏论坛币。
     评比机制:每两个月进行一次设计评比,由评委决出每期最优奖。



题目下载:








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

发表于 2014-7-28 20:57:59 | 显示全部楼层
对你的程序我提出一下几点看法,仅供参考:
(1)、前面的数组最好放到代码段,即 uint  code S[]=...,如果你的memory mode 采用small,肯定会导致data空间不够用,当然,如果针对STC15F2K60S2芯片内部有2K RAM,但你的memory mode large,这样可以将数组放到 RAM空间;
(2)、是否可以音节频率直接换成定时器的初始值,反正都是数组,这样减少中断服务程序初始值的计算时间。
(3)、STC15F2K60S2芯片的16位 定时器1T模式是这款芯片特点,是否可以改用这种模式。
回复 支持 3 反对 0

使用道具 举报

发表于 2014-7-19 10:02:03 | 显示全部楼层
本帖最后由 SDC158477392 于 2015-1-16 22:44 编辑

产生简单音频提示音乐,在蜂鸣器上发出
1、音乐样本:5   i  5   4 | 3   2  1 | 1  1  2  3 | 3  1  3  4 | 5 -
2、提示:在许多简单应用中,需要利用单片机系统产生各种音乐用于报警和提示等,如手机的来电铃声,儿童玩具,时钟的音乐报时等。用单片机产生各种音乐发声的原理很简单,就是由I/O引脚输出不同频率的脉冲信号,再将信号放大,推动发声器件发声(这里是指在要求不高的情况下,用不同频率的脉冲方波替代正弦波)。
/*******************************************************
*   程序功能:用蜂鸣器播放我爱北京天安门,
*   硬件说明:使用STC15F2K61S2,P3^2接一个按键为播放键。P3^0接一个无源蜂鸣器。
*   实验现象:通过按DK0按钮开启蜂鸣器,播放我爱北京天安门
*        日    期 : 2014/7/19
*        作    者 : xxx
*******************************************************/

#include<STC15F2K60S2.h>
#define FOSC 12000000                         //系统频率为12M
#define uchar unsigned char          //用uchar代替unsigned char
#define uint unsigned int                 //用uint代替unsigned int
uint i=0,j=0;
uint  S[]={784,1046,784,698,659,578,523,523,523,578,659,659,523,659,698,784,0};        //每个音符的频率
uchar T[]={157, 209,157,140,132,116,208,104,104,116,132,132,104,132,140,628};        //每个音符所持续的时间

/*******************************************************
//函数名称:Init_timer()
//函数功能:定时器0,外部中断0初始函数 12T模式
//入口参数:无
//返回参数:无
********************************************************/
void Init_timer()
{
IT0=1;
EX0=1;//外部中断初始化
TMOD=0x00; //定时器模式设置为16为自动重装
TL0=65536-FOSC/S[0]/12/2;               
TH0=(65536-FOSC/S[0]/12/2)>>8;
ET0=1;         //定时器0初始化
EA=1;        //开总中断
}
/*******************************************************
//函数名称:Int0()()
//函数功能:外部中断0服务程序
//入口参数:无
//返回参数:无
********************************************************/
void Int0()interrupt 0
{
Init_timer();
TR0=1; //开启定时器中断0
}
/*******************************************************
//函数名称:timer0()
//函数功能:定时器中断0服务程序
//入口参数:无
//返回参数:无
********************************************************/
void timer0()interrupt 1
{
P30=!P30; //输出PWM波
i++;
if(i==T[j]*5)
{ i=0;
j++;
TL0=65536-FOSC/S[j]/12/2;
TH0=(65536-FOSC/S[j]/12/2)>>8;
}                                                                //重装初值
if(S[j]==0)
{                                                                 
j=0;
TR0=0;
}                                 //检测音乐是否播完,播完关闭定时器0 ,停止播放
}
/*******************************************************
//函数名称:main()
//函数功能:程序主函数
********************************************************/
void main()
{
P3M1 &= ~1; //P3.0 设置为推挽输出
P3M0 |=  1;
Init_timer();
while(1);
}
回复 支持 2 反对 0

使用道具 举报

发表于 2014-7-30 14:41:30 | 显示全部楼层
在使用C51时有时我们并没有明确指定所定义的数据的存储类型,然而依然正确。 这是由于存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域。

供有3种存储模式(存储模式在 C51 编译器选项中选择):

1.Small模式

所有缺省变量参数均装入内部 RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。

2. Compact 模式

所有缺省变量均位于外部RAM区的一页(256Byte)。

3. Large 模式

所有缺省变量可放在多达 64KB 的外部RAM 区,优点是空间大,可存变量多,缺点是速度较慢。
回复 支持 1 反对 0

使用道具 举报

发表于 2014-7-19 08:59:55 | 显示全部楼层
我来试一下,
回复 支持 反对

使用道具 举报

发表于 2014-7-19 10:02:36 | 显示全部楼层
支持的就赞一下吧!
回复 支持 反对

使用道具 举报

发表于 2014-7-19 18:54:20 | 显示全部楼层
我来看下验证码会不会出来,
回复 支持 反对

使用道具 举报

发表于 2014-7-20 10:26:08 | 显示全部楼层
不错不错哦,受教了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表