《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例
#define uchar unsigned char #define uint unsigned int //各数字的数码管段码(共阴) uchar 07,0x7f,0x6f}; //显示缓冲
uchar DSY_Buffer[3]={0,0,0}; //延时
void DelayMS(uint ms) {
uchar t;
while(ms--)for(t=0;t<120;t++); } //主程序 void main() {
uchar i,m,Num; P0=0xff; P2=0xff; while(1) {
m=0xfe;
46
code
DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x
《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例
Num=P1; //读取拨码开关的值 DSY_Buffer[0]=Num/100; DSY_Buffer[1]=Num/10; DSY_Buffer[2]=Num; for(i=0;i<3;i++) //刷新显示在数码管上 {
m=_crol_(m,1); P2=m;
P0=DSY_CODE[DSY_Buffer[i]]; DelayMS(10); } } }
21 开关控制报警器
/* 名称:开关控制报警器
说明:用K1开关控制报警器,程序控制P1.0输出两种不同频率的声音,模拟很逼真的报警效果 */
47
《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例
#include
#define uchar unsigned char #define uint unsigned int sbit SPK=P1^0; sbit K1=P1^7; //发声函数 void Alarm(uchar t) {
uchar i,j; for(i=0;i<200;i++) {
SPK=~SPK;
for(j=0;j void main() { SPK=0; while(1) { if(K1==1) { 48 《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例 Alarm(90); Alarm(120); } } } 22 按键发音 /* 名称:按键发音 说明:按下不同的按键会是SOUNDER发出不同频率的声音。本例使用延时函数实现不同频率的声音输出,以后也可使用定时器 */ #include #define uchar unsigned char #define uint unsigned int sbit BEEP=P3^7; sbit K1=P1^4; sbit K2=P1^5; sbit K3=P1^6; sbit K4=P1^7; //延时 void DelayMS(uint x) 49 《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例 { uchar t; while(x--) for(t=0;t<120;t++); } //按周期t发音 void Play(uchar t) { uchar i; for(i=0;i<100;i++) { BEEP=~BEEP; DelayMS(t); } BEEP=0; } void main() { P1=0xff; BEEP=0; while(1) { if(K1==0) Play(1); 50