新概念51单片机C语言教程例程.pdf
《新概念51单片机C语言教程例程.pdf》由会员分享,可在线阅读,更多相关《新概念51单片机C语言教程例程.pdf(147页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录例2.2.1编写程序,点亮第一个发光二极管(part2_l.c P27).-4-仞!|2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42).-5-例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。(part2_4.c P48).-5-例 2.7.1 编写程序使第一个二极管以亮200ms、灭 800ms的方式闪动。(part2_5.c P49)-6-例 283利用C 51自带库_crol_(),以间隔500m s,实现流水灯程序(part2_6.c P53)-6例3.2.1编写程序使第一个数码管显示8(part2.1_.l
2、c P59).-7-例 3.2.2 让实验板上6 个数码管同时点亮,依次显示0 到F,时间间隔为0.5m s,循环下去。(part2.1_2.c P61).-8-例 3.3.1 第一个数码管显示1,时间为0.5 s,然后关闭它,立即让第二个数码管显示2,时间为0.5s,在关闭它一直到最后一个数码管显示6,时间同样为0.5 s,关闭它之后再回来显示第一个数码管,一直循环下去。(part2.1_3.c P62).-9-仞3.5.1利用定时器0 工 作 方 式 1,在实验板上实现第一个发光管以1s亮灭闪烁。(part2.1.4.c P74).-11-例 3.5.2 用定时器0 的方式1实现第一个发光
3、二极管以200ms间隔闪烁,用定时器1 的方 式 1实现数码管前两位59s循环计时。(part2.1_5.c P75).-12-例 4.1.1 用数码管前两位显示一个十进制数,变化范围为0059,开始时显示0 0,每按下S2键一次,数值加1;每按下S3键一次,数值减1;每按下S4键一次,数值归零;按下S 5 键一次,利用定时器功能使数值开始自动每秒加1,再次按下S 5 键,数值停止加1,保持显示原数。(part2.2.c P82).-14-例 4.2.1 实验班卜.电时,数码管不显示,顺序按下矩阵键盘后,数码管上依次显示0-F,六个数码管同时静态显示即可。(part2.2_2.c P87).-
4、17-例 5.3.1 用单片机控制ADC0804进行数模转换,当拧动实验板上A/D旁边的电位时,在数码管的前三位以十进制方式显示出A/D转换后的数字量(8 位A/D转换后数值在0255变化)。(part2.3_l.c P107).-21-例 5.5.1 用单片机控制DAC0832芯片输出电流,让发光二级管D 12山灭均匀变到最亮,再由最亮均匀熄火。在最亮和最暗时使用蜂鸣器分别警报一声,完成整个周期时间控制在5s左右,循环变化。(part2.3_2.c P121).-23-例 6.5.1在上位机上用串口调试助手发送一个字符X,单片机收到字符后返回给上位机“IgetX”,串 口波特率设为 9600
5、bps。(part2.4_l.c P137).-25-修!1 6.6.1单片机上电后等待从上位机串口发来的命令,同时在数码管的前三位以十进制方式显示A/D采集的数值,在未收到上位机发送来的启动A/D转换命令之前数码管始终显示 000。当收到上位机以十六进制发送来的01后,向上位机发送字符串“Turn on ad!”同时间 隔 Is读取一次A/D的值,然后把A/D采集回来的8 位二进制转换成十进制表示的实际电压浮点数,并且从串口发送给上位机,形式如“The voltage is 3.398438V”,发送周期也是一秒一次,同时在数码管上也要每秒刷新现实的数值。当收到上位机以十六进制发送过来的02
6、后,向上位机发送字符串“Turn off ad!”,然后停止发送电压值,数码管上显示上次结束时保持的值。当收到上位机发来的其他任何数时,向上位机发送字符串“Error!。.-27-例 7.2.1 实 现 1602液 晶 的 第 一 行 显 示“I LOVE M C U!在第二行显示WWW.TXMCU.COMo.-31-例 7.2.2 实 现 1602第一行从左侧移入“Hell。everyone!同时第二行从右侧移入“Welcome to here!”,移入速度自定,然后停留在屏幕上。(part2.5_2.c P154).-33-例 7 3 1 实 现 12232液晶的第一行显示“I LOVE
7、MCU!”,第二行显示“我爱单片机”。(part2.5_3.c P160).-34-例 732 实 现 12232液晶第一行从右侧移入“Hello everyone!,同时第二行从右侧移入“欢迎大家来学习!”移入速度自定,最后停留在屏幕上。(part2.5_4.c P163).-37-例 7.4.1实现在12864液晶上第一行显示“0123456789”,并且让每一位数字随机变化,第二行 显 示“,第三行显示“天祥电子”,第四行对应第三行显示出下划线。(part2.5_5.c P173).-40-知识点:生成随机数(part2.5_512232suiji.cP176).-44-修!|8.3.1
8、利用定时器产生一个099秒变化的秒表,并且显示在数码管上,每过一秒将这个变化的数写入板上AT24co2 内部。当关闭实验板电源,并再次打开实验板电源时,单片机先从AT24co2 中将原来写入的数读取出来,接着此数继续变化并显示在数码管上。(part2.6_l.c P188).-48-例 10.1.1利用定时器0 工作方式0,在实验板上实现第一个发光管以1s亮灭闪烁。(part3.1.1.c P203).-53-例 10.2.1利用定时器0 工作方式2,在实验板上实现第一个发光管以1s亮灭闪烁。(part3.1.2.c P204).-54-例 10.3.1利用定时器工作方式3,在实验板上实现:用
9、TL0计数器对应的8 位定时器实现第一个发光管以1s亮灭闪烁,用THO计数器对应的8 位定时器实现第二个发光管以 0.5s亮灭闪烁。(part3.1.3.c P206).-54-M 10.5.1利用计数器0 工作方式1,在实验板上实现:用一根导线一端连接GND引脚,另一端去接触T0(P3.4)引脚,每接触一下,计数器计一次数,将所计的数值实时显示在数码管的前两位,计 满 100时清0,再从头计起。(part3.1.4.c P214).-55-快!(11.1.1设置单片机串行口的工作模式0,间隔循环发送十六进制数OxAA,然后用双路示波器观察P3.0和P3.1 口波形。(.-58-例 11.3.
10、1用交叉串口线连接两块实验板,或直接用短线交叉线连接连个单片机的P3.0和P3.1 口(共地)。在一块板上编写矩阵键盘扫描程序,当扫描到有键按下时,将键值通过串口发送出去,另一块板上单片机收到串口发送来的键值后,将对应键值以0F方式显示在数码管上。.-60-例 11.4.1 程序分为主机程序和从机程序,约定一次传送的数据为1 6 B,以02H地址的从机为例。(图 1142为多机通信主机程序流程图).-65-图 11.4.3为多机通信从机程序流程图。.-68-从机程序代码:(part3.2.6.c P234).-68-例 12.8.1 指针使用例程:(point.c P264).-71-例 13
11、.1.1编写程序实现:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计数到5 时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。(.-72-例 13.2.1 实验板上实现如下描述:程序启动后设定看门狗溢出时间为2 s,然后点亮第一个发光二极管,稍延时一会,然后熄灭发光二极管,使程序进入等待死循环状态,并且在死循环中大约每隔1s喂狗一次,看程序运行是否正常。.-74-例 13.6.L在实验板上实现:操作STC单片机自带的E2PROM,存储一组按秒递增的两位数据,并且将数据实时显示在数码管上,数据每变化
12、一次就往E2PROM中写入一次,当关闭实验板电源并再次开启电源时,从E2PROM中读取先前存储的数据,接着递增显示。-77-例13.7.1STC89LE516AD/X2系列单片机的A/D转换功能。时 钟 11.0592MHz,转换结果以 16进制形式输出到串行口,可以用串行口调试程序,观察输出结果(本代码摘自宏晶科技芯片手册,经作者调试可正常运行)。.-80-例 13.8.1 给出一个STC12c5412AD应用的参考程序。(part346.c P287).-82-程 序 14.3.1 利用51单片机的定时器设计一个时钟。.-89-程序15.5.1 使用DSl2c887时钟芯片设计高精度时钟。
13、.-97-程序16.3.1 使用TX-1C实验板上的DS18B20温度传感器设计温控系统C语言源代码(part4.3 P349).-108-程序17.3.1 太阳能充/放电控制器C语言源代码.-114-ISD400X系列语音芯片C语言参考程序:.-134-例 21.1.1 使用TX-1C实验板上两个独立按键调节直流电机的转速,同时在实验板的数码管上象征性的显示相应的转速值。通过控制单片机输出不同占空比的PWM信号来控制直流电机的转速(感性认识)。(part5.3 P434).-138-例 21.2.1步进电机应用C语言程序设计(part3.2 P444).-142-例 21.3.1 舵机应用c
14、 语言程序设计实例:开机时舵机角度自动转为。度,通过实验板上的独立按键调节舵机的角度转动,并且在实验板数码管上显示相应的角度。本例仅演示5个角度的控制,若想实现任意角度控制请大家自行编程实验。程序代码如下:(part5.3P453).-145-/调节舵机使之转动5 个 角 度 0 45 90 135 180 PWM信号周期为20ms,.-145-控制高电平的持续时间即可控制舵机停止制动的角度,0.5ms-0度 1-45 1.5-90 2-135 2.5-180.-145-程序流程是:开机时舵机角度自动转为0 度,按 下 P3.7则转到45度,以后就根据两个按键的按下而转动.-145-例 2.2
15、.1编写程序,点亮第一个发光二极管(part2_l.cP27)#include /52系列单片机头文件sbit ledl=PlA0;声明单片机Pl 口的第一位void main()主函数(led 1=0;/*点亮第一 一 个发光二极管*/例 2.2.2编写程序,点亮P1 口的若干二极管(part2_2.c P39)#include /52系列单片机头文件void main()主函数Pl=0 xaa;/while(l);例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42)#include /52系列单片机头文件#define uint u
16、nsigned int 宏定义sbit ledl=PlA0;声明单片机Pl 口的第一位uint i,j;void main()主函数(while(l)大循环led 1=0;/*点亮第一个发光二极管*/for(i=l;i0;i-)延时for(j=110;j0;j-);ledl=l;/*关闭第一个发光二极管*/for(i=1000;i0;i-)/延时for(j=l IO;jO;j-);)例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。(part2_4.c P48)#include#define uint unsigned intsbit ledl=PIA0;void delay l
17、s();void main()(while(l)(led 1=0;delay ls();ledl=l;delay ls();/52系列单片机头文件宏定义声明单片机Pl 口的第一位声明子函数主函数大循环/*点亮第一个发光二极管*/调用延时子函数/*关闭第一个发光二极管*/调用延时子函数void delay ls()子函数体(uint i,j;for(i=500;i0;i-)for(j=HO;jO;j-);例 2.7.1编写程序使第一个二极管以亮200ms、灭 800ms的方式闪动。(part2_5.c P49)#include/52系列单片机头文件#define uint unsigned in
18、t宏定义sbit ledl=PlA0;声明单片机Pl 口 的 第 位void delayms(uint);声明子函数void main()(主函数while(l)(大循环led 1=0;/*点亮第一个发光二极管*/delayms(200);延时200毫秒ledl=l;/*关闭第一个发光二极管*/delayms(800);延时800毫秒)void delayms(uint xms)(uint i,j;for(i=xms;i0;i)i=xms即延时约xms毫秒for(j=110;j0;j-);)例 2 8 3 利用C51自带库_croL(),以间隔500ms,实现流水灯程序(part2_6.c P
19、53)#include/52系列单片机头文件#include#define uint unsigned int宏定义#define uchar unsigned charvoid delayms(uint);声明子函数uchar aa;void main()主函数aa=Oxfe;while(l)赋初值11111110大循环Pl=aa;delayms(500);aa=_crol_(aa,1);)void delayms(uint xms)(uint i,j;for(i=xms;i0;i)for(j=110;j0;j-);延时500毫秒将aa循环左移1位后再赋给aa/i=xms即延时约xms毫秒例
20、 3.2.1编写程序使第一个数码管显示8(part2.l_.lcP59)#include sbit dula=P2A6;sbit wela=P2A7;52系列单片机头文件申明U1锁存器的锁存端申明U2锁存器的锁存端v o i d m a i n()w e l a=l;P 0=0 x F E;w e l a=0;打开U2锁存器送入位选信号关闭U2锁存器d u l a=1;P 0=0 x 7 F;d u l a=0;w h i l e(l);打开UI锁存器送入段选信号关闭U2锁存器程序停止到这里例 3.2.2让实验板上6 个数码管同时点亮,依次显示0 到 F,时间间隔为0.5m s,循环下去。(p
21、art2.1_2.c P61)#i n c l u d e#d e f i n e u c h a r u n s i g n e d c h a r#d e f i n e u i n t u n s i g n e d i n ts b i t d u l a=P 2A6;s b i t w e l a=P 2A7;5 2系列单片机头文件申明UI锁存器的锁存端申明U2锁存器的锁存端u c h a r n u m;u n c h a r c o d e t a b l e =0 x 3 f,0 x 0 6,0 x 5 b,0 x 4 f,0 x 6 6,0 x 6 d,0 x 7 d,0 x
22、 0 7,0 x 7 f,0 x 6 f,0 x 7 7,0 x 7 c,0 x 3 9,0 x 5 e,0 x 7 9,0 x 7 1 ;v o i d d e l a y m s(u i n t);v o i d m a i n()(w e l a=1;打开U2锁存端P 0=0 x c o;送入位选信号w e l a=0;关闭U2锁存端w h i l e(l)(f o r(n u m=0;n u m 0;i)/i=xms 即延时约 xms 毫秒for(j=110;j0;j-);例 3.3.1第一个数码管显示1,时间为0.5 s,然后关闭它,立即让第二个数码管显示2,时间为0.5s,在关闭它
23、一直到最后一个数码管显示6,时间同样为0.5s,关闭它之后再回来显示第一个数码管,一直循环下去。(part2.1_3.c P62)#include /52系列单片机头文件#define uchar unsigned char#define uint unsigned intsbit dula=P2A6;申明U I锁存器的锁存端sbit wela=P2A7;申明U 2锁存器的锁存端uchar num;unchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x
24、5e,0 x79,0 x71;void delayms(uint);void main()(while(l)(dula=l;PO=tablelJ;送段选数据dula=0;PO=Oxff;送位选数据前关闭所有显示,防止打开位选锁存时wela=l;原来段选数据通过位选锁存器造成混乱P0=0 xfe;送位选数据wela=0;delayms(500);延时dula=l;P O=t a b l e ;送段选数据d u l a=O;P O=O x f f;送位选数据前关闭所有显示,防止打开位选锁存时w e l a=l;原来段选数据通过位选锁存器造成混乱P O=O x f d;送位选数据w e l a=0;
25、d e l a y m s(500);延时d u l a=l;P O=t a b l e 3;送段选数据d u l a=O;P O=O x f f;送位选数据前关闭所有显示,防止打开位选锁存时w e l a=1;原来段选数据通过位选锁存器造成混乱P O=O x f o;送位选数据w e l a=0;d e l a y m s(500);延时d u l a=l;P 0=t a b l e l 4J;送段选数据d u l a=O;P O=O x f f;送位选数据前关闭所有显示,防止打开位选锁存时w e l a=l;原来段选数据通过位选锁存器造成混乱P 0=0 x l 7;送位选数据w e l a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新概念 51 单片机 语言 教程 例程
限制150内