单片机芯片型号 STC89C516
需求
需要的知识
关于串口通信与系统中断,请看
串口通信
系统中断
或者这个专辑
链接
这位大佬更专业
硬件设计
关于1,详见本篇的三
关于2,只需和电脑链接就可以
软件设计
pc>>单片机 数码管显示
#include "reg52.h"
#include typedef unsigned int u16; typedef unsigned char u8; u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; u8 i; /******************************************************************************* * 函数名 :UsartInit() * 函数功能 :设置串口 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void UsartInit() { SCON=0X50; //设置为工作方式1 TMOD=0X20; //设置计数器工作方式2 PCON=0X80; //波特率加倍 TH1=0XF3; //计数器初始值设置,注意波特率是4800的 TL1=0XF3; ES=1; //打开接收中断 EA=1; //打开总中断 TR1=1; //打开计数器 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { UsartInit(); // 串口初始化 while(1); } /******************************************************************************* * 函数名 : Usart() interrupt 4 * 函数功能 : 串口通信中断函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Usart() interrupt 4 { i=SBUF;//出去接收到的数据 switch(i) { case '0':P0=~smgduan[0];;break; case '1':P0=~smgduan[1];;break; case '2':P0=~smgduan[2];;break; case '3':P0=~smgduan[3];;break; case '4':P0=~smgduan[4];;break; case '5':P0=~smgduan[5];;break; case '6':P0=~smgduan[6];;break; case '7':P0=~smgduan[7];;break; case '8':P0=~smgduan[8];;break; case '9':P0=~smgduan[9];;break; case 'a':P0=~smgduan[10];;break; case 'b':P0=~smgduan[11];;break; case 'c':P0=~smgduan[12];;break; case 'd':P0=~smgduan[13];;break; case 'e':P0=~smgduan[14];;break; case 'f':P0=~smgduan[15];;break; } RI = 0; } 单片机>>pc 发送hello world #include "reg52.h" #include #include typedef unsigned int u16; void Delay1000ms() //@12.000MHz { unsigned char i, j, k; _nop_(); i = 8; j = 154; k = 122; do { do { while (--k); } while (--j); } while (--i); } void UsartInit() { SCON=0X50; //设置为工作方式1 TMOD=0X20; //设置计数器工作方式2 PCON=0X80; //波特率加倍 TH1=0XF3; //计数器初始值设置,注意波特率是4800的 TL1=0XF3; ES=1; //打开接收中断 EA=1; //打开总中断 TR1=1; //打开计数器 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { u16 i; i = 0; UsartInit(); while(1){ i++; TI=1; //printf将T1置为1 printf("%d Hello Worid!n", i); Delay1000ms(); while(!TI); TI=0;} } 效果 1. 2.
上一篇:51单片机学习二 led流水灯与按键控制
下一篇:51单片机学习三 关于静态数码管的使用
推荐阅读最新更新时间:2024-11-11 23:29