很久以前玩过的东西了,传上来做个小结。
温度采集用Dallas的18B20,单片机用C8051F330,STN屏的驱动芯片用Novatek的NT7534,屏的尺寸为128X64。单片机采集温度量后在STN屏上实时显示,同时利用单片机内部自带的10b Current DAC,将温度量转化为线性的模拟电压量输出,可以将此电压放大来控制外部加热部件以实现恒温控制。
调试过程中需要注意的问题:
1 18B20的数据线要上拉,并设置为Open Drain Mode
2 每次访问18B20都必须遵循:初始化,读ID, 发命令字三个步骤
3 1-Wire 协议的时序比较严格,特别是Master 对slave的读写时序,所有初始化和读写操作都是有Master发起的,Master 发出读写时隙Slot,Slave必须在规定的Slot时间段内采样数据线获得数据,或者保持或拉低总线以写入数据.
4 NT7534的驱动,配置STN屏:
一般有如下步骤:配置bias方式,扫描方式,配置内部Regulator,功耗控制,显示使能
lcd_setting(bias); // set the 1/9 bias voltage
lcd_setting(ADC_NOM);
lcd_setting(SCAN_NOM); // set the scan direction
lcd_setting(ratio); // set the ratio (1+Ra/Rb)=5;
lcd_setting(mode_enable); // enable V0 setting
lcd_setting(coffient); // set the a="53";
lcd_setting(pwr_control); // open all power source
lcd_setting(display_on);
NT7534是3.3V接口的芯片,如果要用5V的单片机来驱动STN屏,需要电平转换.
流程图:
Timer0 定时中断,启动温度转换,转换结束后换算为模拟电压量,LCD显示温度,单片机
返回休眠模式.
上传原理图和代码包
文章评论(0条评论)
登录后参与讨论