




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*stc 12c5a60s2 可扮恒流源设计*filename:constcurrent.cauthor沧海麒麟date:2011.05.20version : 1.1description:stcl 2c5a60s2 可控恒流源设计functions 1):stc 12c5a60s2单片机控制恒流60250ma电流输出*/#includc <stc12c5a.h>#include <intrins.h>#includestring.h#include <math.h>"#include <adc.h>/#include <lc
2、m1602.h>/#includc <key.h>/#includeabsacc.h/#include <dac0832.h>"#include <eeprom.h>#define uint unsigned int#dcfinc uchar unsigned charsbit rs = pla0;sbit rw = p1a1;sbit e = pl八2;sbit speak = p1a3;#define data p2 /1602 数据端 u #define dac0832_port p0 /dac0832 数据端口#define shif
3、t 1#dcfinc add_bai 2#define add_shi 3#define add_ge 4/编码的按键伉uint set_ma=60,adc; /set 电流 uchar bai=0,shi=6,ge=0;uchar wangxue0u=h*2011.05.20*"uchar wanoxuel丨j二”*冰木*木木本木木冰本冰木木木uchar wangxue2n=,setj:000 ma n;/f ,j,j,rj,,1,j,,j,rj,j,j,,j,j,rj,rjw rj,j,rj,rj,rj,rjw,j,j,rj,rjw,j,rjw rj,rjw rj,j,9,j,r
4、j,rj,rjw,j,j,rj,rj,j,j,rjw rj rj,j,j,rj,rj,rjw,j,j,,1,/*延吋函数*/*1 /i4、73 7w 4、7wrvoid delay_nms(uint n)uint x,y;for(x=0;x<n;x+)for(y=0;y< 1000;y+);initial adc sfr*/void initadc(void)pl asf = 0x80; /open p1.7 channels adc function adc_res = 0; /clear previous result adc_contr = adc一power | adc_s
5、peedh; dclay_nins(5); /adc power-on and delay/*get adc result*/ uchar gctadcrcsult(void)adc.contr = adc_power | adc.speedh | 0x07 | adc.start;_nop_(); _nop_();/must wait before inquiry_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();while (!(adc_contr & adc一flag); /wait complete flag adc contr &a
6、mp;=adc flag; /close adc return adc_res; /return adc result/*液品测忙:读取最高位的状态。为1,不忙为0*/void lcd_busy(void)rs=();rw=1;e=l;_nop_();_nop_();_nop_();_nop_();while(data&0x80);e=0;*/*写入命令蚋数f/f 丁,rtw j* »t* rjw了rjwrtw »tw <7w rt* 了,r7» »tw rtw j* »t* rjw了rjw*tw rt» <tw
7、rtw rtwrjwrtw »tw rtw rtw <tw了rjw*tw rt» <tw rtw rtwrjwr7» »tw rjw 了,»t* 】 *tw »tw r7» <tw rt* rt* r7» »tw rjw /void writecommand(uchar com,uchar bool)/操作前妞暂延时,保证信号穂定delay_nms(5); if(bool) lcd_busy();rs=();rw=0;data=com;e=l;dclay_nm$(l);e=0;*1 *a
8、* *1*1*1*1*1 *a* *1*1*1*1*1 /i #t#7w<74、<7#7w 、<7 4、<?w #7 #t <、<t<、<、7 #t*<、3 <7w 4、<、7<、7<7w tv #t7 <、r/*写入数椐函数*/f<1><1><1><1><1>/j 了,*jw »7> »t* rtw 了,r7w <tw rjw 了,<tw rtw r7w <tw <t« rtw rjw r7
9、> »t* rtw 了,rtw »tw,】 »tw rtw rt <tw rtw rtw rjwrtw rtw 了,rtw »tw,】 rtw <tw rt <tw <t« rtw rtw 了,<7> »t* rtw <7w »tw r7»了,»t* rt <tw <t« rtw rjw /void writcdata(uchar dat)lcd_busy(); /操作前短暂延时,保证信"6稳定delay_nms(5); rs
10、=1;rw=();data=dat;e=1;delay_nms(l);e=0;<1z> <1<1<1w> <11#<1<11#<11#<11#1#<1<1<1<1/j ,j,j,5,,j,j,*7* ,1,*,i,i,j*,j*,i,*1,*,j*,i,j,5,j*,j,5,j,5,,j,j,,j,j,5,j,j,5,j,5,,j,*j,5,j,*j,;,j,j,5,j,5,*1,/*/*初始化蚋数/«£ *1*1 *a*1*1 *a* *1*1*1*1*1 *a* *1*1*1*1*
11、1 /i #t#7w<74、<7#7w<7 4、<?w #7 #t <、<t<、3 <7w 4、<、7<、7<7w tv #t7 <、rvoid init_lcd l 602()dclay_nm$(15);writecommand(0x38,0); /display mode writecommand(0x38,0); /display mode writecommand(0x38,0); /display modewritecommand(0x08,1);writecommand(0x01,l); /显示清屏 write
12、command(0x06,1); /显示光标移动位置 writecommand(0x0c, 1); /ffl 示开及光标设置 delay_nms(5);处定位光标函数横 a|a +示 x 纷、a|a >j*!*1*1*1 %! *1*1 *! *1*1*1*1*1 %! *1 *a* *1 *! /#t>7 #t>7 #t> rtw #t>7 #t>rtw7 fvoid locatex_y(uchar x,uchar y)/显不光标定位uchar temp; temp&=0x7f; temp=x%39; y&=0x01;if(y)temp|=
13、0x40; tcmp|=0x80; writecommand(temp j);/氺氺氺氺氺*氺氺*氺氺氺氺氺*氺氺*氺氺氺氺氺;一 +氺*氺氺氺*氺氺*氺*氺氺*氺*氺氺氺*氺氺*氺氺*/void displayonechar(uchar x,uchar y,uchar dat)/显示指定坐标的一个字符locatex_y(x,y);writedata(dat);/糸氺奉氺承氺尜氺承氺尜氺尜氺幸氺尜氺奉氺承氺y)(h氺氺氺氺*氺*氺幸氺糸氺車氺氺氺*氺氺氺*氺*氺車氺本氺車氺/void displayonenum(uchar x,uchar y,uchar dat)/aa东招定平.标的一个7-符
14、locatex_y(x,y);writedata(dat+()x30);/氺氺承氺氺氺氺氺泳氺氺氺氺氺泳氺氺氺承氺氺氺氺;y)h /ji一氺*氺氺氺氺氺氺泳氺氺氺窣*氺氺氺*氺氺泳氺氺氺窣氺氺氺窣氺/void displaynumber(uchar x,uchar y,uint number)/显示指定华标的一个数字 0-500 uchar ge,shi,bai;bai = number% 1000/100; shi = number% 100/10; ge = number% 10;locatex_y(x,y);writedata(0x30+bai);writcdata(0x30+shi);
15、writedata(0x30+ge);/氺氺氺氺糸氺氺氺氺氺氺氺糸氺氺氺本氺氺氺糸氺氺氺氺氺*本氺氺氺糸氺糸氺糸氺氺氺糸氺氺氺糸氺氺氺糸氺糸氺氺氺/void displaystring(uchar x,uchar y,uchar *table)/显示指定坐标的_ 串字符locatex_y(x,y);for(;*table!=w;table+)writcdata(*tablc);delay_nms(5);/*枪测打尤按键按下了函数*/ uchar key_press()/检验是否杏按键按下子函数 p3=0x0f;p3&=0x0f; if(p3=0x0f)return 0;elseretu
16、rn 1;/* jjljljpl* */ucharkey_scan()/按键扫描,取岀编码的按键伉,即返m key_1,key_2,key_3 uchar key; delay一nms(10);p3=oxof;key=p3;if(key_press()kcy&=oxof;switch(key)case oxoe: key=shift ;break; /11 io case oxod: key=add_bai;break; /1101 case oxob: kcy=add_shi;brcak; /1011 case0x07: key=add_ge ;break;/olliwhile(ke
17、y_press();return key; void speaker(uint i)int i;if(i>250|i<60)set_ma=60;bai=o;shi=6;gc=0;display n umber(6,0,set_ma); for(i=0;i<100;i+)speak = 1;delay_nms(l); speak = 0; delay_nms(l);void data_proccssing_function(uint sctma) uint ma;speaker(setma);if(setma>50)/ma=(sctma-50)* 100; delay_n
18、ms(l); adc=getadcresult(); /displaynumber(6,1,adc); if(adc*2)=setma)dac0832_port+=0;_nop_();_nop_();if(adc*2)<setma)dac0832_port+;_nop_();_nop_();if(adc*2)setma)dac0832_port-;_nop_();_nop_();void main(void)uchar i,key;initadco;init_lcd 1602();displaystring(oawangxueo);displaystring(0,1,wangxue 1); delay_nms(3000);writecommand(0x01,1); displaystring(0,0,wangxue2);dac0832_port=0x00;while(l)if(i=key_press()/如果有电平变化,进入程序delay_nms(10);/消抖if(i=key_prcss()/再判断一下,如果确实按下/,进入程序 set一ma=bai* 1 oo+shi* 10+ge; displaynumber(6,0,set
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 栏杆承包合同协议书
- 地铁工程施工方案
- 上海室内消防工程合同
- 奢侈品质押担保合同
- 花箱花卉施工方案
- 2025年人力资源制度:趣味运动会活动策划方案
- 旱地改水田施工方案
- 森林防火通道施工方案
- 茂名水幕电影施工方案
- 广西河池市宜州区2024-2025学年七年级上学期期末生物试题(原卷版+解析版)
- 2024初级会计职称考试题库(附参考答案)
- 2024年呼和浩特职业学院单招职业适应性测试题库参考答案
- 用户服务满意度评价表
- [江西]20万吨自来水厂工艺图纸设计(附58页设计方案)
- 土石坝设计毕业设计
- 【分享贴】2018AFP案例结业题目10:青年家庭限购政策下的公寓商铺答案解析
- 插花构图二学习教案
- 三年级学生学情分析
- 产品安全符合性声明
- 高中化学竞赛-中级无机化学--金属原子簇word版本
- 冲压工艺与模具设计拉深
评论
0/150
提交评论