当前位置:文档之家› 单片机应用实例

单片机应用实例

振频率为12 MHz • TL0 = (65536 - 10000)%256; • EA = 1; • ET0 = 1; • TR0 = 1;
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• while(1); •} • void time0(void)interrupt 1 •{ • TH0 = (65536 - 10000)/256; • TL0 = (65536 - 10000)%256; • if( + + time = = COUNTER) •{ • P1 = string[i];
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• void main(void) •{ • unsigned char str[] = {"Now,Temperature is :"}; //将字符串
赋给字符型数组 • unsigned char i; • while(1) •{ • i = 0; //将i 初始化为0,从第一个元素开始显示 • while(str[i]! = '\0') //只要没有显示到结束标志'\0' •{
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• 9.1.3 用定时器写的流水灯
• 用定时器写的流水灯电路如图9.2 所示。 • #include <reg51.h> • #define COUNTER 50 //可以改变COUNTER 来控制间隔时间 • unsigned char i = 0; • unsigned char time = 0; • unsigned char string[8] = {0xfe,0xfd,0xfb,0xf7,0xef,
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• void main(void) •{ • while(1) •{ • if(S1 = = 0) //如果按键S1 按下 • P0 = 0x0f; //P0 口高4 位LED 点亮 • if(S2 = = 0) //如果按键S2 按下 • P0 = 0xf0; //P0 口低4 位LED 点亮 •} •}
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• P0 = str[i]; //将第i 个字符送到P0 口显示 • delay150ms(); //调用150 ms 延时函数 • i + + ; //指向下一个待显字符 •} •} •}
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• 9.1.2 用if 语句控制P0 口8 位LED 的流水方向
• 用if 语句控制P0 口8 位LED 的流水方向电路如图9.1 所示。 • #include <reg51.h> //包含单片机寄存器的头文件 • sbit S1 = P1^4; //将S1 位定义为P1.4 • sbit S2 = P1^5; //将S2 位定义为P1.5 • /********************************************** • 函数功能:主函数 • *************************************************************************/
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• i++; • if(i = = 8) //i 等于8,则重新循环点亮 • i = 0; time = 0; •} •}
• 9.1.4 用字符型数组控制P0 口8 位LED 流水点 亮
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• #include <reg51.h> //包含单片机寄存器的头文件 • /************************************************************************* • 晶振频率为12 MHz • 函数功能:延时约60 ms (3 × 100 × 200 = 60 000μs) • *************************************************************************/ • void delay60ms(void) •{ • unsigned char m,n; • for(m = 0;m<100;m + + ) • for(n = 0;n<200;n + + )
ms) • 延时可以采用定时器方法,也可采用循环空语句实现,如本例 • *************************************************************************/ • void delay150ms(void)
下一页 返回
9.1 并行接口和定时中断的应用
0xdf,0xbf,0x7f}; • //位选信号,如0xfe,即为11111110,即P1.0 为低电平,这位点亮
上一页 下一页 返回
9.1 并行接口和定时中断的应用
• void main(void) •{ • TMOD = (TMOD&0XF0)0X01; //定时器0 工作在方式1 • TH0 = (65536 - 10000)/256; //置初值,完成10 ms 的定时,晶
•{ • unsigned char m,n; • for(m = 0;m<200;m + + ) • for(n = 0;n<250;n + + ) •; •} • /************************************************************************* • 函数功能:主函数 • *************************************************************************/
第9 章 单片机应用实例
• 9.1 并行接口和定时中断的应用 • 9.2 键盘的应用 • 9.3 串口的应用 • 9.4 脉宽调制(PWM)的应用 • 9.5 电动自行车的速度测试系统 • 9.6 在单片机上用液晶手机实现汉字输入功能
返回
9.1 并行接口和定时中断的应用
• 9.1.1 用P0 口显示字符串常量
• #include <reg51.h> //包含单片机寄存器的头文件 • /************************************************************************* • 晶振频率为12 MHz • 函数功能:延时约150 ms (3 × 200 × 250 = 150 000 μs = 150
相关主题