没有合适的资源?快使用搜索试试~ 我知道了~
51单片机C语言编程基础和实例.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 198 浏览量
2021-09-27
10:19:07
上传
评论
收藏 254KB DOC 举报
温馨提示
试读
27页
51单片机C语言编程基础和实例.doc
资源详情
资源评论
资源推荐
基础知识: 单片机编程基础第一节:单数码管按键显示第二节:双数码管可调秒表第三节:十字路口
交通灯第四节:数码管驱动第五节:键盘驱动第六节:低频频率计第七节:电子表第八节:串行口应用
基础知识:51 单片机编程基础
单片机的外部结构:
双列直插;
,,, 四个 位准双向 引脚;(作为 输入时,要先输出高电平)
电源 ()和地线 ();
高电平复位 ();( 电容接 与 ,即可实现上电复位)
内置振荡电路,外部只要接晶体至 ()和 ();(频率为主频的 倍)
程序配置 ()接高电平 ;(运行单片机内部 中的程序)
支持第二功能:、、、、、
单片机内部 部件:所为学习单片机,实际上就是编程控制以下 部件,完成指定任务
四个 位通用 端口,对应引脚 、、 和 ;
两个 位定时计数器;(,,!,",!,")
一个串行通信接口;(,#$)
一个中断控制器;(,)
针对 单片机,头文件 %& 给出了 特殊功能寄存器所有端口的定义。
语言编程基础:
十六进制表示字节 %':二进制为 #;% 为 。
如果将一个 位二进数赋给一个 位的字节变量,则自动截断为低 位,而丢掉高 位。
(()'* 表示对变量 )'* 先增一;)'*+表示对变量后减一。
%,-%./表示为 %-%,%./
-0%. ,%/表示给变量 的低四位赋值 %,而不改变
的高四位。
1&234 /表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是5/6
在某引脚输出高电平的编程方法:(比如 ()引脚)
代码
#include<AT89x52.h>//该头文档中有单片机内部资源的符号化定义,其中包含 P1.3
void78'297void7 77):2;7表示没有输入参数,也没有函数返值,这入单片机运行的复位入
口
577
7<7-7/777给 < 赋值 ,引脚 就能输出高电平 77
71&23477 /77死循环,相当 !=7>:?:7!/77
677
1 / 27
注意: 的每个引脚要输出高电平时,必须外接上拉电阻(如 @)至 电源。
在某引脚输出低电平的编程方法:(比如 引脚)
代码
#include<AT89x52.h>//该头文档中有单片机内部资源的符号化定义,其中包含 P2.7
void78'297void7 77):2;7表示没有输入参数,也没有函数返值,这入单片机运行的复位入
口
577
7<7-7/777给 < 赋值 ,引脚 就能输出低电平 77
71&23477 /77死循环,相当 !=7>:?:7!/77
677
在某引脚输出方波编程方法:(比如 引脚)
代码
#include<AT89x52.h>//该头文档中有单片机内部资源的符号化定义,其中包含 P3.1
void78'297void7 77):2;7表示没有输入参数,也没有函数返值,这入单片机运行的复位入
口
577
71&23477 77非零表示真,如果为真则执行下面循环体的语句
7577
<7-7/77给 < 赋值 ,引脚 就能输出高电平 77
77<7-7/77给 < 赋值 ,引脚 就能输出低电平 77
767777由于一直为真,所以不断输出高、低、高、低……,从而形成方波
677
将某引脚的输入电平取反后,从另一个引脚输出:( 比如 - )
代码
#include<AT89x52.h>//该头文档中有单片机内部资源的符号化定义,其中包含 P0.4
和 P1.1 77
void78'297void7 77):2;7表示没有输入参数,也没有函数返值,这入单片机运行的复位入
口
577
7<7-7/777初始化。 作为输入,必须输出高电平
1&23477 77非零表示真,如果为真则执行下面循环体的语句
7577
if7<7--77 77读取 ,就是认为 为输入,如果 输入高电平 77
7757<7-7/7767给 < 赋值 ,引脚 就能输出低电平 77
2 / 27
77else77777否则 输入为低电平 77
7757<7-7/7767给 < 赋值 ,引脚 就能输出低电平 77
7757<7-7/7767给 < 赋值 ,引脚 就能输出高电平 77
767777由于一直为真,所以不断根据 的输入情况,改变 的输出电平
677
将某端口 个引脚输入电平,低四位取反后,从另一个端口 个引脚输出:( 比如 - )
代码
#include<AT89x52.h>//该头文档中有单片机内部资源的符号化定义,其中包含 P2 和
P3 77
void78'297void7 77):2;7表示没有输入参数,也没有函数返值,这入单片机运行的复位入
口
577
77-7%A/77初始化。 作为输入,必须输出高电平,同时给 口的 个引脚输出高电平
1&23477 77非零表示真,如果为真则执行下面循环体的语句
757777取反的方法是异或 ,而不取反的方法则是异或 77
7-7B%.7读取 ,就是认为 为输入,低四位异或者 ,即取反,然后输出
767777由于一直为真,所以不断将 取反输出到 77
677
注意:一个字节的 位 、 至 ,分别输出到 、 至 ,比如 -%.,则
、、、 四个引脚都输出低电平,而 、、、 四个引脚都输出高电
平。同样,输入一个端口 ,即是将 、 至 ,读入到一个字节的 位 、 至 。
共 9 页: 上一页 1 [2][3][4][5][6][7][8][9]下一页
第一节:单数码管按键显示
单片机最小系统的硬件原理接线图:
7接电源:()、()。加接退耦电容
7接晶体:()、()。注意标出晶体频率(选用 "C),还有辅助电
容 D
7接复位:()。接上电复位电路,以与手动复位电路,分析复位工作原理
7接配置:()。说明原因。
发光二极的控制:单片机 输出
将一发光二极管 ! 的正极(阳极)接 ,! 的负极(阴极)接地 。只要 输出高电平
,! 就正向导通(导通时 ! 上的压降大于 ),有电流流过 !,至发 ! 发亮。实际上由
于 高电平输出电阻为 @,起到输出限流的作用,所以流过 ! 的电流小于(E)@-
8。只要 输出低电平 ,实际小于 ,! 就不能导通,结果 ! 不亮。
开关双键的输入:输入先输出高
一个按键 @F< 接在 与 之间,另一个按键 @F< 接 与 之间,按 @F< 后
! 亮,按 @F< 后 ! 灭。同时按下 ! 半亮,! 保持后松开键的状态,即 亮 灭。
3 / 27
代码
#include<at89x52.h> 77
#de'neLEDP1^1//用符号 LED 代替 P1_1 77
#de'neKEY_ONP1^6//用符号 KEY_ON 代替 P1_6 77
#de'neKEY_OFFP1^7//用符号 KEY_OFF 代替 P1_7 77
void78'297void7 7777单片机复位后的执行入口,):2; 表示空,无输入参数,无返回值
577
7@F<7-7/77作为输入,首先输出高,接下 @F<, 则接地为 ,否则输入为 77
7@F<7-7/77作为输入,首先输出高,接下 @F<, 则接地为 ,否则输入为
71&23477 77永远为真,所以永远循环执行如下括号内所有语句
7577
77if7@F<--7 7!-/7是 @F< 接下,所示 输出高,! 亮
77if7@F<--7 7!-/7是 @F< 接下,所示 输出低,! 灭
767松开键后,都不给 ! 赋值,所以 ! 保持最后按键状态。
同时按下时,! 不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半
亮态
677
数码管的接法和驱动原理
777一支七段数码管实际由 个发光二极管构成,其中 个组形构成数字 的七段笔画,所以称为七段数
码管,而余下的 个发光二极管作为小数点。作为习惯,分别给 个发光二极管标上记号:
'GHGIG;G4G.G>G&。对应 的顶上一画,按顺时针方向排,中间一画为 >,小数点为 &。
777我们通常又将各二极与一个字节的 位对应,
' GH GI G; G4 G. G> G& ,相应 个发光二极管正好与单片机一个端口 9
的 个引脚连接,这样单片机就可以通过引脚输出高低电平控制 个发光二极的亮与灭,从而显示各种数
字和符号;对应字节,引脚接法为:
'9 ,H9 ,I9 ,;9 ,49 ,.9 ,>9 ,&9 。
777如果将 个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共
阴数码管,共同的引脚则称为共阴极, 个正极则为段极。否则,如果是将正极(阳极)内接在一起引出
的,则称为共阳数码管,共同的引脚则称为共阳极, 个负极则为段极。
777以单支共阴数码管为例,可将段极接到某端口 9,共阴极接 ,则可编写出对应十六进制码的七
4 / 27
段码表字节数据如右图:
7
键码显示的程序
我们在 端口接一支共阴数码管 !,在 、 端口接 个按键,分别编号为 @F<、@F< 到
@F<,操作时只能按一个键,按键后 ! 显示对应键编号。
代码
#include<at89x52.h> 77
#de'neSLEDP1 77
#de'neKEY_0P2^0 77
#de'neKEY_1P2^1 77
#de'neKEY_2P2^2 77
#de'neKEY_3P2^3 77
#de'neKEY_4P2^4 77
#de'neKEY_5P2^5 77
#de'neKEY_6P2^6 77
#de'neKEY_7P2^7 77
#de'neKEY_8P3^0 77
#de'neKEY_9P3^1 77
#de'neKEY_AP3^2 77
#de'neKEY_BP3^3 77
#de'neKEY_CP3^4 77
#de'neKEY_DP3^5 77
#de'neKEY_EP3^6 77
#de'neKEY_FP3^7 77
:;479J2>94;7char74>:;4KL-7用十六进数作为数组下标,可直接取得对应的七
段编码字节
5 / 27
剩余26页未读,继续阅读
huayuya123
- 粉丝: 26
- 资源: 31万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0