AT89S52单片机与PC串口通讯,将数码管上显示的时间每隔1秒发送给PC,用C语言如何写?

八位共阳极数码管,段位接P0,位选接P2,单片机波特率9600,晶振11.0592

第1个回答  2012-10-11
单片机端程序1S
Send1SData()//采用中断回调函数。1S进入,相当于51系列的1S中断然后进入发送程序,那个有点啰嗦写起来,很多单片机都采用中断回调函数这样处理
{
sendforPC(data);
}
PC端,用C语言写的话,就用MFC,首先你要知道,MSCOMM,(也就是俗称的电话控件)举个不贴切的例子它就是用来控制接收和发送串口数据的相当于就是51的发送和接收寄存器操作,当然这是由微软做好的,不用你去编写了,你只需要配置好接收数据就行了对于你这个程序来说追问

感觉好复杂啊,我试着写了一个,但不对,你能不能帮我看看啊?

追答

可以,你发我邮箱421823652qq.com,注明问题内容,程序写的尽量多写一点注释,规范。

追问

前辈,程序发给你好多天了,你咋一直没回我啊?

追答

你看到下面两个函数没有,这个函数就是1S中进入这个函数,在这个函数调用Send(unsigned char dat)函数

void inc_sec()
{
sec++;
if(sec > 59)
{
sec = 0;
inc_min();
}
//添加调用,
Send(sec);//就可以了,但是这里有个问题,这里发的只是秒的信息,分和小时怎么办呢,
把分和小时当成秒看待,这样写Send(小时*60*60+分钟*60+sec);其它代码,我没仔细看,也没有时间去做,这里只是跟你提过思路,

dis_buf[6] = dis_code[sec / 10]; // 秒十位
dis_buf[7] = dis_code[sec % 10]; // 秒个位
}

void Send(unsigned char dat)
{

}

第2个回答  2012-10-11
这你得在PC极上自己写个小软件接收数据的。单片机的不算难吧,设置好波特率就没问题了。
第3个回答  2012-10-12
单片机上用定时器,定时器1秒时间到,清零并给PC机发送当前时间信息
相似回答