PC与51单片机串口通信(2)
//串行通信初始设置子函数 void init(void) {
SCON=0x50; //串行通信方式1,接收允许 PCON=0x00; //单倍频
TMOD = 0x20; //设置定时器T1为模式2,定时方式 TH1=TL1=0xf3; //波特率为4800,晶振24MHz TR1=1; //定时器T1开始计数 EA=1; //中断允许
ES=1; //串行口中断开放 }
//LED显示函数 void Display(void) {
unsigned char n=0; unsigned char p;
unsigned char testdata1; unsigned char testdata2; unsigned char testdata3; unsigned char testdata4; unsigned char testdata5; unsigned char testdata6; unsigned char testdata7; unsigned char testdata8;
CH452_Write(CH452_SYSON2); //两线制方式,如果SDA用做按键中断输出,
//那么命令应该为(0x04,0x23)
CH452_Write(CH452_BCD); // BCD译码,8个数码管
while((4*n)<(m+1)) { testdata1=testdata[0+4*n]%16; testdata2=testdata[0+4*n]/16; testdata3=testdata[1+4*n]%16; testdata4=testdata[1+4*n]/16; testdata5=testdata[2+4*n]%16; testdata6=testdata[2+4*n]/16; testdata7=testdata[3+4*n]%16; testdata8=testdata[3+4*n]/16;
PC与51单片机串口通信。包括单片机内运行的程序,及MATLAB调试助手简易程序等!
CH452_Write(CH452_DIG0 | testdata7); // 显示接收字符的ASCII码 CH452_Write(CH452_DIG1 | testdata8); CH452_Write(CH452_DIG2 | testdata5); CH452_Write(CH452_DIG3 | testdata6); CH452_Write(CH452_DIG4 | testdata3); CH452_Write(CH452_DIG5 | testdata4); CH452_Write(CH452_DIG6 | testdata1); CH452_Write(CH452_DIG7 | testdata2); delayms(1000); delayms(1000); delayms(1000); delayms(1000); n++; }
for(p=0;p<21;p++) { testdata[p]=0; } m=0; }
//串口接收发送中断
void Uart_Isr() interrupt 4 using 1 {
if(RI) { RI=0; testdata[m]=SBUF; if(testdata[m]=='!') { Display(); flag_inter=1; } else { m++; } } if(TI)
//延时 //数组清零 //接收中断标志
PC与51单片机串口通信。包括单片机内运行的程序,及MATLAB调试助手简易程序等!
{
TI=0; //发送中断标志 flag=0; //标志位清零 } }
//向串口发送字符
void SendData(char data0) {
while(flag); ACC=data0;
flag=1; SBUF=ACC; }
//向串口发送字符串 void SendString(char *s) {
while(*s) {
SendData(*s++); } }
// INT1中断服务程序
void int1() interrupt 2 //using 1 {
TI=0;
SBUF=CH452_Read(); while(!TI); TI=0; }
void main() { delayms(10); init(); //等待数据发送 //标志位置1 //数据装入SBUF //字符串发送完否 //发送字符,并指针指向下一字符 //将按键值通过串口发给PC机检查 //延时 //串口初始化函数
PC与51单片机串口通信。包括单片机内运行的程序,及MATLAB调试助手简易程序等!
// 设置CH452按键中断
IE1=0; //外部中断1 中断请求标志 EX1=1; //外部中断1中断允许 while(1) { if(flag_inter==1) { flag_inter=0; SendString("Wait command!\n"); } } }
附外加头文件: (1)CH452CMD.h
#define CH452_NOP 0x0000 #define CH452_RESET 0x0201 #define CH452_LEVEL 0x0100 #define CH452_CLR_BIT 0x0180 #define CH452_SET_BIT 0x01C0 #define CH452_SLEEP 0x0202 #define CH452_LEFTMOV 0x0300 #define CH452_LEFTCYC 0x0301 #define CH452_RIGHTMOV 0x0302 #define CH452_RIGHTCYC 0x0303 #define CH452_SELF_BCD 0x0380 #define CH452_SYSOFF 0x0400 #define CH452_SYSON1 0x0401 #define CH452_SYSON2 0x0403 #define CH452_SYSON2W 0x0423 #define CH452_DSP 0x0500 #define CH452_BCD 0x0580 #define CH452_TWINKLE 0x0600 #define CH452_GET_KEY 0x0700 #define CH452_DIG0 0x0800 #define CH452_DIG1 0x0900 #define CH452_DIG2 0x0a00 #define CH452_DIG3 0x0b00 #define CH452_DIG4 0x0c00 #define CH452_DIG5 0x0d00 #define CH452_DIG6 0x0e00 #define CH452_DIG7 0x0f00
// 空操作 // 复位 // 加载光柱值 // 段位清0 // 段位置1 // 进入睡眠状态 //设置移动方式-左移 //设置移动方式-左循 //设置移动方式-右移 //设置移动方式-右循 //自定义BCD码 //关显示、键盘 //开显示 //开显示、键盘 //开显示、键盘, 真正2线接口 //设置默认显示方式 //设置BCD译码方式 //设置闪烁控制 // 获取按键 //数码管位0显示 //数码管位1显示 //数码管位2显示 //数码管位3显示 //数码管位4显示 //数码管位5显示 //数码管位6显示 //数码管位7显示
PC与51单片机串口通信。包括单片机内运行的程序,及MATLAB调试助手简易程序等!
(2)pin.h
/* 延时1uS子程序,主要用于2线接口,与单片机速度有关 */ #define DELAY_1US {_nop_();_nop_();} // MCS51<=30MHz
/* 4线接口的连接,与实际电路有关 */
sbit CH452_DCLK=P1^7; // 串行数据时钟上升延激活 sbit CH452_DIN=P1^6; // 串行数据输出,接CH452的数据输入 sbit CH452_LOAD=P1^5; // 串行命令加载,上升延激活
sbit CH452_DOUT=P3^3; // INT1,键盘中断和键值输入,接CH452的数据输出
/* 4线接口的位操作,与单片机有关 */ #define CH452_DCLK_SET {CH452_DCLK=1;} #define CH452_DCLK_CLR {CH452_DCLK=0;} #define CH452_DIN_SET {CH452_DIN=1;} #define CH452_DIN_CLR {CH452_DIN=0;} #define CH452_LOAD_SET {CH452_LOAD=1;} #define CH452_LOAD_CLR {CH452_LOAD=0;}
/* 与单片机有关,与中断连接方式有关 */ #define DISABLE_INTERRUPT {EX1=0;} #define ENABLE_INTERRUPT {EX1=1;} #define CLEAR_INTER_FLAG {IE1=0;}
PC与51单片机串口通信。包括单片机内运行的程序,及MATLAB调试助手简易程序等!
3、MATLAB控制数据收发
(1)利用STC提供STC-ISP-V4.83软件检查MCU选项(同2) (2)串行口初始参数设定(同2) (3)单片机内运行的程序(同2)
以上部分皆与“2、利用串口调试助手实现串行口数据收发”内容相同只是用MATLAB替代串口调试助手的功能。
(4)MATLAB数据收发功能实现简述
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




