sqlite 0转换为bit_DA转换实例

b4a1e55a7600c0208a44296f00534a59.gif

c3368d14ec2fca82571287b2208ff432.png

用到的是TLC5615C

#include#include#define uchar unsigned char#define uint unsigned int uchar ge,shi,bai;uchar tt;uchar code tb[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uchar code bit_ser[]={0xff,0xdf,0xef,0xf7};   sbit  DA = P1^5;sbit CLK = P1^1;sbit  CS = P1^6;void timer0_init()                   //T0的初始化函数{  TMOD =0x01;  TL0=(65536-50000)%256;  TH0=(65536-50000)/256;  TR0=1;  ET0=1;  EA=1;}void timer0_isr() interrupt 1             //T0的中断处理函数,用于显示输出的电压值{  TR0=0;  TL0=(65536-5000)%256;  TH0=(65536-5000)/256;  TR0=1;  tt++;  if(tt==4)  tt=1;  P0 = 0xff;  P2 = bit_ser[tt];  switch(tt)  {    case 1 : P0=tb[ge];break;    case 2 : P0=tb[shi];break;    case 3 : P0=tb[bai]&0x7f;break;    default : break;    }}void TLC5615(uint dat)   //由于TLC5615是十位转换,所以在这里要定义一个两字节的变量{   uchar i;   dat<<=6;             //两个字节有十六位,去掉高六位剩下十位有效位   CLK=0;   CS=0;                //初始化   for(i=0;i<12;i++)  //根据PDF文档可知,要送的只有十位数但是后面要跟着多加两位零才能将一个数据送出去   {      DA=(bit)(dat&0x8000); //当dat与0x8000相与然后强制转换后有一位,这时只就只可以直接送给DA端进行发送      CLK=1;     //前面一句亦可用DA=CY来代替,但后面的顺序要调换才行      dat<<=1;      CLK=0;   }   CS=1;   CLK=0;       }void main(){  uint a;  uint A_MONI=500;  timer0_init();  while(1)  {    TLC5615(A_MONI);//最大1023    a=A_MONI*0.464;//450除以1024,基准电压是2.25V,输出的最大电压是2.25*2,将4.5V分成1024等份,所有输出的电压就是A_MONI*450/1024    ge=a%10;     //获取输出电压各位的值    shi=a/10%10;    bai=a/100;      }}

3ac303f374cebff14213d876365526e3.png

a935adb68c5f59c986a6fe95c906ee02.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值