当前位置:文档之家› WEBADI开发实例

WEBADI开发实例

WEBADI开发实例
WEBADI开发实例

ORACLE WEBADI 开发示例

标签:oracleebs

2014-08-28 15:18 2320人阅读评论(0) 收藏举报版权声明:本文为博主原创文章,未经博主允许不得转载。

一、建表

create table SGQ_WEBADI_DEMO

(

ADI_ID NUMBER,

ADI_ORGANIZATION_ID NUMBER,

ADI_CODE VARCHAR2(30),

ADI_NAME VARCHAR2(100),

ADI_DATE DATE

);

二、创建同义词

SQL> CREATE PUBLIC SYNONYM SGQ_WEBADI_DEMO FOR SGQ_WEBADI_DEMO;

Synonym created

三、创建序列

SQL> CREATE SEQUENCE SGQ_WEBADI_DEMO_S;

Sequence created

四、创建序列同义词

SQL> CREATE PUBLIC SYNONYM SGQ_WEBADI_DEMO_S FOR SGQ_WEBADI_DEMO_S;

Synonym created

五、插入测试数据

SQL> INSERT INTO SGQ_WEBADI_DEMO VALUES(1,83,'TEST01','青羊支行

',SYSDATE);

1 row inserted

SQL> commit;

Commit complete

六、登记表

参数的涵义分别为:所有者、表名、扩展(T自动,S非自动)下一区,自由、已使用

:所有者、表名、列字段名、序号、类型、字段宽度、是否为空,是否可以转换。

SQL> BEGIN

ad_dd.register_table('XXT','SGQ_WEBADI_DEMO','t');

ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_id',1,'number' ,38,'y','n');

ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_organization_i d',2,'number',38,'y','n');

ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_code',3,'varch ar2',30,'y','n');

ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_name',4,'varch ar2',100,'y','n');

ad_dd.register_column('XXT','SGQ_WEBADI_DEMO','adi_date',5,'date' ,9,'y','n');

COMMIT;

END;

/

PL/SQL procedure successfully completed

七、创建视图

SQL> create or replace view sgq_webadi_demo_v as select * from

sgq_webadi_demo;

View created

八、创建包

SQL> CREATE OR REPLACE PACKAGE SGQ_WEBADI_DEMO_PKG IS

PROCEDURE UPLOAD_DATA(P_ID IN NUMBER,

P_ORGANIZATION_ID NUMBER,

P_CODE IN VARCHAR2,

P_NAME IN VARCHAR2,

P_DATE IN DATE);

END;

/

Package created

SQL> CREATE OR REPLACE PACKAGE BODY SGQ_WEBADI_DEMO_PKG IS

PROCEDURE UPLOAD_DATA(P_ID IN NUMBER,

P_ORGANIZATION_ID NUMBER,

P_CODE IN VARCHAR2,

P_NAME IN VARCHAR2,

P_DATE IN DATE) IS

BEGIN

IF P_ID IS NULL THEN

INSERT INTO SGQ_WEBADI_DEMO

(ADI_ID, ADI_ORGANIZATION_ID, ADI_CODE, ADI_NAME, ADI_DATE) SELECT SGQ_WEBADI_DEMO_S.NEXTVAL,

P_ORGANIZATION_ID,

P_CODE,

P_NAME,

P_DATE

FROM DUAL;

ELSE

UPDATE SGQ_WEBADI_DEMO T

SET T.ADI_ORGANIZATION_ID = P_ORGANIZATION_ID,

T.ADI_CODE = P_CODE,

T.ADI_NAME = P_NAME,

T.ADI_DATE = P_DATE

WHERE T.ADI_ID = P_ID;

END IF;

END;

END SGQ_WEBADI_DEMO_PKG;

/

Package body created

九、创建集成器

9.1 Desktop Integrator -->创建文档(Create Document)

9.2选择“HR集成器设置”,下一步

9.3 查看程序选择“EXCEL 2003”,否则可能会有问题。报告框不要选,否则不能编辑上传。下一步。

9.4 内容选择“无”,下一步。

9.5 点击“创建文档”。

9.6 保存并打开文档

9.7 文档创建完成后,点弹出界面的关闭按钮,并编辑(注意点一下加载列的第一个单元格,用来进行标记,本测试后续导入时,只导入标记的行)。

以上内容填写如下:

9.8 加载到EBS(加载项-Oracle-加载)

9.9选择标记的行,点击加载

9.10 验证,因为在中文环境下创建的集成器,所以查看时如果无数据,则要先初始化语言环境,再进行一遍查询操作。

SQL> alter session set nls_language='SIMPLIFIED CHINESE';

Session altered

SQL> SELECT BNI.APPLICATION_ID, --应用ID

2 BNI.INTEGRATOR_CODE, --集成器代码

3 https://www.doczj.com/doc/734498341.html,ER_NAME --集成器名称

4 FROM BNE_INTEGRATORS_VL BNI

5 WHERE https://www.doczj.com/doc/734498341.html,ER_NAME = 'SGQ_WEBADI_DEMO';

APPLICATION_ID INTEGRATOR_CODE USER_NAME

---------------- ------------------------------

------------------------------

20003 GENERAL_141_INTG SGQ_WEBADI_DEMO

十、维护集成器表单功能关联

10.1 Desktop Integrator -->创建文档(Create Document)

10.2 选择“HR 维护集成器表单功能关联”(HR Maintain Integrator Form Function Associations),下一步

10.3 选择EXCEL 2003 ,报告前面的框不打勾,理由参见上面说明,,下一步。

10.4 选择内容参数

PS:应用程序简称为本系统的客户化应用名称XXT,其他系统按之前加载时导入的“应用程序简称”填写。同样,集成器用户名也是在之前加载时定义的。填写完成后,继续。

10.5 复查,无问题,则点击“创建文档”。

10.6 保存文件并打开

文档创建后如图:

表单功能列表字段暂不填写,我们定义此功能名称后再进行填写。十一、定义功能

11.1 进入路径:应用开发员-->应用产品-->功能

a)在说明选项卡,填写如下:

其中,SGQ_WEBADI_FUNCTION为自定义的功能。b)在特性选项卡,填写如下:

功能: SGQ_WEBADI_FUNCTION

用户功能名:SGQ_WEBADI_FUNCTION

类型:子函数

保存退出当前界面。

十二添加功能到菜单

12.1 进入路径:应用开发员-->应用产品-->菜单

a)查找DESKTOP INTEGRATION MENU,添加一行,功能列填写:SGQ_WEBADI_FUNCTION,即上面定义的功能。提示列保存为空。然后保存退出。

十三、填写第十步创建的表单功能EXCEL中的表单功能列表,并进行加载

13.1 验证

SQL> alter session set nls_language='SIMPLIFIED CHINESE';

Session altered

SQL> SELECT BNI.APPLICATION_ID,

BNI.INTEGRATOR_CODE, --集成器CODE

https://www.doczj.com/doc/734498341.html,ER_NAME, --集成器名称

BSR.SECURITY_VALUE --功能CODE

FROM BNE_INTEGRATORS_VL BNI

JOIN BNE_SECURITY_RULES BSR ON (BSR.APPLICATION_ID = BNI.APPLICATION_ID AND

BSR.SECURITY_CODE = BNI.INTEGRATOR_CODE)

WHERE https://www.doczj.com/doc/734498341.html,ER_NAME = 'SGQ_WEBADI_DEMO';

APPLICATION_ID

INTEGRATOR_CODE USER_NAME SECURIT Y_VALUE

---------------- ------------------------------

------------------------------ ------------------------------

20003

GENERAL_141_INTG SGQ_WEBADI_DEMO SGQ_WEB ADI_FUNCTION

十四、定义布局

14.1 Desktop Integrator -->定义布局

14.2 选择刚创建的集成器(本例为SGQ_WEBADI_DEMO),查找。再点创建

14.3 填写如下:输入自定义的布局名称SGQ_WEBADI_DEMO_LAYOUT,题头数不用管,下一步。

14.4 选择相关字段展示区域

必须字段里面的ORGANIZATION_ID改为题头,其他全部为行。

改为题头,则字段显示的Header里面,如果改为行,则显示在行里面。必需字段是自动出来的API PROCEDURE NAME里面的参数列表,并去提了前面的P_,我们可以安排这些字段的显示区域,(Header或者Line)

注意:

1.这些值将传给API PROCEDURE NAME,也就是参数列表,一行一次,不管是Header还是Line。

2.视图的字段名和变量名P_XXX,变量名去年P_前缀后,最好不要和视图里面的字段名相同。因此在EXCEL里面显示的参数是分题头、行、传递给API PRECECURE NAME时是并列的,至于在API PROCEDURE NAME里面,我们又可以自己把头字段和行字段进行区分,以便插入到不同的表中。

可选字段是VIEW的字段,可以不进行显示。

14.4 对字段属性是否只读等进行设置,此处我们只设置行ID为只读。标题为“测试组织ID”,然后应用(设置为只读后,上传时此值为空)。

14.5 应用之后的界面如下:

14.6 验证:

SELECT BNI.APPLICATION_ID,

BNI.INTEGRATOR_CODE, --集成器CODE

https://www.doczj.com/doc/734498341.html,ER_NAME, --集成器名称

https://www.doczj.com/doc/734498341.html,YOUT_CODE, --布局代码

https://www.doczj.com/doc/734498341.html,ER_NAME, --布局用户名称

BLC.SEQUENCE_NUM,

BIC.*

FROM BNE_INTEGRATORS_VL BNI,

BNE_LAYOUTS_VL BLV,

BNE_LAYOUT_COLS BLC,

BNE_INTERFACE_COLS_VL BIC

WHERE https://www.doczj.com/doc/734498341.html,ER_NAME = 'SGQ_WEBADI_DEMO'

AND BLV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID AND BLV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE AND https://www.doczj.com/doc/734498341.html,YOUT_CODE = https://www.doczj.com/doc/734498341.html,YOUT_CODE

AND BLC.INTERFACE_APP_ID = BIC.APPLICATION_ID AND BLC.INTERFACE_CODE = BIC.INTERFACE_CODE

AND BLC.INTERFACE_SEQ_NUM = BIC.SEQUENCE_NUM;十五、定义映射

15.1 Desktop Integrator -->定义映射

15.2 查找SGQ_WEBADI_DEMO,然后点“更新”,然后下一步。

15.3 更新映射,这里我们添加5行,和数据库视图列数保持一致。

这里显示界面定义的字段对应到数据库的哪个字段。我们增加4行,把视图出来的值传给API PROCEDURE NAME的参数。

15.4 验证:

SQL> SELECT BNI.APPLICATION_ID,

BNI.INTEGRATOR_CODE, --集成器CODE

https://www.doczj.com/doc/734498341.html,ER_NAME, --集成器名称

BMV.MAPPING_CODE --映射CODE

FROM BNE_INTEGRATORS_VL BNI, BNE_MAPPINGS_VL BMV

WHERE BMV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID

AND BMV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE

AND https://www.doczj.com/doc/734498341.html,ER_NAME = 'SGQ_WEBADI_DEMO'

AND BMV.INTEGRATOR_APP_ID = BNI.APPLICATION_ID

AND BMV.INTEGRATOR_CODE = BNI.INTEGRATOR_CODE;

APPLICATION_ID

INTEGRATOR_CODE USER_NAME MAPPING _CODE

---------------- ------------------------------

------------------------------ ------------------------------

20003

GENERAL_141_INTG SGQ_WEBADI_DEMO GENERAL _141_MAP

十六、定义查询条件,用来定义过滤条件

16.1 Desktop Integrator -->创建文档

单片机产品开发流程12.

详细的单片机开发流程 一、项目评估: 出初步技术开发方案,据此出预算,包括可能的开发成本、样机成本、开发耗时、样机制造耗时、利润空间等,然后根据开发项目的性质和细节评估风险,以决定项目是否落实资金上马。 二、项目实施: 1、设计电原理图: 在做这一步时要考虑单片机的资源分配和将来的软件框架、制定好各种通讯协议, 尽量避免出现当板子做好后, 即使把软件优化到极限仍不能满足项目要求的情况, 还要计算各元件的参数、各芯片间的时序配合, 有时候还需要考虑外壳结构、元件供货、生产成本等因素, 还可能需要做必要的试验以验证一些具体的实 现方法。设计中每一步骤出现的失误都会在下一步骤引起连锁反应, 所以对一些没有把握的技术难点应尽量去核实。 2、设计印刷电路板(PCB 图: 完成电原理图设计后, 根据技术方案的需要设计 PCB 图, 这一步需要考虑机械结构、装配过程、外壳尺寸细节、所有要用到的元器件的精确三维尺寸、不同制 版厂的加工精度、散热、电磁兼容性等等, 为最终完成这一步常常需要几十次回 头修改电原理图。 3、把 PCB 图发往制版厂做板: 将加工要求尽可能详细的写下来与 PCB 图文件一起发电邮给工厂,并保持沟通,及时解决加工中出现的一些相关问题。 4、定购开发系统和元件:

要考虑到开发过程中的可能的损耗, 供货厂商的最小订货量、商业信誉、价格、服务等, 具体工作包括整理购货清单、联系各供货厂商、比较技术参数、下定单、跑银行汇款、传真汇款底单、催货等等。 5、装配样机: PCB板拿到后开始样机装配,设计中的错漏会在装配过程开始显现,尽量去补救。 6、样机调试: 样机初步装好就可以开始调试, 当然需要有软件才能调, 有人说单片机的软件不是编出来而是调出来的, 所以这个过程需要用到电烙铁、刻刀、不同参数的元件、各种调试和仿真软件、样机的模拟工作环境等。常常会因为设计阶段的疏忽而不得不对样机动手术, 等整个调试终于完成之后, 往往样机的板子已经面目全非。 7、整理数据: 到了这一步, 项目开发的大部分工作都已经完成了, 这时候需要将样机研发过程中得到的重要数据记录保存下来,比如更新电原理图里的元件参数、 PCB 元件库里的三维模型, 还要记录暴露出来的设计上的失误、分析失误的原因、采用的补救方案等等。 8、 V1.1 如果项目进入生产阶段或确有需要, 可以根据修正后的技术方案按以上各个步骤重做一台完善的 V1.1版样机。 9、编写设备文档 包括编写产品说明书、拍摄外观图片等, 如果设备需要和电脑通讯, 还得写好与电脑的接口标准和通讯协议说明。

单片机程序设计方法总结.doc

单片机程序设计方法总结 程序设计是单片机开发最重要的工作程序设计就是利用单片机的指令系统根据应用系统即目标产品的要求编写单片机的应用程序其实我们前面已经开始这样做过了这一课我们不是讲如何来设计具体的程序而是教您设计单片机程序的基本方法不过在讲解之前还是有必要先了解一下单片机的程序设计语言这里的语言与我们通常理解的语言是有区别的它指的是为开发单片机而设计的程序语言如果 您没有学过程序设计可能不太明白我给大家简单解释一下您知道微软的VB VC 吗VB VC 就是为 某些工程应用而设计的计算机程序语言通俗地讲它是一种设计工具只不过这种工具是用来设计计 算机程序的要想设计单片机的程序当然也要有这样一种工具说设计语言更确切些单片机的设计 语言基本上有三类: 1 .完全面向机器的机器语言 机器语言就是能被单片机直接识别和执行的语言计算机能识别什么以前我们讲过--是数字0 或1 所以机器语言就是用一连串的0 或1 来表示的数字比如MOV A 40H 用机器语言来表示就是 11100101 0100000 很显然用机器语言来编写单片机的程序不太方便也不好记忆我们必须想办法 用更好的语言来编写单片机的程序于是就有了专门为单片机开发而设计的语言 2. 汇编语言 汇编语言也叫符号化语言它使用助记符来代替二进制的0 和1 比如刚才的MOV A40H 就是汇编语言 指令显然用汇编语言写成的程序比机器语言好学也好记所以单片机的指令普遍采用汇编指令来编写 用汇编语言写成的程序我们就叫它源程序或源代码可是计算机不能识别和执行用汇编语言写成的程 序啊怎么办当然有办法我们可以通过翻译把源代码译成机器语言这个过程就叫做汇编,汇编工作现在 都是由计算机借助汇编程序自动完成的不过在很早以前它是靠手工来做的. 值得注意的是:汇编语言也是面向机器的,它仍是一种低级语言每一类计算机都有它自己的汇 编语言比如51 系列有它的汇编语言;PIC 系列也有它的汇编语言微机也有它自己的汇编语言它 们的指令系统是各不相同的也就是说不同的单片机有不同的指令系统它们之间是不通用的,这就

单片机基于C语言的编程程序

#include #include #define uchar unsigned char #define uint unsigned int sbit RED_ZHU = P0^0;//对应L1LED 代表主道路红灯sbit YELLOW_ZHU = P0^1;//对应L2LED 代表主道路黄灯sbit GREEN_ZHU = P0^2;//对应L3LED 代表主道路绿灯 sbit RED_ZHI = P0^4;//对应L4LED 代表支道路绿灯sbit YELLOW_ZHI = P0^5;//对应L5LED 代表支道路绿灯sbit GREEN_ZHI = P0^6;//对应L6LED 代表支道路绿灯 /********************************************************* 500ms延时函数 晶振:11.0592MHz *********************************************************/ void delay(unsigned char j) { unsigned char k; unsigned int i; for(;j>0;j--) { for(i=1250;i>0;i--) { for(k=180;k>0;k--); } } } /********************************************************* 主函数 *********************************************************/ main() { uchar t; P0=0xff; P3=0xff; RED_ZHU=0; //第一个状态 RED_ZHI=0; delay(10);

教你如何用C++写单片机程序

教你如何用C++写单片机程序 关键词:C++ 面向对象单片机 从大一就开始学习单片机,学51,A VR编程都使用C语言的风格,即面向过程,只要能画出程序流程图,程序基本就born了。我热衷于编程,尤其是C++,当时想有没有一天,C++的类和对象也能出现在单片机中? 历经世事沧桑,事到如今,我终于有机会,和大家一起学习使用真正面向对象的C++来控制单片机。目前单片机编译器大部分只支持C语言,C++还不够普及,但我们有理由相信,有着更先进的面向对象的理念,有更加平易近人的类和继承,C++必将取代C,成为单片机程序的主流。试看将来环球单片机,必是C++的世界! 下面大家跟着我来一起学习怎么用C++给单片机编程序!本文要求大家玩过A VR单片机,有过C语言编程经验,而且要对VC6.0开发环境有一定了解。 必备软件:VC6.0(用于编辑源程序),WinA VR(用于生成Makefile,支持A VR系列单片机),Proteus(用于仿真调试)。 首先,你的电脑上要装有VC6.0,进入后选菜单【file】---【new】新建工程,如图1选择Makefile工程,输入工程名称,路径,点确定。 图1_新建工程 一路OK建好工程,界面如图2。这个工程是专门写makefile脚本的,你如果学A VR单片机使用avr-gcc那应该对makefile有一定了解,如果想多了解一点详见https://www.doczj.com/doc/734498341.html,/view/974566.html?wtp=tt(呵呵,百度百科)。 你还需要安装WINA VR,这是个免费软件,网上很多资源,这个软件很容易安装,一路Next 就可以啦!为了使用方便,我的WINAVR安装到了C盘根目录下的WINA VR文件夹。安装好后,可以直接用它来编辑源代码,今天我就不讲它的使用方法了,只讲怎么生成makefile。自我感觉用熟悉的VC6.0环境编写程序心情很愉快,大家还是跟我一起来,打造

单片机必会程序2

#include "delay.h" /*------------------------------------------------ uS延时函数,含有输入参数unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } #include"display.h" #include"delay.h" #define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换 //sbit LA TCH1=P2^0;//定义锁存使能端口段锁存 //sbit LA TCH2=P2^3;// 位锁存 unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码 unsigned char TempData[8]; //存储显示值的全局变量 /*------------------------------------------------ 显示函数,用于动态扫描数码管

单片机程序设计编程规范

单片机程序设计编程规范 本规范适用于松翰科技 8-bit MCU部门汇编程序编写准则,同样适用于代理商及重要客户工程师编程规范参考。本规范的目的为统一编程风格,保证程序编写质量,提高程序的可移植性和维护性。 大部分的规范严格, 品质要求高的软件公司对员工编写代码的风格都有硬性规定, 例如缩排的使用,TAB 的长度,函数变量的命名方式。这些规定的明显好处是可以统一规范不同程序员所编制的代码,提升程序代码的可读性与可维护性,同时统一格式的编程风格也为code review提供方便。 目录 一、设计总则 二、排版风格 三、程序可读性及可维护性 四、注释 五、变量命名规则 六、常量命名规则 七、标号命名规则 八、文件命名规则及文件分割 九、标准程序模块 十、附录

一、设计总则 1.程序质量的评估 程序的优劣可以从两个方面进行评估,定量指标和定性指标。 定量指标包括: 1) 程序代码执行效率; 2) 程序占用资源多少。 定性指标包括: 1) 可调试性,即是否方便排除程序语法错误; 2) 可测试性,即是否方便验证程序功能的正确性; 3) 可维护性,即是否方便程序的修改和升级; 4) 可移植性; 5) 可读性。 2、程序架构 为了便于维护和移植,推荐使用层次化的软件设计方法。可把整个软件分为三层:应用层、界面层和底层驱动层。各层之间的关系如下图所示。 层次化设计说明: 1) 底层驱动层主要包含直接和硬件相关的驱动程序,如数码管显示、按键、峰鸣器、继电器和电机控制等。底层的各个模块间要保持各自的独立性,不产生直接的数据交互,底层也不直接访问应用层,如果有需要,都要通过界面层进行数据交互。 2) 界面层主要提供数据交互,为应用层和底层驱动之间以及底层驱动层各模块之间提供数据的交互。 3) 应用层主要完成具体功能的实现,它要通过界面层控制底层驱动层各模块来完成所需功能,而不能越过界面层直接访问底层驱动层。所有的用户接口要在应用层来实现。 4) 一个好的架构必须将底层硬件包装起来,为应用程序提供一组丰富的函数操作(buffer or parameter),例如在中断的处理中,应用程序不需要资料中断的堆栈如何保护不需要知道地址操作, 只需要读取中断产生的旗标动作。

单片机实验程序

三、设计要求 1、编写程序将00H~0FH 16个数据分别送到单片机内部 RAM 30H~3FH单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外 部RAM 4800H~480FH单元中。 4、编写程序将4800H~480FH单元内容送到外部RAM 5800H~580FH单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回 片内RAM 50H~5FH单元中。 五、思考题 1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有 哪些寻址方式? 2、说明指令MOV A,20H和MOV C,20H中的20H含义有什 么不同?传送指令中的助记符MOV,MOVX,MOVC各适用 于访问哪个存储器空间? ORG 0000H CLR A MOV A,#00H MOV R0,#30H MOV R7,#10H LOOP:MOV @R0,A INC R0 INC A DJNZ R7,LOOP MOV R0,#30H MOV R1,#40H MOV R7,#10H LOOP1:CLR A MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R7,LOOP1 MOV R1,#40H MOV DPTR,#4800H MOV R7,#10H LOOP2:CLR A MOV A,@R1 MOVX @DPTR,A INC R1 INC DPTR DJNZ R7,LOOP2

MOV R7,#10H MOV DPTR,#4800H MOV R1,DPH MOV R2,DPL MOV DPTR,#5800H MOV R3,DPH MOV R4,DPL LOOP3:CLR A MOV DPH,R1 MOV DPL,R2 MOVX A,@DPTR MOV DPH,R3 MOV DPL,R4 MOVX @DPTR,A INC R2 INC R4 DJNZ R7,LOOP3 MOV DPTR ,#5800H MOV R0,#50H MOV R7,#10H LOOP4:CLR A MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R7,LOOP4 END

单片机程序设计方法

第十六课单片机程序设计方法 程序设计是单片机开发最重要的工作程序设计就是利用单片机的指令系统根据应用系统即 目标产品的要求编写单片机的应用程序其实我们前面已经开始这样做过了这一课我们不是讲如何来设计具体的程序而是教您设计单片机程序的基本方法不过在讲解之前还是有必要先了解一下单片 机的程序设计语言 一程序设计语言 这里的语言与我们通常理解的语言是有区别的它指的是为开发单片机而设计的程序语言如果您没有学过程序设计可能不太明白我给大家简单解释一下您知道微软的VB VC 吗VB VC 就是为某些工程应用而设计的计算机程序语言通俗地讲它是一种设计工具只不过这种工具是用来设计计 算机程序的要想设计单片机的程序当然也要有这样一种工具说设计语言更确切些单片机的设计语言基本上有三类 1 完全面向机器的机器语言 机器语言就是能被单片机直接识别和执行的语言计算机能识别什么以前我们讲过--是数字0 或1所以机器语言就是用一连串的0 或1 来表示的数字比如MOV A 40H 用机器语言来表示就是11100101 0100000 很显然用机器语言来编写单片机的程序不太方便也不好记忆我 们必须想办法用更好的语言来编写单片机的程序于是就有了专门为单片机开发而设计的语言 2 汇编语言 汇编语言也叫符号化语言它使用助记符来代替二进制的0 和1比如刚才的MOV A 40H 就是汇编语言指令显然用汇编语言写成的程序比机器语言好学也好记所以单片机的指令普遍采用汇编指令来编写用汇编语言写成的程序我们就叫它源程序或源代码可是计算机不能识别和执行用汇编语言写成的程序啊怎么办当然有办法我们可以通过翻译把源代码译成机器语言这个过程就叫做汇编汇编工作现在都是由计算机借助汇编程序自动完成的不过在很早以前它是靠手工来做的道听途说我也没经历过呵呵

51单片机基本程序

1第一位隔一秒闪烁一次 #include #define uint unsigned int sbit led1=P1^0; uint i; uint j; void main() { while(1) { led1=0; for(i=1000;i>0;i--) for(j=110;j>0;j--); led1=1; for(i=1000;i>0;i--) for(j=110;j>0;j--); } } 2复杂广告灯 #include

#define uint unsigned int #define uchar unsigned char uchar discode[]={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,//正向流水灯 0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,//反向流水灯 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xFF,//隔灯闪烁3次 0xF0,0x0F,0xF0,0x0F,0xFF,//高四盏。低四盏闪烁2次 0x33,0xCC,0x33,0xCC,0x33,0xCC,0xFF//隔两盏闪烁3次 }; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } void main(void) { uchar i; P0=0xFF; while(1)

{ for(i=0;i<35;i++) { P0=discode[i]; delayms(250); } } } 3拉幕式与闭幕式广告灯 #include #define uint unsigned int #define uchar unsigned char uchar discode1[4]={0x18,0x24,0x42,0x81}; uchar discode2[4]={0x7E,0x3C,0x18,0x00}; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); }

单片机结构与开发设计流程图

模块一单片机结构及开发设计流程 课题一单片机结构 1、画出89C51单片机的引脚排列图。 2、画出89C51单片机的引脚功能图。 3、画出89C51单片机的基本组成框图。 4、叙述89C51单片机各部分的具体组成情况。 课题二单片机工作条件 1、画出51系列单片机部时钟和外部时钟电路接线图。 2、画出51系列单片机上电复位和按键复位电路接线图。 3、画出51系列单片机工作条件接线图。 课题三单片机输入/输出端口结构 1、画出51系列单片机P0、P1、P 2、P3口位结构图。 2、叙述51系列单片机P0~P3口使用注意事项。 课题四单片机开发设计流程 1、用Protel软件画出按键左移亮灯电路原理图。 2、用Protel软件设计出按键左移亮灯电路印制电路板图。 3、制作按键左移亮灯电路板。 4、连接仿真器。 5、运行仿真软件,输入按键左移亮灯程序,编译、调试及仿真运行程序。 6、连接编程器。 7、运行编程器软件,将调试通过的按键左移亮灯程序目标代码写入89C51单片机。 8、将经过编程的89C51单片机插入电路板上的单片机IC插座中,脱机运行,观察电路运 行情况。 模块二单片机指令系统及汇编语言程序设计 课题一程序设计基础 1、简述单片机存储器总体分配情况。 2、简述单片机片数据存储器结构。 3、简述单片机七种寻址方式。

4、简述单片机不同存储器空间的寻址方式。 5、回答下列指令的寻址方式: (1)MOV A, #6AH (2)MOV A, #0E#H (3)MOV A, 3FH (4)MOV A, 7BH (5)MOV A, R1 (6)MOV A, R3 (7)MOV A, R0 (8)MOV A, R1 (9)MOVX A, DPTR (10)MOVC A, A+DPTR (11)MOV A, A+PC (12)JZ 50H (13)SETB 01H 课题二延时程序 1、将本课题任务二中的R3的值改为01H、02H和08H,观察亮灯的间隔时间有何变化? 2、将本课题任务二中的RL A指令改为RR A指令,观察亮灯的顺序有何变化? 3、将本课题任务二中的亮灯数据初值改为03H、07H和55H,观察亮灯规律有何变化? 4、设计一延时5S的延时程序,并替代任务二中的延时程序,观察亮灯间隔时间。 5、设单片机振荡频率为6MHz,试精确计算下列延时子程序的延时时间。 DEL: MOV R7, #0FAH DEL1: MOV R6, #0F8H NOP DEL2: DJNZ R6, DEL2 DJNZ R7, DEL1 6、设单片机振荡频率为12MHz,试估算下列延时子程序的延时时间。 MOV R5, #20 K1: MOV R6, #250 K2: DJNZ R6, K2 DJNZ R5, K1

一个单片机项目开发流程与注意事项

一个单片机项目开发流程与注意事项 一、项目评估: 出初步技术开发方案,据此出预算,包括可能的开发成本、样机成本、开发耗时、样机制造耗时、利润空间等,然后根据开发项目的性质和细节评估风险,以决定项目是否落实资金上马。 二、项目实施: 1、设计电原理图: 在做这一步时要考虑单片机的资源分配和将来的软件框架、制定好各种通讯协议,尽量避免出现当板子做好后,即使把软件优化到极限仍不能满足项目要求的情况,还要计算各元件的参数、各芯片间的时序配合,有时候还需要考虑外壳结构、元件供货、生产成本等因素,还可能需要做必要的试验以验证一些具体的实现方法。设计中每一步骤出现的失误都会在下一步骤引起连锁反应,所以对一些没有把握的技术难点应尽量去核实。 2、设计印刷电路板(PCB)图: 完成电原理图设计后,根据技术方案的需要设计PCB图,这一步需要考虑机械结构、装配过程、外壳尺寸细节、所有要用到的元器件的精确三维尺寸、不同制版厂的加工精度、散热、电磁兼容性等等,为最终完成这一步常常需要几十次回头修改电原理图。 3、把PCB图发往制版厂做板: 将加工要求尽可能详细的写下来与PCB图文件一起发电邮给工厂,并保持沟通,及时解决加工中出现的一些相关问题。 4、定购开发系统和元件: 要考虑到开发过程中的可能的损耗,供货厂商的最小订货量、商业信誉、价格、服务等,具体工作包括整理购货清单、联系各供货厂商、比较技术参数、下定单、跑银行汇款、传真汇款底单、催货等等。 5、装配样机: PCB板拿到后开始样机装配,设计中的错漏会在装配过程开始显现,尽量去补救。 6、样机调试: 样机初步装好就可以开始调试,当然需要有软件才能调,有人说单片机的软件不是编出来而是调出来的,所以这个过程需要用到电烙铁、刻刀、不同参数的元件、各种调试和仿真软件、样机的模拟工作环境等。常常会因为设计阶段的疏忽而不得不对样机动手术,等整个调试终于完成之后,往往样机的板子已经面目全非。 7、整理数据: 到了这一步,项目开发的大部分工作都已经完成了,这时候需要将样机研发过程中得到的重要数据记录保存下来,比如更新电原理图里的元件参数、PCB元件库

AT89C51单片机开发板程序

AT89C51 单片机开发板程序 1个LED数码管静态显示<0-9) include #define uchar unsigned char #define uint unsigned int uchar i 。 uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} 。 void delay(uint z> 。 void main(> { while(1> { for(i=0。i<10。i++> { P2=0xfe。 P0=a[i] 。 delay(1000> 。 } } } void delay(uint z> { uint x,y 。 for(x=z 。x>0。x--> for(y=122 。y>0 。y--> 。 } LED 数码管显示<0-99) #include unsigned char count,num。 unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} 。void main(> { P2=0xfe。 IE=0x82。 TMOD=0x01 。 TCON=0x30 。 while(1> 。 } void TOINT(> interrupt 1 { TH0=0xd8 。TL0=0xf0 。 if(P2&1>P1=table[num/10] 。else P1=table[num%10] 。 P2A=3o if(++count<100>return 。 count=0。if(++num>99>num=0 。 } 定时控制一只闪亮的灯#include #define uchar unsigned char #define uint unsigned int uint n 。 sbit led=P0A0。 void main (>

实验1、实验2熟悉软件开发环境及51单片机编程(学生版)

实验一、熟悉软件开发环境及51单片机资源认识 ——I/O口的应用与编程 计算机的应用是一个系统,这个系统应由两部分组成――硬件和软件。硬件是指具体的元器件、电路等,软件则是指程序和数据。如果説硬件是计算机应用系统的基础的话,那么软件则是计算机应用系统的灵魂。计算机原理告诉我们程序和数据是被“装载”在计算机存储器中的,从某种意义上讲,认识一个计算机的存储器系统是开发软件所必须的。 为了全面认识51系列单片机的存储空间,实验一与实验二列出四个实训单元。在进行完四个实训单元后,要求学生应全面了解51系列单片机的程序存储器(ROM)、片内随机存储器(片内RAM)和片外随机存储器(片外RAM)空间的范围、用途和使用方法等。 1.1认识51系列单片机的程序存储器(ROM) 第一部分教学要求 一、实验目的: 1.认识51系列单片机的程序存储器(ROM)的空间范围; 2.认识汇编指令编码在ROM中存储形式; 3.掌握指令编码和指令编码所在地址的概念; 4.了解51系列单片机的程序存储器(ROM)固定地址的用途。 二、实训平台 1.PC机,台/人; 2.伟福V 3.2版仿真软件或其它51系列单片机仿真软件 三、实验报告内容: (注:成绩评定等级:优、良、中、及格、不及格) 第二部分教学内容 一、预备知识 1.ROM存储器 ROM(Read Only Memory)即只读存储器之意,其特点是在计算机正常运行的情况下CPU对ROM存储器只能进行读操作且断电后信息不会丢失,通常用来存储固定不变的程序和数据,如引导程序、基本输入输出系统程序等。ROM按其性能可分为以下几类: (1)掩模工艺ROM 它是由芯片制造厂根据ROM要求存储的信息,制造成固定的半导体掩模版生产的。一旦制出成品后,其存储的信息只能读出,不能改变。这种ROM适用于存储固定不变的程序和数据,批量生产时,成本较低。 (2)可一次编程PROM 允许用户对ROM进行一次编程。 (3)可擦除的EPROM 允许用户对ROM进行多次编程,即可擦除。按擦除的方法不同,可分为紫外线擦除的可

单片机开发过程

第11章MCS-51单片机的开发过程 单片机本身只是一个微控制器,内部无任何程序,只有当它和其它器件、设备有机地组合在一起,并配置适当的工作程序后,才能构成一个单片机应用系统,完成规定的操作,具有特定的功能。单片机本身不具备自主开发能力。必须借助开发工具编制、调试、下载程序或对器件编程。开发工具的优劣,直接影响开发工作效率。本章介绍MCS-51单片机的常用开发工具和开发过程。 11.1 开发工具 一个单片机应用系统从提出任务到正式投入运行的过程称为单片机的开发过程,开发所用的设备就称为开发工具。 单片机的开发工具分软件工具和硬件工具。 软件工具包括编译程序,软件仿真器等。编译程序将用户编写的汇编语言、PL/M语言、C语言或其他语言源程序翻译成单片机可执行的机器码。软件仿真器提供虚拟的单片机运行环境,在通用计算机上模拟单片机的程序运行过程;软件仿真器具有单步、连续、断点运行等功能,在单片机程序的运行过程中随时观测单片机的运行状态,如内部RAM某单元的值,特殊功能寄存器的值等。但软件仿真只能验证程序的执行过程。 硬件工具主要有在线仿真器,编程器等。 在线仿真器是单片机开发系统中的一个主要部分。单片机在线仿真器本身就是一个单片机系统,它具有与所要开发的单片机应用系统相同的单片机型号。所谓仿真,就是用在线仿真器中的具有“透明性”和“可控性”的单片机来代替应用系统中的单片机工作,通过开发系统控制这个“透明的”,“可控性”的单片机的运行,即用开发系统的资源来仿真应用系统。这是软件和硬件一起综合排除故障的一种先进开发手段。所谓在线,就是仿真器中单片机运行和控制的硬件环境与应用系统单片机实际环境完全一致。在线仿真的方法,就是使单片机应用系统在实际运行环境中,实际外围设备情况下。用开发系统仿真,调试。 在线仿真器除了“出借”自己的单片机资源外,还可以“出借”存储器。在应用系统调试期间,其程序存储器芯片也可以拔掉,在线仿真器把自己的一部分存储器替换成应用系统的存储器,用于存故待调试的应用程序。用在线仿真器中的这部分存储器仿佛在使用自己设计的应用系统中的程序存储器一样。 在选择仿真器时要重点考虑以下几点: 1.系统是否具支持高级语言(PL/M,C)等。 2.是否过多地占用单片机的硬件资源。 3.实时性好坏。如仿真调试速度、最高工作频率等。 4.是否具有其他先进功能。如硬件测试、逻辑仪。 5.通用性好坏。 6.是否能对器件编程。 编程器的作用是将程序代码写入芯片。在使用仿真器将用户程序调试完毕后,需要使用编程器将调试好的程序写入单片机芯片中,撤掉仿真系统将写好程序的CPU插入系统独立运行。 11.2 单片机应用系统的一般形式 单片机主要用于实时控制,因此具有一般计算机控制系统的普遍特征。其典型应用系统应包括单片机系统、用于测控目的前向传感器输入通道,后向伺服控制输出通道以及基本的人机对话通道。大型复杂的测控系统是一个多机系统,还包括机与机之间进行通信的互相通道。 图11.1是一个典型单片机应用系统的结构框图。 1.前向通道的组成及其特点 前向通道是单片机与测控对象相连的部分,是应用系统的数据采集的输入通道。

单片机各种开发小程序

LJMP $ END 五、思考题 如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请用户修改程序,完成此操作。

实验二二进制与BCD码转换 一、实验目的 1.掌握简单的数值转换算法 2.基本了解数值的各种表达方法 二、实验说明 单片机中的数值有各种表达方式,这是单片机的基础。掌握各种数制之间的转换是一种基本功。我们将给定的一字节二进制数,转换成二十进制(BCD)码。将累加器A的值拆为三个BCD 码,并存入RESULT开始的三个单元,例程A赋值#123。 三、实验内容及步骤 1.启动PC机,打开KEIL软件,软件设置为模拟调试状态。在所建的Project文件中添加TH 2.ASM源程序进行编译,编译无误后,全速运行程序,打开View菜单中的Memory Window,在Address窗口输入D:30H后回车,点击运行按钮,观察地址30H、31H、32H的数据变化,30H内容将更新为01,31H更新为02,32H更新为03。修改源程序中给累加器A的赋值,重复实验,观察实验效果。 2.打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及源程序(见光盘中的程序文件夹) 1.源程序 RESULT EQU 30H ORG 0000H LJMP START BINTOBCD: MOV B,#100 DIV AB MOV RESULT,A ;除以100得百位数 MOV A,B MOV B,#10 DIV AB MOV RESULT+1,A ;余数除以10得十位数 MOV RESULT+2,B ;余数为个位数 RET START: MOV SP,#40H MOV A,#123 CALL BINTOBCD LJMP $ END 2.流程图

单片机应用系统设计开发主要步骤

单片机应用系统设计开发主要步骤 单片机应用系统的研究开发步骤,大致分为几个部分: 1.策划阶段: 策划阶段决定研发方向,是整个研发流程中的重中之重,所谓“失之毫厘谬以千里”。因此必须“运筹帷幄,谋定而动”。策划有两大内涵:做什么?怎么做? 1)项目需求分析。解决“做什么?”“做到什么程度?”问题。 对项目进行功能描述,要能够满足用户使用要求。对项目设定性能指标,要能够满足可测性要求。所有的需求分析结果应该落实到文字记录上。 2)总体设计,又叫概要设计、模块设计、层次设计,都是一个意思。解决“怎么做?”“如何克服关键难题?”问题。 以对项目需求分析为依据,提出解决方案的设想,摸清关键技术及其难度, 明确技术主攻问题。 针对主攻问题开展调研工作, 查找中外有关资料, 确定初步方案,包括模块功能、信息流向、输入输出的描述说明。在这一步,仿真是进行方案选择时有力的决策支持工具。 3)在总体设计中还要划分硬件和软件的设计内容。单片机应用开发技术是软硬件结合的技术, 方案设计要权衡任务的软硬件分工。硬件设计会影响到软件程序结构。如果系统中增加某个硬件接口芯片, 而给系统程序的模块化带来了可能和方便, 那么这个硬件开销是值得的。在无碍大局的情况下, 以软件代替硬件正是计算机技术的长处。 4)进行总体设计时要注意,尽量采纳可借鉴的成熟技术, 减少重复性劳动,同时还能增加可靠性,对设计进度也更具可预测性。 2. 实施阶段之硬件设计 策划好了之后就该落实阶段,有硬件也有软件。随着单片机嵌入式系统设计技术的飞速发展,元器件集成功能越来越强大,设计工作重心也越来越向软件设计方面转移。硬件设计的特点是设计任务前重后轻。 单片机应用系统的设计可划分为两部分: 一部分是与单片机直接接口的电路芯片相关数字电路的设计,如存储器和并行接口的扩展, 定时系统、中断系统扩展, 一般的外部设备的接口, 甚至于A/D、 D/A芯片的接口。另一部分是与模拟电路相关的电路设计, 包括信号整形、变换、隔离和选用传感器,输出通道中的隔离和驱动以及执行元件的选用。 工作内容: 1)模块分解。策划阶段给出的方案只是个概念方案,在这一步要把它转化为电子产品设计的概念描述的模块,并且要一层层分解下去,直到熟悉的典型电路。尽可能选用符合单片机用法的典型电路。当系统扩展的各类接口芯片较多时, 要充分考虑到总线驱动能力。当负载超过允许范围时, 为了保证系统可靠工作, 必须加总线驱动器。 2)选择元器件。尽可能采用新技术, 选用新的元件及芯片。 3)设计电原理图及说明。 4)设计PCB及说明。 5)设计分级调试、测试方法。 设计中要注意: 1)抗干扰设计是硬件设计的重要内容, 如看门狗电路、去耦滤波、通道隔离、合理的印制板布线等。 2)所有设计工作都要落实到文字记录上。

51单片机开发板实例程序

51单片机实验开发板实验程序1.P1口第一个二极管亮 #include void main() { P1=0xfd; } 2. P1口第一个二极管闪烁 #include #define unit unsigned int #define uchar unsigned char sbit led1=P1^0; void delay(); void main() { while(1) { led1=0; delay(); led1=1; delay(); } } void delay() { unit x,y; for(x=100;x>0;x--) for(y=2000;y>0;y--); } 3.1602液晶显示器移屏显示字符 #include #define uchar unsigned char #define uint unsigned int uchar code table[]="I LIKE MCU!"; uchar code table1[]="https://www.doczj.com/doc/734498341.html,"; sbit lcden=P3^4; sbit lcdrs=P3^5; sbit dula=P2^6; sbit wela=P2^7;

uchar num; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() { dula=0; wela=0; lcden=0; write_com(0x38); //设置16x2显示。5x7点阵,8位数据接口write_com(0x0e); //显示设置光标不显示 write_com(0x06); //光标移动,地址指针加一 write_com(0x01); //显示清屏 //write_com(0x80+0x10); } void main() { init(); write_com(0x80+0x10); //显示第一行的位置 for(num=0;num<11;num++) //显示第一行,有11个字符{ write_data(table[num]); delay(20); }

相关主题
文本预览
相关文档 最新文档