版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 任务一:闪烁广告灯的设计 利用89c51单片机的端口控制两个 LED (DO和D1),编写程序,实现两个 LED互闪。#include<reg52.h>#define uint unsigned int八defi ne uchar un sig ned charsbit LED1=PO AO;sbit LED2=PO A1;void delayms(uint ms)uint i;v/hile(ms-)(for(i=O;i<12O;i+);)void main()(while LED1=O;LED2=1;delayms(5OO);LED1=1;LED2=O;delaym
2、s(5OO); 任务二:流水广告灯的设计利用89c51单片机的端口控制8个LED (D0-D7)循环点亮,刚开始时DO点亮,延时片刻 后, 接着 D1 点亮, 然后依次点亮 D2->D3->D4->D5 ->D6->D7, 然后再点亮 D7->D6->D5->D4? >D3? >D2? >D1? >DO, 重复循环。#include<reg52.h>八in clude vintrin s.h>Adefi ne uint un sig ned intAdefi ne uchar un sig ned cha
3、ruint i;uchar temp;uint a8 =Oxfe,Oxfd,Oxfb,Oxf7,Oxef,Oxdf,Oxbf,Ox7f;void delayms(uint ms)vvhile(ms-) uint j;for(j=O;jv12O;j+);)void main()while P0=0xfe;v/hile(P0!=0x7f)/P1=temp;delayms(500);PO=_crol_(PO,1); delayms(250);temp=0x7f;v/hile(PO!=Oxfe)P0=temp; delayms(500); temp=_cror_(temp,1);任务三:拉幕式与闭幕式
4、广告灯的设计利用 89c51 单片机的 P0 端口实现 8 个 LED D0D7 的拉幕式与闭幕式广告灯设计。拉幕式:开始 D0-D7 全火,延时片刻后首先 D3 和 D4 亮,其次是 D2 和 D5 亮,再是 D1 和 D6 亮,最后是 DO 和 D7 亮。闭幕式:开始 D0D7 全亮,延时片刻后首先 DO 和 D7 灭,其次是 D1 和 D6 火,再是 D2 和 D5 灭,最后是 D3 和 D4 灭。#include<reg52.h>八defi ne uint un sig ned int八defi ne uchar un sig ned charuchar code tabl
5、e=(0xe7,0xc3,0x81,0x00);void delay(uint x)uint i J;for(i=x;i>0;i-) for(j=120;j>0;j-); void main()uint i;v/hile(1)P1=0xff; delay(500); for(i=0;i<4;i+)P1=tablei;delay(500);for(i=3;i>0;i-)P1=tablei-1; delay(500);)任务四:复杂广告灯的设计向流利用 89c51 单片机的端口实现 8个 LED (D0-D7) 复杂广告灯的控制,要求显示规律为:正 水->反向流水 -
6、>隔灯闪烁 3 次->高四盏、低四盆闪烁 2 次->隔两盏闪烁 3 次,再重复循 环 #include reg52 ? h>八defi ne uint un sig ned int#include<intrins.h> void delayms(uint ms)uint i;v/hile(ms-)for(i=0;i<110;i+);void main()uint i,j,xx2=(0xaa,0xff),yy2 =(Oxf0,OxOf),zz2 =(0xb6,Oxff); unsigned char aa;v/hile(1)(aa=Oxfe; for(i
7、=0;i<7;i+)P0=aa;aa=_crol_(aa,1); delayms(500);for(i=0;1<8;i+)PO=aa;aa=_cror_(aa,1); delayms(500);for(i=0;i<3;i+) for(j=0;j<2;j+) PO=xxj; delayms(500); for(i=0;i<2;i+) for(j=0;j<2;j+)po=yyj; delayms(500);for(i=0;i<3;i+) for(j=0;j<2;j+)PO=zzj; delayms(500);09 的) 任务五:单个 LED 数码管显
8、示设计 使用 89c51 的 P0 口作为输出口,外接 LED 数码管,编写程序,使数码管循环显示从 加 1 计数。#1nclude<reg52.h>八defi ne uint un sig ned int#define uchar unsigned charuchar table10=( 0XC0,0XF9,0XA4,0XB0, 0X99,0X92,0X82,0XF8, 0X80,0X90);uint key=0;void intjnt()EA=1;IT0=1;EX0=1;void count_num() interrupt 0 if(key=9)key=0; else key+
9、;void main()intjnt();while (PO=tablekey;任务六:多个 LED 数码管显示设计使用单片机 P0 和 P2 口作为输出口,外接一个 8 位 LED 数码管,编写程序,使数码管显示 “ 872AF635气#include<reg52.h> #include<intrins.h>八defi ne uint un sig ned int八defi ne uchar un sig ned chardelay(ms)while(ms ?) int i;for(i=0;i<110;i+);)main()uchara16 =0xc0,0xf9
10、,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6, Oxa 1,0x86, 0x8e);uchar b8 =(0x08,0x07,0x02,0x0a,OxOf,0x06,0x03,0x05),j;uint i;while j=OxO1;for(i=0;i<8;i+)P2=j;PO=abi;j=_crol_(j,1) ;.wddelay ;)任务七:查询式按键设计将 8 个按键从仆 8 进行编号,如果其中一个键被按下,则在 LED 数码管上显示相应的键值。 #include<reg52.h>Adefi ne uint
11、 un sig ned intAdefi ne uchar un sig ned charmain()uchara 16 =OxcO, Oxf 9,0xa4, OxbO,0x99,0x92,0x82, Oxf8,0x80,0x90,0x88,0x83,0xc6, Oxa 1, 0x86, 0x8e);PO=Oxff;v/hile(PO!=Oxff) switch(PO)case Oxfe:P2=a1; break;case Oxfd:P2=a2; break;case Oxfb:P2=a3; break;case 0xf7:P2=a4; break;case Oxef:P2=a5; break
12、;case Oxdf:P2=a6; break;case Oxbf:P2=a7; break;case 0x7f:P2=a8;)任务八: LED 数码管显示矩阵键盘按键的设计设计一个 4*4 的矩阵键盘 , 以 P1.0-P1.3 作为行线 , 以 P1.4-P1.7 作为列线。要求:未按下 按键时, LED 数码管显示按下按键时,在数码管上显示相应的键值。#include<reg52.h>八defi ne uchar un sig ned char八defi ne uint un sig ned intuchartable17=(0xbf,0xc0,0xf9,0xa4,0xb0,
13、0x99,0x92,0x82,Oxf8,0x80,0x90,0x88,0x83,0xc6,0 xa1,0x86,0x8e);uint num=O;void delay(uint x)uchar i,j;for(i=x;i>0;i ? -) for(j=120;j>0;j-);keyscan() uint temp;temp=P2;temp&=0x0f;if(temp=0x0e)P2=OxfO; temp=P2; temp&=0xf0;svvitch(temp)case 0xe0:num=1;break;case 0xd0:num=2;break;case 0xb0:
14、num=3;break;case 0x70:num=4;)if(temp=0x0d)P2=OxfO;temp=P2;temp&=OxfO; svvitch(temp)case 0xe0:num=5;break;case 0xd0:num=6;break;case 0xb0:num=7;break;case 0x70:num=8;) if(temp=0x0b)P2=OxfO;temp=P2; tempft=OxfO;switch(temp)case 0xe0:num=9;break;case OxdO:num=1O;break; case OxbO:num=11 ;break; case
15、 0x70:num=12; ) if(temp=0x07)P2=OxfO;temp=P2; tempft=OxfO;switch(temp)case OxeO:num=13;break;case OxdO:num=14;break; case 0xb0:num=15;break; case 0x70:num=16;return num;void display(uint num) if(num=0)PO=Oxbf;PO=tablenum;main()uint temp;while P2=OxOf;temp=P2; if(temp!=OxOf) keyscan(); display(num);)
16、(2) #include<reg52.h>八defi ne uchar un sig ned char八defi ne uint un sig ned intsbit LED1=P2 A0;sbit LED2=P2 A1;uchar num;uchar code LED_code=0x80,0x90,0x88,0x83,OxcO, 0xf9,0xa4, OxbO, 0x99,0x92,0x82, Oxf8, 0xc6,0xa1,0x86,0x8e; 数码管字形码编码void delay(uint x)uchar i,j;for(i=x;i>0;i-) for(j=120;j&
17、gt;0;j-); 延时函数void display(uchar num)PO=LED_codenum; 数码管显示函数void keyscan() 键盘扫描函数uchar temp;P1 =Oxfe; /key 1 -key4 第一行按下 temp=P1; tempft=OxfO;if(temp!=OxfO)temp&=0xf0; if(temp!=OxfO)temp=P1; switch(temp)case Oxee:num=1; break; case Oxde: num=2; break; case Oxbe: num=3;break;case 0x7e:num=4;break
18、;vhile(temp!=OxfO) 等待按键释放temp=P1; tempft=OxfO;P1 =Oxfd;/key5-key8 第二行按下 temp=P1; tempft=OxfO;if(temp!=OxfO)delay(10);/ 消除抖动 temp=P1;temp&=OxfO; if(temp!=OxfO)temp=P1;switch(temp)case Oxed:num=5;break;case Oxdd:num=6;break;case Oxbd:num=7;break;case 0x7d:num=8;break;vhile(temp!=OxfO) 等待按键释放 temp=
19、P1; tempft=OxfO;P1 =Oxfb; / /key9-key12 第三行按下 temp=P1; tempft=OxfO;if(temp!=OxfO)delay(10);/ 消除抖动 temp=P1; temp&=OxfO;if(temp!=OxfO) temp=P1; switch(temp)case Oxeb: num=9; break;case Oxdb: num=10; break;case Oxbb: num=11; break;case 0x7b: num=12; break;v/hile(temp!=OxfO)/ 等待按键释放 temp=P1; temp&am
20、p;=0xf0;P1 =Oxf7;/key 13-key 16 第四行按下 temp=P1; temp&=OxfO;if(temp!=OxfO)(delay(1O);/ 消除抖动 temp=P1; temp&=OxfO; if(temp!=OxfO)switch(temp) (case 0xe7:num=13; break;case 0xd7:num=14; break;case 0xb7: num=15; break;case 0x77: num=16; break;vhile(temp!=0xf0)/ 等待按键释放temp=P1; tempft=0xf0;void main
21、()v/hile(1)keyscan();if(num=0)PO=Oxbf;elsedisplay(num-l);任务九:简单拨号键盘的设计时,使用 4*4 的矩阵式键盘及 8 位共阳极 LED 数码管设计一个简单拨号键盘,要求在初始状态8 位数码管均显示“ ?气每按下一个号码后,原 8 位 LED 数码管显示的内容向左移动 1 位。 #include<reg52.h>#include<intrins.h>八defi ne uint un sig ned int八defi ne uchar un sig ned charuchar keycount=0,num;ucha
22、r code LED1_code=OxcO, 0xf9,0xa4 ,OxbO,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; 数码管字形码编码段共阳数码管编码ucharuchar LED2_duan8=(0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf;/8 LED2_wei8= (0x80,0x40,0x20,Ox10,0x08,0x04,0x02,0x01); void delay(uint x)uchar i,j;for(i=x;i>0;i-) for(j=120;j>0
23、;j-);void displayOuchar i;/P2=0x80;for(i=0;i<8;i+) P2=LED2_weii; P0=LED2_duan7-i;delay ;void keyscan()uchar temp;P3=0xfe;temp=P3; tempft=OxfO; if(temp!=OxfO)delay(10);temp=P3; temp&=0xf0; if(temp!=OxfO)temp=P3; switch(temp) case Oxee:keycount+;num=0;break;case 0xde:keycount+;num=1;break;case
24、Oxbe:keycount+;num=2;break;case Ox7e:keycount+;num=3;break;vhile(temp!=OxfO)tempft=OxfO;P3=0xfd;temp=P3; tempft=OxfO; if(temp!=OxfO)delay(10);temp=P3;tempft=OxfO;if(temp!=OxfO)temp=P3;switch(temp)case Oxed: keycount+;num=4; break;case Oxdd:keycount+;num=5;break;case 0xbd:keycount+;num=6;break;case 0
25、x7d:keycount+;num=7;break; v/hile(temp!=OxfO)temp=P3;temp&=OxfO;P3=Oxfb;temp=P3; tempft=OxfO; if(temp!=OxfO)(delay(1O);temp=P3;temp&=OxfO;if(temp!=OxfO)temp=P3;switch(temp) case Oxeb:keycount+;num=8;break;case 0xdb:keycount+;num=9;break;case 0xbb:keycount+;num=10;break;case 0x7b:keycount+;nu
26、m=11;break; vhile(temp!=OxfO)temp=P3; tempft=OxfO;P3=0xf7;temp=P3; tempft=OxfO; if(temp!=OxfO)delay(10);temp=P3; temp&=OxfO; if(temp!=OxfO)temp=P3;switch(temp)(case 0xe7:keycount+;num=12;break; case 0xd7:keycount+;num=13;break; case 0xb7:keycount+;num=14;break; case 0x77:keycount+;num=15;break;
27、whHe(temp!=OxfO)temp=P3; temp&=OxfO;void main()uchar i;v/hile(1) display(); keyscan(); if(keycount!=0)for(i=0;i<7;i+) LED2_duani=LED2_duani+1;LED2_duan7=LED1_codenum; keycount=0;第五章 任务一:带中断控制的 LED 花样灯P0端口作为输出口,外接 8只LED, P3.2外接按键K编写程序,当K未按下时,8只LED进 行默认显示,其显示规律为左移流水 ->右移流水-> 隔灯闪烁3次花样显示:如果
28、按下 K键后, 8 只 LED 暂停默认显示,而进行闪烁显示,当显示达到 5 次后,继续按默认规律显示。#include<reg52.h>八defi ne uint un sig ned int八defi ne uchar un sig ned charuintLED_table14=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd ?void delayms(uint ms)uint i;v/hile(ms-)for(i=0;i<120;i+);void intjnt()EA=1;EX
29、O=1;IT0=1;)void LED_shan() interrupt 0 uint k;for(k=0;k<5;k+)PO=Oxaa; delayms(500); PO=Oxff; delayms(500);void main()intjnt();v/hile(1)uint i;for(i=0;i<14;i+)PO=LED_tablei; delayms(500);for(i=0;i<3;i+)PO=Oxaa; delayms(500); PO=Oxff; delayms(500);)任务二: 采用外中断控制的条形 LED 彩灯设计PO 端口作为输出口,外接条形 LED
30、。编写程序,当按键 K 未按下时, LED 进行循环左移显 示。如果第1次按下按键K后,LED进行循环右移显示。如果第 2次按下按键K后丄ED进行 拉幕式与闭幕式花样显示。如果第 3 次按下按键 K 后,又恢复循环左移显示。八in elude <reg52.h>unsigned char flag=O;状态标志位unsigned char led =0;/LED 映射位unsigned char table=(花样数组0x00,0x81,0xc3,0xe7,0xff,0xe7,0xc3,0x81; 先闭幕式再开幕式void delayms(unsigned int ms);/ 延时
31、函数 系统初始化/ 状态 0状态 1状态 2void syslnit(void); void stepO(void); void step 1 (void); void step2(void);void main(void)syslnit(); 初始化系统v/hile(1)switch (flag)PO = -led; delayms(500);case 0: stepO();break; case 1: step1();break; case 2: step2();break; default: break;将 led 值映射到 LED 灯延时 500msvoid delayms(unsig
32、ned int ms)unsigned char i;for (;ms;ms-)for (i=110;i;i-);void syslnit(void)EX0 = 1; / 打开外部中断 0EA =1; 打开总中断IT0= 1; 外部中断 0 下降沿触发void stepO(void)led ?=1;左移if (led=0)溢出处理led = 0x01;void step 1 (void)led ?=1;右移if (led=0)溢出处理led = 0x80;void step2(void)static char t;led = tablet+; 开幕闭幕花样显示 if (t=8) t = 0;外
33、部中断。服务函数/ 宏定义开幕式闭幕式编码void EX_O() interrupt 0flag+;if (flag=3) flag = 0;(2) #1nclude<reg52.h>/ 头文件 八defi ne uchar un sig ned char 八defi ne uint un sig ned int uchar temp,key_count;uchar code tab=( 0x00,0x81,0xc3,0xe7, 0xff,0xe7,0xc3,0x81);void delay(uint ms)延时子函数uint i,j;for(i=ms;i>0;i-) for
34、(j=0;j<110;j+);void loop_leftmove()temp=temp<<1;if(temp=0) temp=0x01;void loop_rightmove()temp=temp>>1;if(temp=0) temp=0x80;void open_close()uchar count; temp=tabcount; count+;if(count>=8) count=0;void init()EA=1;EXO=1;IT0=1; temp=0;key_count=0;void main()init();while sv/itch(key_c
35、ount)case O:loop_leftn 】 ove();break;case 1 :loop_rightmove();break;case 2:open_close(); break; default: break;P0=-temp; delay(250);void keyjnterrupt() interrupt 0 外部中断 INTO 中断服务程序key_count+;key_count%=3;/*if(key_count=3)key_count=0;*/任务三:采用两个外中断的 LED 彩灯控制P0端口作为输出口,外接 8只LED, P3.2外接按键K1, P3.3外接按键K2。编
36、写程序,没 有 按下任何按键时, LED 隔灯闪烁,当按键 K1 为奇数次时, LED 进行左移流水 -> 右移流水 显 示。当按下按键 K1 为偶数次时, LED 进行拉幕式显示:当按下按键 K2 时, LED 暂停显示 , 蜂 鸣器发出“叮咚”的开门声音,然后 LED 继续花样显示 (K2 按键优先 )。#include<reg52.h>#include<intrins.h>八defi ne uchar un sig ned char八defi ne uint un sig ned intsbit key1=P3 A2;sbit key2=P3 A3;sbit
37、 beep=P1 A0; uchar code tab= 0xff,0xe7,0xc3,0x81, 0x00,0x81,0xc3,0xe7; 开幕式编码 uchar temp=0x01,key_count,flag,right,beep_FG; void delay(uint ms)uint ij; for(i=ms;i>0;i-) for(j=110;j>0;j-);void init()EA=1;/ 打开总中断EX0=1;/ 打开外部中断 INTOEX1=1;/ 打开外部中断 INT1 IT0=1;/ 下降沿触发方式IT1=1; 下降沿触发方式PXO=O;/ 设置 INTO 为
38、低中断优先级PX1=1;/ 设置 INT1 为高中断优先级void interval_LED()PO=Oxff; delay(500); P0=0xaa; delay(500);void left_right_niove()if(!right)temp=_crol_(tenip, 1); elsetemp=_cror_(temp,1);if(temp=0x01)right=O; if(temp=0x80) right=1; void open_LED() uchar count; temp=tabcount+; if(count=8)count=0;void Beep()ucharfor(i=
39、100;i;i ? ) for(j=20;j;j-)(for(k=1000;k;k-) beep=-beep;/*for(i=100;i;i-)for(j=200;j;j-)for(k=1000;k;k-)beep=-beep;*/beep_FG=O;void main()init();beep=0;while if(!flag) interval_LED();elseif(beep_FG)Beep();elseswitch (key_count%2) case 1:left_right_move();break;/ 奇数次按键左移右移显示 case 0:open_LED();break;/
40、偶数次按键拉幕式显示default: break;P0=-temp; delay(400);void key1 Jnterrupt() interrupt 0 flag=1;key_count+;void key2Jnterrupt() interrupt 2flag=1;beep_FG=1; 任务四:采用两个外中断实现 LED 键控移位P0 端口作为输出口,外接 8 只 LED, P3.2 外接按键 K1, P3.3 外接按键 K2 。编写程序,要 求 实现 LED 键控移位,按下按键 K1 时,8只 LED 左移 1 位;按下按键 K2 时,8 只 LED 右 移 1 位。#include
41、<reg52.h> #include<intrins.h>八defi ne uint un sig ned int八defi ne uchar un sig ned charuchar key1 =0,key2=0,tempi =0,temp2=0,tempi 1 =0,tempi 2=0;/*void delayms(uint ms)uint i;v/hile(ms-)for(i=0;i<120;i+);*/void intjnt()EA=1;EX0=1;EX1=1;IT0=1;IT1=1;void intO() interrupt 0key1+;void in
42、t1() interrupt 2key2+;void main()uchar a; intjnt(); a=0xfe; vhile(1)if(temp1 !=key1)PO = a; a=_crol_(a,1); tempi =key1;if(temp2!=key2)PO = a; a=_cror_(a,1); key2=temp2;(2)#include<reg52.h>八defi ne uint un sig ned int八defi ne uchar un sig ned charuchar key1 =0,key2=0,m,n,k;uchar table=0xfe,0xfd
43、,0xfb,0xf7,0xef,0xdf,0xbf,0x7f);void intjnt()EA=1;EXO=1;IT0=1;EX1=1;IT1=1;void intO() interrupt 0key1+;m=key1%8;void int2() interrupt 2key2+;n=key2%8;void main()intjnt();while (k=(m-n+8)%8;PO=tablek;任务五:采用外中断实现计数K1, P3.3 外K2 时,使用单片机 PO、P2 端口作为输出口,外接一个 2 位 LED 数码管, P3.2 外接按键 接按键K2。编写程序,每次按下 K1时,LED数码
44、管进行加1显示:每次按下按键 LED 数码管进行减 1 显示,计数范围为 099 。#1nclude<reg52.h>/ 头文件八define uint unsigned int / 宏定义八defi ne uchar un sig ned char / 宏定义uchar table =(0xc0,Oxf9,0xa4,OxbO,0x99,0x92,0x82,Oxf8,0x80,0x90);/0-9 共阳字型码编码char count=0;uchar shi,ge;void LED_scan() 数码管扫描子函数shi=count/10; 分离十位ge=count%10; 分离个位P
45、2=tablege;/ 显示个位PO=tableshi;/ 显示十位void intjnt() 初始化EA=1;EX0=1JEX1=1打开总中断/ 打开外部中断 0/ 打开外部中断 1IT0=1;设置下降沿触发方式IT 1=1; void mai n()/设置下降沿触发方式/主函数intjn t(); while 调用初始化函数LED_sca n(); 调用数码管扫描函数 void intO() interrupt 0外部中断0服务程序cou nt+;计数加 1if(count=100)/ 溢出操作count=0; void int2() interrupt 2外部中断 1 服务程序cou n
46、t-;计数减 1if(count<0)/ 溢出操作count=99; (2)#include<reg52.h> / 头文件八defi ne uint un sig ned int宏定义八define uchar unsigned char / 宏定义 uchar table 卜0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90);/0-9共阳字型码编码char cou nt=0;uchar shi,ge;void delay(ui nt ms) 延时子函数 uchar i;for(;ms;ms- ?)for(i=120;i;i
47、-);void LED_scan()数码管扫描子函数shi=count/10; 分离十位ge=count%10; / / 分离个位P2=0x01;个位对应的数码管点亮PO=tablege; 显示个位delay ;P2=OxO2;十位对应的数码管点亮Portable shi;/ 显示十位 delay (1);)void intjn t()初始化EA=1;打开总中断EX0=1;/打开外部中断0EX1=1;打开外部中断1IT0=1;设置下降沿触发方式IT1=1;/设置下降沿触发方式void mai n()主函数intjn t();调用初始化函数v/hile(LED_scan(); /调用数码管扫描函
48、数 void in tO() in terrupt 0 外部中断。服务程序cou nt+;计数加 1if(cou nt=1OO) 溢出操作coun t=0;void in t2() in terrupt 2 外部中断1服务程序count-;/ 计数减 1if(count<0)/ 溢出操作count=99; 任务六:采用外中断进行计数和清零控制使用单片机P0、P2端口作为输出口,外接一个2位LED数码管,P3.2外接按键K1, P3.3外接按键K2。编写程序,按键 K2作为“加1/暂停/清零”控制:按键K1作为加1计数控制。当按键K2没有按下时,按键 K1按下后LED数码管总显示为0 :第
49、1次按下键K2时,每次按下K1, LED数码管进行加1 显示;第二次按下按键 K2时,暂停加1计数,按键K1按下后LED数码管显示暂停前的数 值:第3次按下按键K2时,LED数码管显示为0 :第4次按下按键K2时,与第1次类似。#in clude<reg52.h>八defi ne uint un sig ned int 八defi ne uchar un sig ned char uchar key1 =0,tempi =0,key2=0,temp2=0,key=0; uchar table=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8, 0X80
50、,0X90);void delayms( uint ms)v/hile(ms-)uint i=0;for(i;i<120;i+);void intjn t()EA=1;EX0=1;EX1=1;IT0=1;IT 1=1;void int1() interrupt 0key2+;void intO() interrupt 2key1+;void displayOP2=0xfe;P0=tabletemp1; delayms(2);P2=0xfd; P0=tabletemp2;delayms(2);void main()intjnt();while tempi =key1%10; temp2=k
51、ey1/10;switch (key2%3)case 0:while if(key2%3!=0) break; P2=0xfe; PO=tableO; delayms(2); P2=0xfd; PO=tableO; delayms(2); key1=0; break;case 1: display(); break;case 2:key=key1;vhile(1)if(key2%3!=2) break;P2=0xfe;P0=tabletemp1;delayms(2);P2=0xfd;P0=tabletemp2;delayms(2);key1=key;break;第六章任务一:简单计数器的设计使
52、用单片机P0, P2端口作为输出口,外接一个2位LED数码管,P3.4外接按键K。编写程序,每次按键 K 按下时 LED 数码管进行加 1 显示,计数范围为 099。#include<reg52.h>八defi ne uint un sig ned int八defi ne uchar un sig ned charuchar table=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90);uchar key=0;void delayms(uint ms)uint i;v/hUe(ms-)for(i=0;i<120;i+);void intjnt()EA=1;ET0=1; 开定时器。中断TR0=1; 启动定时器 0TMOD=0x05; 设置工作方式为 1 选择计数功能THO=Oxff;TLO=Oxff; / 装初值使得按一下就中断void int1() interrupt 1THO=Oxff;TLO=Oxff;key+;void displayO P2=0xfe;P0=tablekey%10; delayms(3);P2=0xfd;P0=tablekey/10;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第9章 工程设计BIM应用案例-管线综合
- AI及软件赋能增材制造-3D科学谷发布
- 军用方舱电磁屏蔽效能测试作业指导书
- 搬家服务指南
- 家庭燃料电池热电联供系统指南
- 孕妇试题库及答案
- 2025-2026学年青海省西宁二中教育集团七年级(下)期中历史试卷(含答案)
- 航空(钛)零件精密加工项目可行性研究报告模板-拿地立项申报
- 公共卫生监督执法技能竞赛(公共场所卫生监督)考试题及答案(山东省枣庄市2025年)
- 外科手术器械清点护理考核题目
- 2026年山东省济南槐荫区九年级中考物理二模考试试题(含答案)
- 铁路专用线维护保养方案
- 2026中国移动通信集团海南有限公司第一期社会招聘3人笔试备考试题及答案解析
- 小学英语三年级下册Unit 5 Old Toys单元整体教学设计
- 【《自动避障扫地机器人设计》11000字(论文)】
- 护理教育学课件下载
- 2026届江苏省南京市高三二模英语试题(含答案和音频)
- 2026版公司安全生产管理制度及文件汇编
- 解读2025新版职业病分类和目录12大类135种
- 2026形势与政策课件中国风范 大国担当-在世界变局中推动构建新型大国关系
- 2026年中国邮政集团新疆维吾尔自治区分公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论