资源简介
C51单片机 通过定时器产生特定方波,然后按下矩阵键盘使蜂鸣器发出不同音调
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
uchar i;
sbit Beep =P2^3 ; //讯响器控制脚?
//36种音阶
unsigned sound_list[36]=
{
63628//低 1 DO
63731//# 1 DO#
63853//低 2 RE
63928//# 2 RE#
64021//低 3 M
64103//低 4 FA
64185//# 4 FA#
64260//低 5 SO
64331//# 5 SO#
64400//低 6 LA
64463//# 6
64524//低 7 SI
64580//中1 DO
64633//# 1 DO#
64684//中 2 RE
64732//# 2 RE#
64777//中 3 M
64820//中 4 FA
64860//# 4 FA#
64898//中 5 SO
64934//# 5 SO#
64968//中 6 LA
64994//# 6
65030//中 7 SI
65058//高 1 DO
65085//# 1 DO#
65110//高 2 RE
65134//# 2 RE#
65157//高 3 M
65178//高 4 FA
65198//# 4 FA#
65217//高 5 SO
65235//# 5 SO#
65252//高 6 LA
65268//# 6
65282//高 7 SI
} ;
/******************************************************************************/
void Time0_Init();
void delay(uint z);
uchar keyscan();
/****************************************************************/
/*-------------------------------------------------
功能:主程序
-------------------------------------------------*/
void main()
{
Time0_Init(); //定时器0中断初始化
while(1)
{
keyscan();//播放
}
}
void Time0_Init()
{
TMOD=0x01;
TH0=sound_list[i]/256;
TL0=sound_list[i]%256;
EA=1;
ET0=1;
}
void Time0_Int() interrupt 1
{
Beep=!Beep;
TH0=sound_list[i]/256;
TL0=sound_list[i]%256;
}
/******************************
矩阵键盘延时函数
**********************************/
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/**************************************
矩阵扫描
**************************************/
uchar keyscan()
{
uchar temp1=0xed;
uchar temp;
/*************************这一组的矩阵键盘是坏的******************************
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
break;
case 0xde:
break;
case 0xbe:
break;
case 0x7e:
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
/***************************************************/
P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
P1=0xaa;
TR0=1;
i=0;
delay(300);//改变声音的时间长短
TR0=0;
break;
case 0xdd:
P1=0x55;
TR0=1;
i=3;
delay(300);
TR0=0;
break;
case 0xbd:
P1=0xa5;
TR0=1;
i=6;
delay(200);
TR0=0;
break;
case 0x7d:
P1=0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4946 2015-06-19 19:03 按键音调\ajyd.c
文件 19853 2015-06-19 19:01 按键音调\ajyd.LST
文件 7644 2015-06-19 19:01 按键音调\ajyd.OBJ
文件 1228 2015-06-19 16:36 按键音调\ajydcs.c
文件 3157 2015-06-19 16:36 按键音调\ajydcs.LST
文件 1939 2015-06-19 16:36 按键音调\ajydcs.OBJ
文件 6829 2015-06-19 19:01 按键音调\按键音调
文件 2056 2015-06-19 19:01 按键音调\按键音调.hex
文件 11251 2015-06-19 19:01 按键音调\按键音调.M51
文件 1013 2015-06-23 20:13 按键音调\按键音调.Opt
文件 163 2015-06-23 20:13 按键音调\按键音调.plg
文件 1983 2015-06-19 19:03 按键音调\按键音调.Uv2
....... 1003 2015-06-23 20:09 按键音调\按键音调_Opt.Bak
....... 0 2015-06-19 13:53 按键音调\按键音调_Uv2.Bak
文件 1937 2015-06-19 16:36 按键音调\按键音调测试
文件 789 2015-06-19 16:36 按键音调\按键音调测试.hex
文件 3241 2015-06-19 16:36 按键音调\按键音调测试.M51
文件 1016 2015-06-19 17:21 按键音调\按键音调测试.Opt
文件 167 2015-06-23 20:09 按键音调\按键音调测试.plg
文件 1991 2015-06-19 17:21 按键音调\按键音调测试.Uv2
....... 0 2015-06-19 16:06 按键音调\按键音调测试_Uv2.Bak
目录 0 2015-06-23 20:13 按键音调
----------- --------- ---------- ----- ----
72206 22
- 上一篇:Torrent文件自动改名工具
- 下一篇:基于QZXing的简单二维码扫描
相关资源
- 51单片机通过一个按键实现暂停与恢复
- 基于ATmega16单片机的定时器中断秒表
- verilog微波炉定时器设计
- 单片机多定时器软件,解决单片机内
- stm32f429电容触摸按键程序
- 毕业设计__基于51单片机的公交车自动
- 1602LCD显示仿手机键盘按键字符
- 自动按键器
- VC 实现非窗口类中使用定时器的方法
- 浙江理工大学 数字电子实验 实验八
- 数码管驱动芯片TM1637的51程序
- VHDL按键设计
- 基于51单片机定时器的设计
- 51单片机Protues仿真舵机,可以通过按
- cypress 的触摸按键程序
- STM32F103,4*4矩阵按键
- 介绍一种LED小灯控制系统的设计方法
- 多种switch封装库,包括贴装按键,多
- MC9S12HY64 上的休眠 按键唤醒例程
- windows下的定时器
- 微机原理硬件实验报告8255A并行接口应
- 51单片机1602+ADIIC+按键
- 基于msp430g2553的触摸按键程序
- 基于51单片机定时器实现的数字时钟
- STM32F103四个通用定时器编码器模式配
- 24C02存储显示计时时间
- 8255扩展4*4按键
- 51单片机音乐闹钟程序秒表定时器整点
- 按键控制MSP430F5529单片机控制灯闪烁
- 实验5 外部中断实验.zip
评论
共有 条评论