欢迎光临散文网 会员登陆 & 注册

51单片机的C语言基本用法

2020-07-16 12:20 作者:Joker大金宝  | 我要投稿

这是之前的视频——51单片机快速入门(https://www.bilibili.com/video/BV1Dv411B7Pw)中的TXT文件,这里发一下,方便大家来找。

视频中开发板的程序资料:http://www.prechin.net/forum.php?mod=viewthread&tid=35264&extra=

STC官网:http://www.stcmcudata.com/

MDK5(51版)https://www.keil.com/c51/demo/eval/c51.htm#/DOWNLOAD

51单片机概述:

创建工程的过程

MDK5(51版)

烧录程序的过程

ch340g usb转串口

stc-isp软件 pz-isp软件


单片机的手册


51单片机程序的编写方法

汇编语言(了解即可)

org 0000h

MOV a,#2fh

sjmp $

仿真寄存器的值


C语言

引用头文件(注意格式规范)

#include <reg51.h>

某些增强型单片机需要自己寻找头文件,keil中没有提供

学会查看头文件的内容

定义引脚

sbit P10=P1^0;

直接对IO口进行操作

P1=0xff;


粗略的延迟函数

基于12M晶振

us延迟

void delay_us(int n_us)

{

 int j,k;

 for(j=0;j<n_us;j++)

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

}

ms延迟

void delay_ms(unsigned int a)

{

int q;

while(a--){

for(q=400;q>0;q--);

}

}


led灯的驱动

根据电路判断写1还是写0

仿真方法

PORT2.7

流水灯

P2=0xfe;

循环中写

P2=P2<<1;


开关检测

先写1,后读取

注意分析电路


数码管的驱动原理

字形码

  共阴    共阳

0  3F      C0

1  06      F9

2  5B      A4

3  4F      B0

4  66      99

5  6D     92

6  7D     82

7  07     F8

8  7F     80

9  6F     90

A  77     88

B  7C     83

C  39     C6

D  5E     A1

E   79     86

F   71     8E

H  76     89

P  73     8C


显示一个数字

P1=0xf1;

P0=0x3f;


扫描显示

写入ROM

unsigned char code DIG_PLACE[4]={0xf1,0xf2,0xf4,0xf8};

unsigned char code DIG_CODE[17] = {

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


P1=DIG_PLACE[0];

P0=DIG_CODE[4];

delay_us(1);

P1=DIG_PLACE[1];

P0=DIG_CODE[3];

delay_us(1);

P1=DIG_PLACE[2];

P0=DIG_CODE[2];

delay_us(1);

P1=DIG_PLACE[3];

P0=DIG_CODE[1];

delay_us(1);


还有一些专用的数据管驱动芯片


LCD显示屏(学会调用厂家封装的库)

用到的文件移植到自己程序里


中断与定时器

概念

51的定时器

配置

num=65536-nus/1;

TMOD=0x01;

TH0=num/256;

TL0=num%256;

th0=TH0;

tl0=TL0;

EA=1;

ET0=1;

//PT0=1;

TR0=1;

中断服务函数

TIMER0()interrupt 1

{

TH0=th0;

TL0=tl0;


}


外部中断

P3.2   INT0

P3.3   INT1

配置

EA=1;

EX0=1;

//PX0=1;

IT0=1;

中断服务函数

INT0_()interrupt 0

{

//IE0=0;

}


51单片机的C语言基本用法的评论 (共 条)

分享到微博请遵守国家法律