- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
湖南软件职业学院《单片机原理及应用课程设计》
音乐跑马灯的设计
班 级:电子1001班
指导教师: 周文辉
姓 名: 张 尹 袁 斌
设计提交日期: 2012年6月
实验要求
使用LED灯,用这发光二极管以不同的模式循环点亮;通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的功能,并同时可以用显示,在现实生活中应用广泛,具有现实意义AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-Flash Programmable and Eraseable Read Only Memory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。主要性能: 与MCS-51 微控制器产品系列兼容。 片内有4KB可在线重复编程的快闪擦写存储器 存储数据保存时间为10年 宽工作电压范围:Vcc可为2.7V到6V 全静态工作:可从0Hz至16MHz 程序存储器具有3级加密保护 128*8位内部RAM 32条可编程I/O线 两个16位定时器/计数器 中断结构具有5个中断源和2个优先级 可编程全双工串行通道 空闲状态维持低功耗和掉电状态保存存储内容3、实验仪器集成电路芯片8032,,AT89C51实验箱,按键,DVCC系列单片机微机仿真实验系统中的软件(WAVE 6000)#includereg52.h
#includeSoundPlay.h
unsigned char RunMode;
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;icount;i++)
for(j=0;j1200;j++);
}
unsigned char code LEDDisplayCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void Display(unsigned char Value)
{ P3=LEDDisplayCode[Value];}
void LEDflash(unsigned char Count)
{
unsigned char i;
bit Flag;
for(i=0;iCount;i++)
{
Flag=!Flag;
if(Flag)
Display(RunMode);
else
Display(0x10);
Delay1ms(100);
}
Display(RunMode);
}
unsigned char Getkey(void)
{
unsigned char KeyTemp,CheckValue,Key=0x00;
CheckValue=P20x32;
if(CheckValue==0x32)
return 0x00;
Delay1ms(10);
KeyTemp=P20x32;
if(KeyTemp==CheckValue) return 0x00;
if(!(CheckValue0x02)) Key|=0x01;
if(!(CheckValue0x10)) Key|=0x02;
if(!(CheckValue0x20)) Key|=0x04;
return Key;
}
unsigned int Timer0Count,SystemSpeed,SystemSpeedIndex;
void InitialTimer2(void)
{
T2CON=0x00;
TH2=RCAP2H=0xfc;
ET2=1;
TR2=1;
EA=1;
}
unsigned int code SpeedCode[]={1,2,3,5,8,10,14,17,20,30
,40,50,60,70,80,90,100,120,140,160,180,200,300,400,500,600,700,800,900,1000};
void SetSpeed(unsigned char Speed)
{ SystemSpeed=SpeedCode[Speed];}
void LEDshow(unsigned int LEDStatus)
{
P1=~(LEDStatus0x00ff);
P0=~((LEDStatus8)0x00ff);
}
void InitialCPU(void)
{
RunMode=0x00;
Timer0Count=0;
文档评论(0)