单片机0 99c语言程序,单片机C语言程序设计实训99例.doc

单片机C语言程序设计实训99例

《单片机C语言程序设计实训99例》案例

第 01 篇 基础程序设计

09 555定时器实验

/*名称:555定时器实验

说明:调节外部电阻RV1可改变延时值,从而影响灯点亮延时和发声延时。

*/

#include

#define uchar unsigned char

#define uint unsigned int

sbit Signal=P1^0;

sbit BEEP=P3^7;

//延时

void DelayMS(uint ms)

{

uchar i;

while(ms--) for(i=0;i<120;i++);

}

//主程序

void main()

{

while(1)

{

if(Signal)

{

BEEP=~BEEP;

DelayMS(3);

}

}

}

10 BCD译码数码管显示数字

/*名称:BCD译码数码管显示数字

说明:BCD码经4511译码后输出数码管段码,实现数码管显示(4511驱动数码管)。

*/

#include

#define uchar unsigned char

#define uint unsigned int

//数码管位码

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

//待显示数字(10为不显示)

uchar code BCD_CODE[]={2,0,1,0,10,3,10,5};

//延时

void DelayMS(uint ms)

{

uchar i;

while(ms--) for(i=0;i<120;i++);

}

//主程序

void main()

{

uchar k;

while(1)

{

for(k=0;k<8;k++)

{

P2=DSY_Index[k];

P1=BCD_CODE[k];

DelayMS(1);

}

}

}

11 MAX7221控制数码管动态显示

/*名称:MAX7221控制数码管动态显示

说明:本例用MAX7221控制8只数码管动态显示,这样大大减少了单片机引脚和机器时间的占用。

*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit DIN=P2^0;

sbit CSB=P2^1;

sbit CLK=P2^2;

uchar Disp_Buffer[]={2,0,1,5,10,5,10,9};//显示缓冲,10为“-”

//延时

void DelayMS(uint ms)

{

uchar i;

while(ms--) for(i=0;i<120;i++);

}

//写数据

void Write(uchar Addr,uchar Dat)

{

uchar i;

CSB=0;

for(i=0;i<8;i++)

{

CLK=0;Addr<<=1;DIN=CY;

CLK=1;_nop_();_nop_();CLK=0;

}

for(i=0;i<8;i++)

{

CLK=0;Dat<<=1;DIN=CY;

CLK=1;_nop_();_nop_();CLK=0;

}

CSB=1;

}

//MAX7221初始化

void Initialise()

{

Write(0x09,0xff);//编码模式地址0x09 0x00~0xff,为1的则位选通

Write(0x0a,0x07);//亮度地址0x0a 0x00~0x0f,0x0f最亮

Write(0x0b,0x07);//扫描数码管个数地址0x0b,最多扫描8只数码管

Write(0x0c,0x01);//工作模式地址0x0c 0x00:关闭;0x01:正常

}

//主程序

void main()

{

uchar i;

Initialise();//初始化

DelayMS(1);

for(i=0;i<8;i++)//显示8个数码管

{

Write(i+1,Disp_Buffer[i]);

}

while(1);

}

12 LCD1602字符液晶滚动演示程序

//main.c

/*名称:LCD1602字符液晶滚动演示程序

说明:K1~K3按钮分别实现液晶垂直或水平滚动显示及暂停与继续控制。

*/

#include

#include

#define uchar unsigned char

#define uint unsigned in

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值