独立按键与蜂鸣器的c语言编写,生产实习报告--单片机电子琴.doc

1基础部分

1.1设计任务

按照给定电路原理图,进行单片机最小系统的焊接:包括单片机、开关、插排、复位电路和晶振电路,正确焊接后,电路可以进行程序的下载。设计并焊接简单外围电路,包括:LED 与独立按键、蜂鸣器、双位数码管。?

使用汇编或 C 语言编写程序,使本电路完成以下功能:?

LED 跑马灯、双位数码管对应计数?,方式一(始终一个方向) 、方式(左右循环),可准确确定周期 T。每次第一个 LED 亮起的时候蜂鸣器响一声(t 秒)提示?。

按键控制:一共三个按键分别实现以下功能?

暂停:检测该按键有效按下后,LED 和数码管暂停,再次检测按键按下后,继续执行当前循环;?

复位:检测该按键有效按下后,LED 和数码管归零重新开始以当前模式循环?;

模式转换:正常运行状态,检测该按键有效按下后,数码管显示不变,LED 显示从当前方式转换成另一方式继续执行。

1.2设计思路

先设计好外围电路模块的原理图。根据自己的板子的实际情况安排布线并依据原理图进行焊接。再设计程序流程图,分别编写简单程序调试各个外围电路是否可以正常工作。学习使用单片机程序开发环境,编译下载程序等。?

比如:单独的跑马灯;双位数码管按秒计数;蜂鸣器 1s 一响;按键控制 LED 点亮(8 个按键对应 8 个 LED)。设计程序运行的状态图以及程序流程图,编写程序代码并调试。

1.3原理图

1.4PCB图

器件名称

实物图片

数量

器件名称

实物图片

数量

单片机STCS90C52RC

1

四角按键开关

4

单排插针(4针)

1

六角自锁开关

1

30pF瓷片电容

2

10KΩ电阻

1

晶振11.0592M

1

导线

若干

10uf电解电容

1

万能版

1

编程接口板

1

杜邦线

4

40脚IC座

1

LED(红色)

8

双位数码管

1

三极管8050

3

1KΩ电阻

14

排阻

1

1.5器件清单

表1-1 器件清单(1)

1.6程序流程图

图 主程序流程图 图 数码管子程序

1.7程序代码

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar code leds1[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f}; //P0口控制8位LED

uchar code leds2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,

0xef,0xf7,0xfb,0xfd};

sbit le1=P3^5; //左边数码管位选

sbit le2=P3^4; //右边数码管位选

sbit feng=P3^7; //蜂鸣器控制位

sbit key1=P2^0; //模式切换

sbit key2=P2^1; //暂停和开始

sbit key3=P2^2; //功能复位

uint ti,count,shi1,ge1,k;

uint flag=1;

void delay() //延时固定时间

{int i,j;

for(i=500;i>0;i--)

for(j=100;j>0;j--);

}

void delayms(uint ms)//延时ms毫秒

{

int i,j;

for(i=ms;i>0;i--)

for(j=110;j>0;j--);

}

void keyscan()

{

if(key2==1)

{

delayms(10);

if(key2==1)

{

while(key2) ;

TR0=!TR0;

P2=0x00;

}

}

if(key1==1)

{

delayms(10);

if(key1==1)

{

while(key1) ;

flag=!flag; //flag=1为默认模式1,为0为模式2

P2=0x00;

}

}

if(key3==1)

{

delayms(10);

if(key3==1)

{

w

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值