《电子系统设计第5章以单片机为核心的智能型电子系统设计1讲稿ppt课件》由会员分享,可在线阅读,更多相关《电子系统设计第5章以单片机为核心的智能型电子系统设计1讲稿ppt课件(89页珍藏版)》请在金锄头文库上搜索。
1、1TM成都理工大学工程技术学院电子信息工程系成都理工大学工程技术学院电子信息工程系第第5 5章章 以单片机为核心的智能型电子系统设计以单片机为核心的智能型电子系统设计授课人:石坚授课人:石坚(讲师)(讲师)2TM2电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 1 1、AT89S5xAT89S5x单片机开发板应用单片机开发板应用3TM3电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 1 1、AT89S5xAT89S5x单片机开发板设计及应用单片机开发板设计及应用(1)(1)任务:点亮任务:点亮LEDLED灯灯在在KeilKei
2、l软件编辑窗口输软件编辑窗口输入以下程序:入以下程序:#include sbit P3_0=P30;void main(void) while(1) P3_0=0; 4TM4电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 Easy51Pro v2.0软件的使用软件的使用硬件连接硬件连接5TM5电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 Easy51Pro v2.0软件的使用软件的使用软件操作软件操作6TM6电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (2)AT89S51(2)AT89S
3、51单片机最小系统介绍单片机最小系统介绍单片机要工单片机要工作必须具备作必须具备以下条件:以下条件:(1 1)+5V+5V电电源;(源;(2 2)起)起振电路;振电路;(3 3)复位电)复位电路;路;(4 4)一块正)一块正常的单片机。常的单片机。注意:注意:另外P0 口要加上拉电阻,才有足够的驱动能力驱动外围器件工作;EA接高电平,表示单片机使用的是片内FLASH ROM。7TM7电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (3 3)任务:闪烁灯)任务:闪烁灯#include void delay02s(void) unsigned char i,j,k
4、; for(i=20;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-); void main(void) while(1) P3_0=0; delay02s(); P3_0=1; delay02s(); 要求:前面例子是让要求:前面例子是让LEDLED灯亮,灯亮,现在实现现在实现LEDLED灯的闪烁。灯的闪烁。8TM8电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (4 4)任务:流水灯)任务:流水灯要求:要求:做广告灯的左移右移,八个发光二极管分别接在单片机的P3.0P3.7 接口上,输出“0”时,发光二极管亮,左移右移按D1D
5、2D3D4D8D7D6 D1 亮,重复循环。9TM9电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (4 4)任务:流水灯)任务:流水灯程序:程序:#include unsigned char i; unsigned char temp; void delay(void) /延时子程序延时子程序 unsigned char m,n,s; for(m=20;m0;m-) for(n=20;n0;n-) for(s=248;s0;s-); void main(void) /主程序主程序 while(1) /循环条件永远为真,以下程序一直执行下去。循环条件永远为真,
6、以下程序一直执行下去。 10TM10电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页: temp=0x7f; P3=temp; /直接对直接对I/O口口P3赋值,使赋值,使P3.0输出低点平。输出低点平。delay(); /延时延时for(i=1;i1)|0x80; P3=temp;delay(); temp=0xfe; P3=temp;delay(); for(i=1;i8;i+) /实现广告灯的从实现广告灯的从D7到到D1移动移动 temp=(temp1)|0x01; P3=temp;delay(); 11TM11电子系统设计电子系统设计成都
7、理工大学工程技术学院成都理工大学工程技术学院石坚石坚 思考:如何实现更为复杂的花样灯?思考:如何实现更为复杂的花样灯?参考程序:参考程序:#include reg51.h#define uchar unsigned charconst uchar tab= 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /下移下移 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, /上移上移 0xef,0xbd,0xdb,0xfe, /两边向中间移两边向中间移 0xdb,0xbd,0xef, /中间向两边移中间向两边移 0xaa,0x55,0xaa,0x
8、55,0xaa,0x55, /1357,2468交替交替3次次 0xf0,0x0f,0xf0,0x0f, /1234,5678交替交替2次次 0x33,0xcc,0x33,0xcc,0x33,0xcc, /1256,3478交替交替3次次 0x00 ; /结束码结束码uchar t=0;/以下初始化子函数以下初始化子函数/void sys_init(void) TMOD=0x01; TH0=0xd8; 12TM12电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页: TL0=0xef; ET0=1; EA=1; TR0=1;/以下主函数以下主函数/
9、void main(void) uchar i=0; P3=tabi;i+; sys_init(); while(1) while(t100); t=0; if(tabi=0x00) i=0; P3=tabi;i+; 续左页:续左页:/以下定时器以下定时器0中断函数中断函数/void timer0(void) interrupt 1 TR0=0; TH0=0xd8; TL0=0xef; t+; TR0=1;13TM13电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (5 5)任务:按键识别)任务:按键识别要求:要求:通过按下一次按键通过按下一次按键INT0IN
10、T0,使小灯,使小灯D1 D1 亮灭交替变换。亮灭交替变换。实验原理:实验原理:只要判断只要判断P3.2 的电平就可的电平就可以知道按键是否被按下;以知道按键是否被按下;而在按键按下的过程中,而在按键按下的过程中,由于机械抖动,将产生干由于机械抖动,将产生干扰,电平高低变化扰,电平高低变化。可以可以采用软件滤波的方法去除采用软件滤波的方法去除这些干扰信号,在程序设这些干扰信号,在程序设计时,一旦发现计时,一旦发现P3.2 为低为低电平,进入按键判断状态,电平,进入按键判断状态,软件延时软件延时10-20ms,从而避,从而避开了干扰信号区域,再重开了干扰信号区域,再重新检测新检测P3.2 状态,
11、看按键状态,看按键是否真的已经按下。是否真的已经按下。14TM14电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 参考程序:参考程序:include sbit INT_0=P32; /定定义义按按键键的的输输入端入端 sbit D1=P30; /D1小灯定小灯定义义void delay10ms(void) /延延时时程序程序 unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-); key( ) /按按键键判断程序判断程序 if(INT_0=0) /判断是否按下判断是否按下键盘键盘 delay10ms( ); /
12、延延时时,软软件去干件去干扰扰if(INT_0=0) /确确认认按按键键按下按下 D1=!D1; /D1亮亮灭灭交替交替变变化化 while(INT_0=0);/按按键锁键锁定定,每按一次每按一次D1只只变变化一次化一次 15TM15电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页: main()while(1) /永永远远循循环环,扫扫描判断按描判断按键键是否按下是否按下 key(); /对对于此于此处处CPU只按只按键键判断判断 一直一直扫扫描描;课后请实践:1.1.用两个按键来控制用两个按键来控制D1 D1 的亮灭;的亮灭;2. 2. 使用
13、一个按键,控制小灯亮的顺序使用一个按键,控制小灯亮的顺序D1D2D3D4D8D7D1D2D3D4D8D7 D0 D0 亮重复循环;亮重复循环;16TM16电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (6 6)任务:数码管静态显示)任务:数码管静态显示要求:要求:用数码管用数码管LED LED 的个位,静态显示数字的个位,静态显示数字“4”4”字样;字样;注意:因采用共阴数码显示管,故此图因采用共阴数码显示管,故此图P0P0口还应接口还应接1K1K或或10K10K的排阻作为上拉电阻。的排阻作为上拉电阻。17TM17电子系统设计电子系统设计成都理工大学工程技术
14、学院成都理工大学工程技术学院石坚石坚 参考程序:参考程序:#include sbit GE=P13;code unsigned char seg7code10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /显显示段示段码码main() unsigned char display_date=4; /定定义义并并赋值赋值要要显显示的数据示的数据while(1) P0=seg7codedisplay_date; /查查表表,输输出出 GE=0; /P13为为低低电电平平,相当于把数相当于把数码码管的管的4H端接地端接地课后请实践:1.1.让显
15、示的数据动起来,比如做一个让显示的数据动起来,比如做一个0 0 到到9 9 的秒表(用软件延时);的秒表(用软件延时);2.2.和按键判断程序结合,用按键控制数字变化;和按键判断程序结合,用按键控制数字变化;18TM18电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (7 7)任务:数码管动态显示)任务:数码管动态显示要求:要求:用数码管用数码管LED LED 的显示四位数据,比如显示数字的显示四位数据,比如显示数字“1234”1234”;参考程序:参考程序:#include sbit qian=P10;sbit bai=P11;sbit shi=P12;sb
16、it ge=P13;code unsigned char seg7code10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /显显示段示段码码void Delay(unsigned int tc) /延延时时程序程序while( tc != 0 )/如果如果tc为为0则终则终止延止延时时unsigned int i;/局部正整数局部正整数变变量量 ifor(i=0; i100; i+);/执执行行400次将耗次将耗时时1毫秒毫秒tc-;/tc计计数减一数减一19TM19电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术
17、学院石坚石坚 续前页:续前页:void Led(int date) /显显示函数示函数qian=0; /P1.0输输出低出低电电平,平,选选通千位数通千位数P0=seg7codedate/1000; /取出千位数,取出千位数,查查表,表,输输出出。Delay(10); /延延时时qian=1; /销隐销隐bai=0; /P1.1输输出低出低电电平,平,选选通百位数通百位数P0=seg7codedate%1000/100; /取出百位数,取出百位数,查查表,表,输输出出。Delay(10); /延延时时bai=1; /销隐销隐shi=0; /P1.2输输出低出低电电平,平,选选通十位数通十位数P
18、0=seg7codedate%100/10; /取出十位数,取出十位数,查查表,表,输输出出。Delay(10); /延延时时shi=1; /销隐销隐ge=0;/P1.3输输出低出低电电平,平,选选通十位数通十位数P0=seg7codedate%10; /取出个位数,取出个位数,查查表,表,输输出出。Delay(10);ge=1;20TM20电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:main() int display_date=1234; /定定义义并并赋值赋值要要显显示的数据示的数据 while(1) Led(display_date
19、);/调调用用显显示函数示函数显显示数据示数据display_date 21TM21电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 上述数码管动态显示程序的另一种写法上述数码管动态显示程序的另一种写法参考程序:参考程序:#include unsigned char datebit=0xfe,0xfd,0xfb,0xf7;/存储数码管的位选值存储数码管的位选值unsigned char tvdate=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,;unsigned int disdata; /定义要显示的数
20、据定义要显示的数据unsigned char disdat4; /存储要显示的四位数据存储要显示的四位数据void delay(time) unsigned char i,j; for(j=0;jtime;j+) for(i=0;i250;i+); display(void)unsigned char k;disdata=1234;/显示显示1234 22TM22电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页: disdat0=disdat/1000;/取出千位取出千位disdat1=disdat%1000/100; /取出百位取出百位disd
21、at2=disdat%100/10;/取出十位取出十位disdat3=disdat%10;/取出个位取出个位for(k=0;k4;k+) /显显示四位数据示四位数据 P0=tvdatedisdatk; /送出要送出要显显示数据的段示数据的段码码P1=datebitk;/P2位位选选delay(10);/延延时时 main() while(1) display(); 这种写法比上一种复杂这种写法比上一种复杂, ,占用空间要多一些占用空间要多一些. .但是使但是使用方便用方便, ,可以在此基础上方便的加上比如显示小数可以在此基础上方便的加上比如显示小数点点, ,指定某位数码管闪烁等。指定某位数码管
22、闪烁等。课后思考:课后思考:如何用软件延时来做一个如何用软件延时来做一个0 0 到到60 60 秒的计数器吗?秒的计数器吗?23TM23电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (8 8)任务:)任务:4X44X4矩阵键盘识别矩阵键盘识别要求:要求:用用AT89S51 AT89S51 的并行口的并行口P2 P2 接接44 44 矩阵键盘,以矩阵键盘,以P3.0P3.0P3.3 P3.3 作输入线,作输入线,以以P3.4P3.4P3.7 P3.7 作输出线;在每一个数码管上显示每个按键的作输出线;在每一个数码管上显示每个按键的“0 0F”F”序号。序号。
23、实验原理实验原理 每个按键有它的行值和列值,行每个按键有它的行值和列值,行值和列值的组合就是识别这个按值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分键的编码。矩阵的行线和列线分别通过两并行接口和别通过两并行接口和CPU CPU 通信。通信。键盘处理程序的任务是:确定有键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,无键按下,判断哪一个键按下,键的功能是什么;还要消除按键键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口键逐行动态接地,另一个并行口输入按键状态,
24、由行扫描值和回输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按馈信号共同形成键编码而识别按键,通过软件查表,查出该键的键,通过软件查表,查出该键的功能。功能。24TM24电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 键盘识别的两种方法键盘识别的两种方法逐行扫描法逐行扫描法:(1 1)首先判断有无键按下:令矩阵行线输出全)首先判断有无键按下:令矩阵行线输出全0 0信号,检测信号,检测列线状态,若有一列电平为低,则有键按下。列线状态,若有一列电平为低,则有键按下。(2 2)确定闭合键位置:依次将各行线置为低电平,逐行检)确定闭合键位置:依次将各行线置为低
25、电平,逐行检测各列线的电平状态,若某列为低,则该行线和列线交叉处测各列线的电平状态,若某列为低,则该行线和列线交叉处按键就是闭合键。按键就是闭合键。线反转法线反转法:(1 1)令矩阵键盘列线输出全)令矩阵键盘列线输出全0 0信号,行线作为输入接口接收信号,行线作为输入接口接收信号,可判断按键处于哪一行。信号,可判断按键处于哪一行。(2 2)令矩阵键盘行线输出全)令矩阵键盘行线输出全0 0信号,列线作为输入接口接收信号,列线作为输入接口接收信号,可判断按键处于哪一列。信号,可判断按键处于哪一列。(3 3)将输入信号相或后形成键盘的唯一键码。)将输入信号相或后形成键盘的唯一键码。25TM25电子系
26、统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 程序程序:(线反转法):(线反转法)#include unsigned char code seg7code=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; unsigned char k;void delay10ms(void) /延延时时程序程序 unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-); void Getch ( ) unsigned
27、 char X,Y,Z; P2=0xff; P2=0x0f; /先先对对P2置数置数 行行扫扫描描if(P2!=0x0f) /判断是否有判断是否有键键按下按下 delay10ms(); /延延时时,软软件去干件去干扰扰 if(P2!=0x0f) /确确认认按按键键按下按下X = P2; 26TM26电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页: X=P2; /保存行保存行扫扫描描时时有有键键按下按下时时状状态态P2=0xf0; /列列扫扫描描Y=P2; /保存列保存列扫扫描描时时有有键键按下按下时时状状态态Z=X|Y; /取出取出键值键值sw
28、itch ( Z ) /判断判断键值键值(那一个(那一个键键按下按下)case 0x77: k=0; break; /对键值赋值对键值赋值case 0x7b: k=1; break; case 0x7d: k=2; break; case 0x7e: k=3; break; case 0xb7: k=4; break; case 0xbb: k=5; break; case 0xbd: k=6; break; case 0xbe: k=7; break; case 0xd7: k=8; break; case 0xdb: k=9; break; case 0xdd: k=10;break; c
29、ase 0xde: k=11;break; case 0xe7: k=12;break; case 0xeb: k=13;break; 27TM27电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页: case 0xed: k=14;break; case 0xee: k=15;break; void main(void) while(1) P2=0xff; Getch( ); P0=seg7codek; /查查表表LED输输出出 P1=0xf0; /输输出相同的四位数据出相同的四位数据。 28TM28电子系统设计电子系统设计成都理工大学工程技术学
30、院成都理工大学工程技术学院石坚石坚 (9 9)任务:按键中断识别)任务:按键中断识别要求:要求:采用中断技术,每按一下按键,计数器加采用中断技术,每按一下按键,计数器加1 1,并用,并用LED LED 显示出来,注意显示出来,注意只显示只显示2 2位十进制数。位十进制数。原理:原理:以上的两个关于按键识别的实验的程序都是采用扫描的方式来实现的,以上的两个关于按键识别的实验的程序都是采用扫描的方式来实现的,CPUCPU的利用率比较低;按键判断还可以用中断方式来判断。中断方式可以满足的利用率比较低;按键判断还可以用中断方式来判断。中断方式可以满足快速响应的要求。快速响应的要求。29TM29电子系统
31、设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 程序程序:#include unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char dispcount=0; /计数计数sbit gewei=P13; /个位选通定义个位选通定义sbit shiwei=P12; /十位选通定义十位选通定义void Delay(unsigned int tc) /延时程序延时程序while( tc != 0 )unsigned int i;for(i=0; i=10)
32、/显示两位数显示两位数shiwei=0;P0=tabledispcount/10;Delay(8);shiwei=1;gewei=0;P0=tabledispcount%10;Delay(5);gewei=1;else /显示一位数显示一位数 31TM31电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:shiwei=1;gewei=0;P0=tabledispcount;Delay(8); void main() TCON=0x01; /下降沿触下降沿触发发 IE=0x81; /开开总总中断和允中断和允许许外部中断外部中断 while(1) /
33、循循环执环执行行 LED( ); /调调用用显显示函数示函数/*课课后思考:后思考:在程序在硬件运行过程中在程序在硬件运行过程中, ,有时候按一下键会加几个数有时候按一下键会加几个数, ,是因为没有去除按键干是因为没有去除按键干扰请您想一想怎么消除抖动扰请您想一想怎么消除抖动. ./*/ 32TM32电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (1010)任务:定时器)任务:定时器T0T0的应用的应用9.99.9秒计时设计秒计时设计要求:要求:开始时,显示开始时,显示“00”00”,第,第1 1 次按下次按下INT0 INT0 后就开始计时。第后就开始计时
34、。第2 2 次按次按INT0 INT0 后,计时停止。第后,计时停止。第3 3 次按次按INT0 INT0 后,计时归零。后,计时归零。33TM33电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 程序程序:#include unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07, 0x7f,0x6f, ;unsigned char sec; /定义计数值,每过定义计数值,每过1/10 秒,秒,sec 加一加一unsigned char keycnt=1; /键值判断键值判断unsign
35、ed int tcnt; /中断次数计数器中断次数计数器 sbit gewei=P13; /个位选通定义个位选通定义sbit shiwei=P12; /十位选通定义十位选通定义sbit INT_0=P32; /按键定义位按键定义位void Delay(unsigned int tc) /延时程序延时程序while( tc != 0 )unsigned int i;for(i=0; i0;i-) /延延时时去干去干扰扰for(j=248;j0;j-);35TM35电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:if(INT_0=0)switch(
36、keycnt) /按下次数判断按下次数判断case 1: /第一次按下第一次按下TH0=0x06; /对对TH0 TL0 赋值赋值TL0=0x06;TR0=1; /开始定开始定时时keycnt=2; /为为第二次做准第二次做准备备break;case 2: /第二次按下第二次按下TR0=0; /定定时结时结束束keycnt=3; /为为第三次按下做准第三次按下做准备备break;case 3: /第三次按下第三次按下keycnt=1; /重新开始判断重新开始判断键值键值sec=0; /计计数重新从零开始数重新从零开始break; 36TM36电子系统设计电子系统设计成都理工大学工程技术学院成都
37、理工大学工程技术学院石坚石坚 续前页:续前页:while(INT_0=0);void t0(void) interrupt 1 using 0 /定时中断服务函数定时中断服务函数tcnt+; /每过每过250us,tcnt 加一加一if(tcnt=400) /计满计满400 次(次(0.1 秒)时秒)时tcnt=0; /重新再计重新再计sec+;if(sec=100) /定时定时10 秒,在从零开始计时秒,在从零开始计时sec=0;37TM37电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:void main(void)TMOD=0x02; /
38、定时器工作在方式定时器工作在方式2 自动重装方式自动重装方式ET0=1; /允许允许T0 产生中断产生中断EA=1; /开总中断开总中断sec=0;while(1)KEY();LED();38TM38电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 电子钟电路及程序示例:电子钟电路及程序示例:电路原理图:电路原理图:39TM39电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 C C语言源程序:语言源程序:#includeunsigned char code dis_code11=0x3f,0x06,0x5b,0x4f,0x66,
39、0x6d,0x7d,0x07, 0x7f,0x6f,0x80;unsigned char data dis5;sec=0,min=11,hou=17,cou=0,sec_flag=0,sansuo_flag=0,dis_r=0;/*void main() P0=0x00; P2=0xff;TMOD=0x11; TH0=0xec;TL0=0x78; /T0十毫秒定时十毫秒定时 TH1=0xfe; TL1=0x0c; /T1一毫秒定时一毫秒定时 EA=1; ET0=1;ET1=1; TR0=1; TR1=1; while(1) if(sec_flag=1) sec_flag=0; 40TM40电子
40、系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:void time0(void) interrupt 1 cou+; if(cou=50) sansuo_flag=sansuo_flag; if(cou=100) sec_flag=1;cou=0;sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hou+; if(hou=23) hou=0; TH0=0xec; TL0=0x78;41TM41电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:void ti
41、me1(void) interrupt 3dis0=min%10;dis1=min/10;dis2=10;dis3=hou%10;dis4=hou/10; P0=dis_codedisdis_r; switch(dis_r) case 0:P2=0xef;dis_r+;break; case 1:P2=0xdf;dis_r+;break; case 2: if(sansuo_flag=0) P2=0xcf; else P2=0xff; dis_r+;break; case 3:P2=0xbf;dis_r+;break; case 4:P2=0x7f;dis_r+;break; default:
42、dis_r=0;P2=0xff; TH1=0xfe; TL1=0x0c;42TM42电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 如何加入按键校时程序并用如何加入按键校时程序并用ProteusProteus软件仿真软件仿真43TM43电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 含校时功能的数字电子钟完整含校时功能的数字电子钟完整C C语言源程序代码语言源程序代码#includeunsigned char code dis_code10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7
43、f,0x6f;unsigned char data dis4;unsigned char sec=0,min=59,hou=22,cou=0,sansuo_flag=0,dis_r=0;unsigned char int0_flag,int1_flag;/以下以下10ms延时函数延时函数/void delay10ms(void) unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-); /以下为主函数以下为主函数/void main(void) P0=0x00; P2=0xff;TMOD=0x11; TH0=0xec;TL0=0x78; /T0十
44、毫秒定时十毫秒定时 TH1=0xfe;TL1=0x0c; /T1一毫秒定时码一毫秒定时码 EA=1;EX0=1;EX1=1; IT0=1;IT1=1;ET0=1;ET1=1;TR0=1;TR1=1;44TM44电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:while(1) /先判断是否有分钟校时键按下先判断是否有分钟校时键按下/ if(int0_flag=1) EX0=0;int0_flag=0; delay10ms(); if(P3_2=0) min+;EX0=1; if(min=60) min=0; /再判断是否有小时校时键按下再判断是否
45、有小时校时键按下/ if(int1_flag=1) EX1=0;int1_flag=0; delay10ms(); if(P3_3=0) hou+;EX1=1; if(hou=24) hou=0; 45TM45电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:void int0(void) interrupt 0 /外部中断外部中断0函数函数/ int0_flag=1;void time0(void) interrupt 1 /定时器定时器0中断函数中断函数/ cou+; if(cou=50) sansuo_flag=sansuo_flag; i
46、f(cou=100) cou=0;sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hou+; if(hou=24) hou=0; TH0=0xec; TL0=0x78;46TM46电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:void int1(void) interrupt 2 /外部中断外部中断1函数函数/ int1_flag=1;/以下为定时器以下为定时器1中断函数中断函数/void time1(void) interrupt 3dis0=min%10;dis1=min/10;dis2=h
47、ou%10;dis3=hou/10; switch(dis_r) case 0:P2=0xef;P0=dis_codedisdis_r;dis_r+;break; case 1:P2=0xdf;P0=dis_codedisdis_r;dis_r+;break; case 2:P2=0xbf; if(sansuo_flag=0) P0=dis_codedisdis_r|0x80; else P0=dis_codedisdis_r; dis_r+;break; case 3:P2=0x7f;P0=dis_codedisdis_r;dis_r+;break; default:dis_r=0;P2=0
48、xff; TH1=0xfe; TL1=0x0c;47TM47电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (1111)任务:)任务:PCPC机与单片机通信机与单片机通信要求:要求:单片机串口通信的应用,通过串口,电脑和单片机系统进行通信。电单片机串口通信的应用,通过串口,电脑和单片机系统进行通信。电脑作为上位机,向下位机单片机系统发送十六进制或者脑作为上位机,向下位机单片机系统发送十六进制或者ASCLLASCLL码,单片机系统码,单片机系统接收后,用接收后,用LED LED 显示接收到的数据和向上位机发回原样数据。显示接收到的数据和向上位机发回原样数据。48
49、TM48电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 单片机串口相关知识回顾单片机串口相关知识回顾(1) MCS-51串行口的原理结构图串行口的原理结构图49TM49电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 单片机串口相关知识回顾单片机串口相关知识回顾(2) 串行口控制寄存器串行口控制寄存器SCONSM0 SM1 SM2 REN TB8 RB8TIRI D7 D6 D5 D4 D3 D2 D1 D0 SMODGF1 GF0PDIDL D7 D6 D5 D4 D3 D2 D1 D0 (3) 特殊功能寄存器特殊功能寄存器P
50、CON50TM50电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 单片机串口相关知识回顾单片机串口相关知识回顾(4) 串口通信的波特率串口通信的波特率对于方式对于方式0,波特率是固定的波特率是固定的, ,为单片机时钟的为单片机时钟的1/12,1/12,即即fosc/12。对于方式对于方式2,2,波特率有两种可供选择波特率有两种可供选择, ,即即fosc/32fosc/32和和fosc/64fosc/64。对应于以下公式:。对应于以下公式: 波特率波特率=fosc(2SMOD)/64 对于方式对于方式1 1和方式和方式3,3,波特率都由定时器波特率都由定时器T1
51、T1的溢出率来决定的溢出率来决定, ,对应于以下公式:对应于以下公式: 波特率波特率=(2SMOD/32)(定时器定时器T1的溢出率的溢出率)而定时器而定时器T1T1的溢出率则和所采用的定时器工作方式有关的溢出率则和所采用的定时器工作方式有关, ,并并可用以下公式表示:可用以下公式表示: 定时器定时器T1T1的溢出率的溢出率=fosc/12(2n-X)=fosc/12(2n-X)51TM51电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 程序程序:#include unsigned char dat; /用于存储单片机接收发送缓冲寄存器用于存储单片机接收发送缓
52、冲寄存器SBUF 里面的内容里面的内容sbit gewei=P13; /个位选通定义个位选通定义sbit shiwei=P12; /十位选通定义十位选通定义unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07, 0x7f,0x6f;void Delay(unsigned int tc) /延时程序延时程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;void LED( ) /LED 显示接收到的数据(十进制)显示接收到的数据(十进制)shiwei=0;P0
53、=tabledat/10;Delay(5);52TM52电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:shiwei=1;gewei=0;P0=tabledat%10;Delay(5);gewei=1;void Init_Com(void)/功能功能:串口初始化串口初始化,波特率波特率9600,方式,方式1TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;53TM53电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:
54、void main() /实现接收数据并把接收到的数据原样发送回去实现接收数据并把接收到的数据原样发送回去/Init_Com(); /串口初始化串口初始化while(1)if ( RI ) /扫描判断是否接收到数据,扫描判断是否接收到数据,dat = SBUF; /接收数据接收数据SBUF 赋与赋与datRI=0; /RI 清零(必须用软件清零)清零(必须用软件清零)SBUF = dat; /再原样把数据发送回去再原样把数据发送回去LED( ); /显示接收到的数据显示接收到的数据54TM54电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (1212)任务:)
55、任务:数模转换数模转换器器ADC0804ADC0804的应用的应用(扩展)(扩展)要求:要求:从从ADC0804ADC0804的通道的通道IN+IN+输入输入0 05V 5V 之间的模拟量,通过之间的模拟量,通过ADC0804 ADC0804 转换成转换成数字量在数码管上以十进制形成显示出来。数字量在数码管上以十进制形成显示出来。55TM55电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 程序程序:#include code unsigned char seg7code10=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x
56、7f,0x6f; /显示段码显示段码sbit int1=P33; /定义管脚功能定义管脚功能sbit cs=P32;sbit wr=P36;sbit rd=P37;void Delay(unsigned int tc) /显示延时程序显示延时程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;unsigned char adc0804( void ) /读读AD0804 子程序子程序 unsigned char addata,i;rd=1;wr=1;int1=1; /读读ADC0804 前准备前准备P1=0xff; /P1 全部置一准
57、备全部置一准备cs=0;wr=0;wr=1; /启动启动ADC0804 开始测电压开始测电压while(int1=1); /查询等待查询等待A/D 转换完毕产生的转换完毕产生的INT(低电平有效)信号(低电平有效)信号rd=0; /开始读转换后数据开始读转换后数据56TM56电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:i=i; i=i; /无意义语句,用于延时等待无意义语句,用于延时等待ADC0804 读数完毕读数完毕addata=P1; /读出的数据赋与读出的数据赋与addatard=1;cs=1; /读数完毕读数完毕return(add
58、ata); /返回最后读出的数据返回最后读出的数据unsigned int datpro(void) /ADC0804 读出的数据处理读出的数据处理 unsigned char x;unsigned int dianyah,dianyal; /用于存储读出数据的高字节和低字节用于存储读出数据的高字节和低字节unsigned int dianya=0; /存储最后处理完的结果注意数据类型存储最后处理完的结果注意数据类型for(x=0;x4; /右移四位取出高四位右移四位取出高四位dianyal=dianya&0x0f; /屏蔽高四位取出低四位屏蔽高四位取出低四位dianya=dianyal*20
59、+dianyah*320; /最后的结果是一个四位数,便于显示最后的结果是一个四位数,便于显示return(dianya); /返回最后处理结果返回最后处理结果57TM57电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:void Led() unsigned int date;date=datpro(); /调用数据处理最后结果调用数据处理最后结果P2=P2&0xef;P0=seg7codedate/1000|0x80; /输出个位数和小数点输出个位数和小数点Delay(8); P2=P2|0xf0; P2=P2&0xdf;P0=seg7cod
60、edate%1000/100; /输出小数点后第一位输出小数点后第一位Delay(8); P2=P2|0xf0; P2=P2&0xbf;P0=seg7codedate%100/10; /输出小数点后第二位输出小数点后第二位Delay(8); P2=P2|0xf0; P2=P2&0x7f;P0=seg7codedate%10; /输出小数点后第三位输出小数点后第三位Delay(8); P2=P2|0xf0;main()while(1)Led( ); /只需调用显示函数只需调用显示函数58TM58电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (1313)任务:模
61、数转换器)任务:模数转换器DAC0832DAC0832的应用的应用要求:要求:用两个按键通过单片机控制用两个按键通过单片机控制DAC0832 DAC0832 的输出,使的输出,使OUT OUT 端可以输出端可以输出05V 05V 的幅值,频率为的幅值,频率为1KHZ 1KHZ 的锯齿波和三角波两种波形。通上电源后;按下的锯齿波和三角波两种波形。通上电源后;按下INT1 INT1 则则输出三角波,再按下输出三角波,再按下INT0 INT0 输出锯齿波。输出锯齿波。59TM59电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理DAC0832DAC08
62、32是是8 8 位全位全MOS MOS 中速中速D/A D/A 转换器,采用转换器,采用R2RT R2RT 形电阻解码网络,转换结果为一对差动电流输出,转形电阻解码网络,转换结果为一对差动电流输出,转换时间大约为换时间大约为1us1us。使用单电源。使用单电源+5V+15V +5V+15V 供电。参供电。参考电压为考电压为-10V-10V+10V+10V。在此我们直接选择。在此我们直接选择+5V +5V 作为参作为参考电压。考电压。DAC0832 DAC0832 有三种工作方式:直通方式,单缓冲方式,有三种工作方式:直通方式,单缓冲方式,双缓冲方式;在此我们选择直通的工作方式,将双缓冲方式;在
63、此我们选择直通的工作方式,将XFERXFER、WR1WR1、WR2WR2和和CSCS管脚全部接数字地。管脚管脚全部接数字地。管脚8 8 接参考电接参考电压,在此我们接的参考电压是压,在此我们接的参考电压是+5V+5V。那么经过第一级。那么经过第一级运放后,输出电压将是运放后,输出电压将是-5V-5V0V0V,在经过第二级运放,在经过第二级运放反相放大反相放大1 1 倍以后将可以输出倍以后将可以输出0V5V 0V5V 了。再控制了。再控制P1 P1 口输出数据有规律的变化将可以产生三角波,锯齿波,口输出数据有规律的变化将可以产生三角波,锯齿波,梯型波等波形了。梯型波等波形了。60TM60电子系统
64、设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 程序程序:#include unsigned char keycnt=0; /波形标志波形标志unsigned char tcnt=0; /键值判断键值判断bit sjz=0; /产生三角波时上升、下降用到的标志产生三角波时上升、下降用到的标志void delayl( ) /延时子程序延时子程序 unsigned char i,j;for(i=20;i0;i-)for(j=248;j0;j-); void KEY( ) /按键扫描程序按键扫描程序if(P3_2=0)delayl( ); /延时跳过按下时的抖动延时跳过按下
65、时的抖动if(P3_2=0)keycnt=0; /定时器产生锯齿波标志定时器产生锯齿波标志TR0=0; /暂时停止波形输出暂时停止波形输出TH0=0x256-40; /对对TH0 TL0 赋值赋值TL0=0x256-40;TR0=1; /开始定时开始定时,产生锯齿波产生锯齿波61TM61电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:while(P3_2=0); /如果一直按着键,则等待键松开如果一直按着键,则等待键松开delayl( ); /延时跳过松开后的抖动延时跳过松开后的抖动 if(P3_3=0)delayl( ); /延时跳过按下时的
66、抖动延时跳过按下时的抖动if(P3_3=0)keycnt=1; /定时器产生三角波标志定时器产生三角波标志TR0=0; /暂时停止波形输出暂时停止波形输出TH0=0x256-40; /对对TH0、TL0 赋值赋值TL0=0x256-40;TR0=1; /开始定时产生三角波开始定时产生三角波while(P3_2=0); /如果一直按着键,则等待松键开如果一直按着键,则等待松键开delayl( ); /延时跳过松开后的抖动延时跳过松开后的抖动62TM62电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:void t0(void) interrupt
67、1 using 0 /定时中断服务函数定时中断服务函数if(keycnt=0) /产生锯齿波产生锯齿波P0=tcnt;tcnt=+0x0a; /步进步进0.2V/一次中断一次中断if(tcnt=0xfb)tcnt=0;if(keycnt=1) /产生三角波产生三角波 if(sjz=0)P0=tcnt;tcnt=+0x0a; /步进步进0.2V/一次中断一次中断if(tcnt=0xfa)sjz=1;if(sjz=1)63TM63电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 续前页:续前页:P0=tcnt;tcnt=-0x0a;if(tcnt=0)sjz=0;v
68、oid main(void)TMOD=0x02; /定时器工作在方式定时器工作在方式2ET0=1;EA=1;while(1) KEY( ); 64TM64电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (1414)任务:)任务:24C0824C08的读写操作的读写操作要求:要求:利用利用24C0824C08断电以后存储的数据不消失的特点,可以做一个断电保护装断电以后存储的数据不消失的特点,可以做一个断电保护装置。首先利用单片机做一个置。首先利用单片机做一个099099秒的自动计时器。然后随机关断电源,在通秒的自动计时器。然后随机关断电源,在通电以后计时器接着断
69、电前的状态继续计时。电以后计时器接着断电前的状态继续计时。65TM65电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理引脚图引脚图66TM66电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理总线协议总线协议67TM67电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理写周期时序和起始、停止时序写周期时序和起始、停止时序68TM68电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理器件寻址器件寻址69T
70、M69电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理器件寻址器件寻址70TM70电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理写操作写操作注意:注意:I2CI2C总线数据都是高位在前,低位在后!总线数据都是高位在前,低位在后!71TM71电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理写操作写操作72TM72电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理读操作读操作73TM73电子系统设计电
71、子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理读操作读操作74TM74电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理读操作读操作75TM75电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 程序程序:#include #include #include unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07, 0x7f,0x6f;unsigned char sec; /定义计数值,每过定义计数值,每
72、过1 秒,秒,sec 加加1unsigned int tcnt; /定时中断次数定时中断次数bit write=0; /写写24C08 的标志;的标志;sbit gewei=P13; /个位选通定义个位选通定义sbit shiwei=P12; /十位选通定义十位选通定义/24C08 读写驱动程序开始读写驱动程序开始/sbit scl=P36; / 24c08 SCLsbit sda=P37; / 24c08 SDAvoid delay1(unsigned char x) unsigned int i;for(i=0;ix;i+);void flash() /延时延时2us ; ; 76TM76
73、电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 void x24c08_init() /24c08 初始化子程序初始化子程序scl=1;flash();sda=1;flash();void start() /启动启动I2C 总线总线sda=1;flash();scl=1;flash();sda=0;flash();scl=0;flash();void stop() /停止停止I2C 总线总线sda=0;flash();scl=1;flash();sda=1;flash();void writex(unsigned char j) /写一个字节写一个字节unsi
74、gned char i,temp;temp=j;for (i=0;i8;i+)temp=temp1;scl=0;flash();sda=CY;flash();scl=1;flash();scl=0;flash();sda=1;flash();77TM77电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 unsigned char readx( ) /读一个字节读一个字节unsigned char i,j,k=0;scl=0;flash( );sda=1;for (i=0;i8;i+)flash( );scl=1;flash( );if (sda=1) j=1;e
75、lse j=0;k=(k1)|j;scl=0;flash();return(k);void clock( ) / I2C 总线时钟,确认应答信号总线时钟,确认应答信号unsigned char i=0;scl=1;flash( );while (sda=1)&(i255)i+;scl=0;flash( );78TM78电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 /从从24c08 的地址的地址address 中读取一个字节数据中读取一个字节数据/unsigned char x24c08_read(unsigned char address)unsigned
76、char i;/先发写命令、写地址先发写命令、写地址start( );writex(0xa0);clock( );writex(address);clock( ); /再发读命令,读数据再发读命令,读数据start( );writex(0xa1);clock( );i=readx( ); stop( );delay1(10);return(i);/向向24c08 的的address 地址中写入一字节数据地址中写入一字节数据info/void x24c08_write(unsigned char address,unsigned char info)EA=0;start( );writex(0x
77、a0);clock();writex(address);clock( );writex(info);clock();stop();EA=1;delay1(50); /以上以上24C08 读写驱动程序完读写驱动程序完/79TM79电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 void Delay(unsigned int tc) /延时程序延时程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;void LED( ) /LED 显示函数显示函数shiwei=0;P0=tablesec/10;Delay
78、(5);shiwei=1;gewei=0;P0=tablesec%10; Delay(5);gewei=1;void t0(void) interrupt 1 using 0 /定时中断服务函数定时中断服务函数TH0=(65536-50000)/256; /对对TH0 TL0 赋值赋值TL0=(65536-50000)%256; /重装计数初值重装计数初值tcnt+; /每过每过250ust tcnt 加一加一if(tcnt=20) /计满计满20 次(次(1 秒)时秒)时tcnt=0;sec+;write=1; /1 秒写一次秒写一次24C08if(sec=100) /定时定时100 秒,在
79、从零开始计时秒,在从零开始计时sec=0;80TM80电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 void main(void)TMOD=0x01; /定时器工作在方式定时器工作在方式1ET0=1;EA=1;x24c08_init( ); /初始化初始化24C08sec=x24c08_read(2); /读出保存的数据赋于读出保存的数据赋于secTH0=(65536-50000)/256; /对对TH0 TL0 赋值赋值TL0=(65536-50000)%256; /使定时器使定时器0.05 秒中断一次秒中断一次TR0=1; /开始计时开始计时while(
80、1) LED( ); if(write=1) /判断计时器是否计时一秒判断计时器是否计时一秒 write=0; /清零清零 x24c08_write(2,sec); /在在24c08 的地址的地址2 中写入数据中写入数据sec 81TM81电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 (1515)任务:)任务:LCD1602LCD1602液晶模块应用液晶模块应用要求:要求:LCD1602字符型液晶显示实验。在屏幕的第一行中央显字符型液晶显示实验。在屏幕的第一行中央显示示DP-51PRO,第二行则显示,第二行则显示WWW.ZLGMCU.COM和和020-387
81、30916,并不断的循环向左移动,并不断的循环向左移动。图中图中W W为对比度调节。运行为对比度调节。运行LCDLCD时必须先将时必须先将W W调至适当位置,字符才调至适当位置,字符才能正常显示。能正常显示。P2.0P2.182TM82电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理LCDLCD基础知识基础知识LCDLCD显示器是一种利用液晶的扭曲显示器是一种利用液晶的扭曲/ /向列效应制成的向列效应制成的新型显示器。具有体积小、重量轻、功耗低、抗干新型显示器。具有体积小、重量轻、功耗低、抗干扰能力强等优点,因而在单片机系统中被广泛应用。扰能力
82、强等优点,因而在单片机系统中被广泛应用。83TM83电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理LCDLCD结构及工作原理结构及工作原理uLCDLCD本身不发光,是通过借助外界光线照射液晶材料本身不发光,是通过借助外界光线照射液晶材料而实现显示的被动显示器件。而实现显示的被动显示器件。u向列型液晶材料被封装在上、下两片导电玻璃电极向列型液晶材料被封装在上、下两片导电玻璃电极之间,液晶分子平行排列,上下扭曲之间,液晶分子平行排列,上下扭曲9090度,外部入射度,外部入射光线通过上偏振片后形成偏振光,该偏振光通过平行光线通过上偏振片后形成偏振光
83、,该偏振光通过平行排列的液晶材料后被旋转排列的液晶材料后被旋转9090度,再通过与上偏振片垂度,再通过与上偏振片垂直的下偏振片,被反射极反射过来,呈透明状态。直的下偏振片,被反射极反射过来,呈透明状态。u若在上、下电极之间加一定电压,在电场的作用下若在上、下电极之间加一定电压,在电场的作用下迫使加在电极部分的液晶分子转成垂直排列,其旋光迫使加在电极部分的液晶分子转成垂直排列,其旋光作用也随之消失,致使从上偏振片入射的偏振光不旋作用也随之消失,致使从上偏振片入射的偏振光不旋转,光无法通过下偏振片返回,呈黑色。去掉电压后,转,光无法通过下偏振片返回,呈黑色。去掉电压后,液晶分子又恢复其扭转结构。液
84、晶分子又恢复其扭转结构。84TM84电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理SMC1602A液晶模块引脚功能液晶模块引脚功能85TM85电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理液晶控制器接口说明液晶控制器接口说明86TM86电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理液晶控制器接口说明液晶控制器接口说明87TM87电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理液晶控制器接口说明液晶控制器接口说明88TM88电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理液晶控制器接口说明液晶控制器接口说明89TM89电子系统设计电子系统设计成都理工大学工程技术学院成都理工大学工程技术学院石坚石坚 实验原理实验原理1602液晶控制器自带标准字库液晶控制器自带标准字库每一个字符都有一个固定的代码,比如每一个字符都有一个固定的代码,比如“A”A”的代码是的代码是41H41H,显示时模块,显示时模块把把41H41H中的点阵字符图形显示出来,就能看到字母中的点阵字符图形显示出来,就能看到字母“A”A”。