① (求大神)STC单片机烧录不了程序 我觉得谁能解决得了我的问题谁就真大神了
别急,先放下做些别的事,抽空琢磨着,过些时候等到心情平缓了或琢磨出可能的原因了再动手;感觉这样几个方面要关注下:1】串口驱动程序要用win7系统的版本。2】串口驱动成功并确认了串口号以后,打开STC-ISP选择“串口助手”做下串口测试,就是直接短路USB-COM输出连接单片机TXD/RXD端并选择好接收与发送模式,发送几个字母或数字试试。3】一定要记得USB转COM模块的输出端的TXD连接单片机的RXD;RXD连接单片机的TXD,即:交叉链接,不能搞错。4】关于那个STC-ISP-6.52的版本,操作时只要先关闭单片机电源,而后点击下载,或先点击下载而不必等待软件提示就直接关掉-闭合一次单片机的电源就可以了。祝成功。
② 求51单片机驱动液晶12864的程序,要求是串口方式。程序里不要有绘图反白之类的,只要能显示汉字就行。
绝对好用的串口程序
sbit SID=P2^1; //12864数据
sbit SCLK=P2^2; //12864时钟
init()
{
write(0,0x30); //8 位接口,基本指令集
write(0,0x0c); //显示打开,光标关,反白关
write(0,0x01); //清屏,将DDRAM的地址计数器归零
delaynms(10);
write(0,0x80); for(i=0;i<16;i++) write(1,datas11[i]);
write(0,0x90); for(i=0;i<16;i++) write(1,datas2[i]);
write(0,0x88); for(i=0;i<16;i++) write(1,datas3[i]);
write(0,0x98); for(i=0;i<16;i++) write(1,datas4[i]);
}
/**********************12864*************************/
void delaynms(unsigned int di) //延时
{
unsigned int da,db;
for(da=0;da<di;da++)
for(db=0;db<10;db++);
}
void sendbyte(unsigned char bbyte) //发送一个字节
{
unsigned char i;
for(i=0;i<8;i++)
{
SID=bbyte&0x80; //取出最高位
SCLK=1;
SCLK=0;
bbyte<<=1; //左移
}
}
void write(bit start, unsigned char ddata) //写指令或数据
{
unsigned char start_data,Hdata,Ldata;
if(start==0) start_data=0xf8; //写指令
else start_data=0xfa; //写数据
Hdata=ddata&0xf0; //取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
sendbyte(start_data); //发送起始信号
delaynms(5); //延时是必须的
sendbyte(Hdata); //发送高四位
delaynms(1); //延时是必须的
sendbyte(Ldata); //发送低四位
delaynms(1); //延时是必须的
}
/*void lcdinit(void) //初始化LCD
{
delaynms(10); //启动等待,等LCM讲入工作状态
//PSB=0; ; //串口驱动模式
// RESET=0; delaynms(1); RESET=1; // 复位LCD
// CS=1;
write(0,0x30); //8 位接口,基本指令集
write(0,0x0c); //显示打开,光标关,反白关
write(0,0x01); //清屏,将DDRAM的地址计数器归零
}*/
③ 为什么单片机烧录程序的时候,提示串口已被其它程序打开或该串口不存在.
单片机烧录程序的时候,提示串口已被其它程序打开或该串口不存在.出现这些错误说明你串口选择是错误的,没有选择烧录程序所插入的串口,这样一来,烧录软件与单片机之间当然无法正常通信,不但无法下载程序,报错就如你描述的那样,一般插上线,打开电源,会自动检测串口的。