云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数控直流稳压电源毕业设计0507 - 图文

数控直流稳压电源毕业设计0507 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/12/2 22:16:44

4.2程序代码

下面C代码严格按照上述程序流程出分块写出,然后用Keil51编译通过。第一块为Keil51的位声明;第二块为延时子程序;第三块为液晶的初始化程序;第四块为电压检测中断程序;最后为主程序[7]。

// Keil51位声明//

#include #define uchar signed char #define uint signed int sbit lcdrs=P2^0; sbit lcdwr=P2^1; sbit lcden=P2^2; sbit S1=P2^4; sbit S2=P2^5; sbit S3=P2^6; sbit S4=P2^7;

uchar code VoltageDat[]={\oltage:00.0 V%uchar code CurrentDat[]={\

uchar count,S1num,V_point,V_ge,V_shi,I_point,I_ge,I_shi; uchar S1_OK=0,Confirm=0,DA0832,VCC,Power; //延时1ms子程序开始// void delay(uint z) { }

//写指令子函数//

void lcd_write_com(uchar com) {

lcdrs=0; //lcdrs=0即设置写指令状态 lcdwr=0; //写状态

11 - -

uint x,y;

for(x=0;x<121;x++)

for(y=0;y

冲 }

lcden=0; //从这句开始将en置1然后又置零,是将其显示为高脉

P0=com; //将要写的指令传给P0口 delay(5); lcden=1; delay(5);

lcden=0; // en的高脉冲设置完毕

//写数据子函数//

void lcd_write_dat(uchar x_pos,uchar y_pos,uchar dat) {

x_pos &= 0x0f; // X位置范围 0~15 // y_pos &= 0x01; // Y位置范围 0~ 1 // if(y_pos==1) x_pos += 0x40; x_pos += 0x80; lcd_write_com(x_pos); }

//液晶初始化子函数//

void lcd_init() {

uchar num;

lcd_write_com(0x38); //显示16×2,5×7点阵,8位数据接口。 lcd_write_com(0x0c); //显示开/关及光标设置

12 - -

lcdrs=1; //lcdrs=1即设置写数据状态 lcdwr=0; //写状态

lcden=0; //从这句开始将en置1然后又置零,是将其显示为高脉冲 P0=dat; //将要写的数据传给P0口 delay(5); lcden=1; delay(5);

lcden=0; // en的高脉冲设置完毕

lcd_write_com(0x06); //设置读写一个字符后指针自动加1或减1及整屏左

移动

lcd_write_com(0x01);

lcd_write_com(0x80); //设置数据指针位置,即从什么位置开始显示, for(num=0;num<14;num++) { }

lcd_write_com(0x80+0x40); //设置数据指针位置 for(num=0;num<14;num++) { }

lcd_write_dat(num,1,CurrentDat[num]); delay(5);

lcd_write_dat(num,0,VoltageDat[num]); delay(5);

}

//电压检测中断程序//

uchar keyscan() //等待调时间的子函数,S1S2S3为功能键按,S1闪烁调整位置的功能键,S2增加1,S3减少1 {

if(S1==0) {

delay(5); //键盘按键消抖 if(S1==0) {

S1num++; //S1增加功能键按下的次数 while(!S1); //按键松手检测 if(S1num==1) {

lcd_write_com(0x80+11);

13 - -

}

lcd_write_com(0x0f); //光标闪烁,表示可以调整时间

if(S1num==2) //如果S1即第二次按下,光标向前移动 { }

if(S1num==3) //如果S1即第三次按下,光标向前移动 { }

if(S1num==4) //如果S1即第四次按下,光标向前移动 { }

if(S1num==5) //如果S1即第五次按下,光标向前移动 { }

if(S1num==6) //如果S1即第六次按下,光标向前移动 { }

if(S1num==7) //如果S1即第七次按下,则定时器开始计时,S1num

lcd_write_com(0x80+0x40+8); lcd_write_com(0x80+0x40+10); lcd_write_com(0x80+0x40+11); lcd_write_com(0x80+8); lcd_write_com(0x80+9);

清零,光标不闪烁

}

14 - -

}

{ }

S1num=0; S1_OK=1;

lcd_write_com(0x0c);

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

4.2程序代码 下面C代码严格按照上述程序流程出分块写出,然后用Keil51编译通过。第一块为Keil51的位声明;第二块为延时子程序;第三块为液晶的初始化程序;第四块为电压检测中断程序;最后为主程序[7]。 // Keil51位声明// #include #define uchar signed char #define uint signed int sbit lcdrs=P2^0; sbit lcdwr=P2^1; sbit lcden=P2^2; sbit S1=P2^4; sbit S2=P2^5; sbit S3=P2^6; sbit S4=P2^7; uchar code VoltageDat[]={\oltage:00.0 V%uchar code CurrentDat[]={

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com