① 单片机查表程序编写 急!
org 0000h
mov 30h, #1
mov 31h, #3
mov 32h, #5
mov 33h, #7
mov 34h, #9
mov 35h, #2
mov 36h, #4
mov 37h, #6
mov 38h, #8
mov 39h, #10
call SQRT
sjmp $
;查表法求平方的程序如下。
SQRT:
MOV R0, #30H
MOV R1, #40H
MOV R2, #10
LOOP:
MOV A, @R0
ADD A, #S_TAB - ($ + 4)
MOVC A, @A + PC
MOV @R1, A
INC R0
INC R1
DJNZ R2, LOOP
RET
S_TAB:
DB 1, 4, 9, 16, 25, 36, 49, 64, 81, 100
;完
② 单片机原理与应用 设计初始地址为DATA的数据表格,表中按顺序放有100个元素值,每个元素为单字
MOVDPTR,#DATA
MOVA,R4
MOVCA,@A+DPTR
END
③ 51单片机数据表(shujubiao:db ……)后面的数据最多能访问多少字节
因为使用movc a,@a+dptr时,ACC的表示的范围是8位的(00~255),所以在DPTR不变时只能访问256字节的空间。
你可以这样:定义数据块,每块都是256字节,这样在访问不同的区块时就让DPTR装载不同的基地址,这样就扩大了访问的范围。
还有一个最简单的办法,每次查表时把ACC的值固定为0,而是让DPTR移动变化,这样DPTR就能访问64K的空间了,就像下面一样:
MOV A,#00H
MOVC A,@A+DPTR
INC DPTR
④ 单片机数据表的调用方法
建立一个数组,直接取数组值就好了
⑤ 单片机输出正弦波,那个数据表的数据是怎样计算得到的有具体的计算过程最好!
直接用三角函数计算
如周期20 ms,半个周期10 ms ,将半个周期分成100个时间段,则每个时间段为100us
半个周期 相当于180度 那么每个时间段对应的角度 180/100=1.8 度
那么在任意时刻对应的角度1.8*n
直接sin(1.8*n)即可得出某个时刻的三角函数 值
将这个数值再乘以DA的最大数字量,8位是256,10位是1024
即可得到单片机要送往DA转换器的数字量
⑥ 怎样在单片机内部建立数据库
这不是数据库好不好,这叫表。
你可以通过线性插值的方式解决。
double powV[Level];
double powPercent[Level];
通过电压去百分百:
double getPercent(double vol)
{
for(int i=0;i<Level;i++)
if( vol <powV[i]){
...........
}
}
⑦ 单片机中数据表格在存储器哪一个地方
单片机中数据表格存于程序存储器(ROM)中,不要浪费宝贵的内存(RAM)。
⑧ 用51单片机产生正弦波,那个数据表怎么得到的谢谢!
这个表是预先算好的,就是将标准正弦波上移1/2幅值后模256。
三角波和锯齿波也可以按相同方法计算得到对应的数值表。
对一个周期取样256次,也就是说第0个取样点的弧度是0,第一个取样点的弧度值就是pi/128,第二个取样点的弧度为(pi/128)*2,依次类推。测峰峰值为256,所以f(x) = sin(x)*128+128,x就是上文中提到的取样点的弧度。
假设是8位的转换精度,那么2的8次方最大也就是256个级别,现在的表峰峰值就是256,已经够了,表精度再高也是白搭,如果DAC是11位的,那么表的精度可以再提高8倍,相对应的表的大小也大了8倍,在某些ROM有限的系统中就不适用了,所以要在精度与大小之间做个取舍。
(8)单片机数据表扩展阅读:
可以设一个函数为 y=sin X,当 X 分别取 0、30、60、90、120、150、180 时(单位:度),Y对应的数值分别为 0、0.5、0.8660、1、0.8660、0.5、0。在坐标系中画出对应的点就可以得出正弦波的图像了。
该图像有一个特点,就是周期性变化,例如 X = 0 时,Y = 0,X = 180 时, Y = 0;若 X 取值【180~360】,则可以看到,图像正好与原来的相反(在第四象限)。这就是正弦波的图像了。
⑨ 单片机中,建立数据表,是否必须用table[ ],可不可以用其他的字符代替table
AD的最大值对应屏幕的每一列的最高点,0对应最低点,这样建立一个数据表,每取得一个值就在表中查找相应的点的位置,然后在该点打印,再取一个AD值,查表,取点,在下一列打印,直到128列,重新回到1列继续打印。
⑩ 单片机与数据库能进行数据查询吗
描述不是很清楚,数据库是存储在哪的?具体实现就不容易说了。
查询肯定是可以的,ECU的核心也是单片机,如果数据库存储在ROM或RAM中的就按数据库存储的地址去读就行了。